1、实验报告2实验报告 PIC单片机原理、开发方法及实践 云南大学滇池学院 理工学院 电子信息工程系 陈一凡 20112121006PIC的实验程序 基于MAPLAB的程序设计一实验目的简述: 学会用汇编语言控制单片机完成预定的算法,实现对内部各模块的功能,掌握好其指令系统,实现对内部弄块的控制和I/O操作。基于MPLAB IDE,对PIC系列单片机进行源程序文档的创建、编辑和汇编,以至实现目标程序的模拟运行。二实验要求:1.一个16位加法程序,实现X+Y,结果存result;2.将20H单元的高低四位分别转换为ASCII码,存储在LED1和LED2单元;3.将20H单元的8bit二进制数转换为三
2、位BCD码存储在B1,B2,B3单元;三实验原理简述:应用PIC单片机指令集中的绝大部分指令如:数据传送操作、加减法操作、逻辑操作、移位操作等等都是能够在单个指令周期中完成的特定操作,而这些单一的指令就是实现复杂的计算和控制任务的基本。将若干条指令按照一定的规则和要求排列组合在一起,就构成了可以控制的复杂的,能实现一定功能的程序。四实验步骤:1.针对问题一:一个16位加法程序,实现X+Y,结果存result;实验思路:将x,y分别存放在目标寄存器中,对x,y进行加法运算,并注意其进位位。实验程序: LIST P=16F877A INCLUDE P16F877A.INCx EQU 0x20y E
3、QU 0x22z EQU 0x24TEST NOP;空操作 GOTO START;汇编开始 ORG 004h;汇编起始点为004h;START CLRF z;将z清零; CLRF z+1;将z+1清零; CLRF z+2;将z+2清零; MOVLW 0F0H;将立即数0F0H送到w; MOVWF x;将W的内容传送至x; MOVLW 0F0H;将立即数0F0H送到w; MOVWF x+1;将W的内容传送至x+1; MOVLW 11H;将立即数11H送到w; MOVWF y;将W的内容传送至y; MOVLW 11H;将立即数11H送到w; MOVWF y+1;将W的内容传送至y+1; MOVF
4、x,W;将x的内容送到目标寄存器; ADDWF y,W;w和y相加; BTFSC STATUS,C;检测STATUS中的进位位,为0则跳过; INCF z+1,F;z+1递增1; MOVWF z;将W的内容传送至z; MOVF x+1,W;将x+1的内容送到目标寄存器; ADDWF y+1,W;w和y+1相加; BTFSC STATUS,C;检测STATUS中的进位位,为0则跳过; INCF z+2,F;z+2递增1; ADDWF z+1,F;F和Z+1相加 BTFSC STATUS,C;检测STATUS中的进位位,为0则跳过; INCF z+2,F;z+2递增1; END;程序结束;程序分析
5、:见注释五实验操作:1.新建一个工程:project-new-命名工程-保存到工作目录2.编写源文件并保存到工作目录下3.加在原文件到工程中4.程序环境设置(1)选择器件(2)调试环境位设置5.编译工具的选择6.编译源文件实验结果如图所示:程序执行过程:执行第一条程序时:逐条执行程序时:STATUS寄存器中的变量将x和y进行相加运算时的寄存器变量检测标志寄存器时最终执行结果最终实现x和y的相加;2.针对问题二:将20H单元的高低四位分别转换为ASCII码,存储在LED1和LED2单元;实验思路:实验程序: LIST P=16F877A INCLUDE P16F877A.INCled1 EQU
6、0x21led2 EQU 0x22x EQU 0x23y EQU 0x24 TEST NOP;空操作 GOTO START;汇编开始 ORG 004h;汇编起点为004HSTART MOVLW 23H;将立即数23h传送到w; MOVWF 20H;将w的内容传送到20h; MOVLW 20H;将立即数20h传送到w; MOVWF FSR;将w的内容传送到FSR; MOVLW 0FH;将立即数0fh传送到w; MOVWF x;将w的内容传送到X; MOVF INDF,W;将INDF的内容传送到目标寄存器中; ANDWF x,F;w和x做逻辑与运算; MOVLW 30H;将立即数30h传送到w;
7、ADDWF x,W;w和x的内容相加; MOVWF led1;将w的内容传送到LED1; MOVLW 0FH;将w的内容传送到20h; MOVWF x;将w的内容传送到x; MOVF INDF,W;将INDF的内容传送到目标寄存器中; MOVWF y;将w的内容传送到y; RRF y,F;对Y进行带进位的右移; RRF y,F;对Y进行带进位的右移; RRF y,F;对Y进行带进位的右移; RRF y,W;对Y进行带进位的右移; ANDWF x,F;w和x做逻辑与运算; MOVLW 30H;将立即数30h传送到w; ADDWF x,W;w和x的内容相加; MOVWF led2;将w的内容传送到
8、led2; End;程序结束 程序分析:见注释五实验操作:1.新建一个工程:project-new-命名工程-保存到工作目录2.编写源文件并保存到工作目录下3加在原文件到工程中4.程序环境设置(1)选择器件(2)调试环境位设置5.编译工具的选择6.编译源文件实验结果如图所示:实验操作步骤:1.程序执行前目标寄存器变量:3.最终实现高低四位分别转换为ASCII码:4.针对问题三:将20H单元的8bit二进制数转换为三位BCD码存储在B1,B2,B3单元;实验思路:把二进制数减100,减10得到BCD码实验程序: list p=16f877a includeP16f877a.incA EQU 0X
9、20B1 EQU 0X30B2 EQU 0X31B3 EQU 0X32 ORG 0X00 NOP GOTO STARTSTART MOVLW 0E5H;把E5H送给W寄存器 MOVWF A;把W寄存器的值送到A CLRF B1;清空B1 CLRF B2;清空B2 CLRF B3;清空B3BAI MOVLW 64H;把64H(十进制的100)送给W寄存器 SUBWF A,F;把A中的数值减去100还送回A INCF B1;把B1加1 BTFSC STATUS,C;检测STATUS寄存器中的进位位C GOTO BAI;没有借位继续循环 MOVLW 64H ADDWF A,F DECF B1SHI
10、MOVLW 0AH;把0AH(十进制的10)送给W寄存器 SUBWF A,F; 把A中的数值减去10还送回A INCF B2;把B2加1 BTFSC STATUS,C; 检测STATUS寄存器中的进位位C GOTO SHI; 没有借位继续循环 MOVLW 0AH; ADDWF A,F; DECF B2; MOVF A,W;把A中剩下的数送到W寄存器 MOVWF B3;把W寄存器中的数据送到B3 END程序分析:见注释五实验操作:.新建一个工程:project-new-命名工程-保存到工作目录.编写源文件并保存到工作目录下.加在原文件到工程中.程序环境设置()选择器件()调试环境位设置.编译工具的选择.编译源文件.调试实验结果如图所示:1.汇编开始时寄存器变量:2.百位转换完之后3.十位转换完之后4.程序执行的最终结果 最终实现将20H中的数据转换成BCD码分别存储在B1,B2,B3中六实验总结:对单片机的学习要注重实践,操作。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1