单片机实验程序

上传人:大米 文档编号:458969290 上传时间:2023-10-04 格式:DOCX 页数:13 大小:23.26KB
返回 下载 相关 举报
单片机实验程序_第1页
第1页 / 共13页
单片机实验程序_第2页
第2页 / 共13页
单片机实验程序_第3页
第3页 / 共13页
单片机实验程序_第4页
第4页 / 共13页
单片机实验程序_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《单片机实验程序》由会员分享,可在线阅读,更多相关《单片机实验程序(13页珍藏版)》请在金锄头文库上搜索。

1、1 修改例程一的源程序( 1)将 A 寄存器的初值改为80H (正逻辑,数据位为1 表示发光二极管点亮) ,再对源程序进行简单修改,使程序运行后发光二极管情况与修改前相同。( 2)将LED 向左循环移位点亮改为向右循环移位点亮( 3)加快 LED 循环移位点亮的速度$include (C8051F020.inc);C8051F02x 系列单片机信息头文件包含伪指令INIT: LCALL Init_Device 调用初始设置子程序赋初始值并在发光二极管上显示该数值;1) MOV A,#080H( CPLAMOV P3,ALOOP: CALLDELAYCALLDELAYCALL DELAYCALL

2、 DELAYCALL DELAYCALL DELAYCALLDELAY( 2 ) RL A ;A 寄存器内容右移1 位并送 1 发光二极管显示MOVP3,AAJMPLOOP ; 无限循环DELAY:MOV R5,#0H ; 延时子程序D1: MOV R6,#00HDJNZ R6,$DJNZ R5,D1RET$include (Init_Device.inc); 初始设置子程序文件包含伪指令END3 )可删除几个CALL DELAY 语句即可加快循环速度2 将例程二0 F 的循环显示改为 0 9 的循环显示$include (C8051F020.inc);C8051F02x 系列单片机信息头文件

3、包含伪指令0000H ORGINITLJMPTAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H ; 字符段码表0-7DB 080H,090H;字符段码表8-Flcall INIT: Init_Device ; 调用初始设置子程序MOV INIT1: R1,#00H;操作数据初始值A,R1 MOVMOVCA 中数值对应的显示段码MOV DPTR,#TAB MAIN:;读取与 A,A+DPTR显示 MOV P5,A ;段码送并行口 1DELAY CALLDELAY CALLDELAY CALLDELAY CALLDELAY CALLDELAY CALLD

4、ELAY CALLDELAYCALLDELAYCALLDELAY CALLDELAY CALLDELAY CALLDELAY CALLDELAYCALL1 增 R1;操作数据(R1) INCA,R1 MOV) FA,#0AH,MAIN ;检查操作数据是否大于显示范围( CJNE; 无限循环SJMP INIT1;DELAY:延时子程序R5,#0H MOVR6,#0H MOVD1:R6,$ DJNZR5,D1 DJNZRET$include (Init_Device.inc) ; 初始设置子程序文件包含伪指令END1. 例程 5 程序修改 1) 将 KEY2 、 KEY4 的功能对调 2) 2)每

5、次停下再启动以后,更改发光二极管点亮的循环方向$include(C8051F020.inc);C8051F02x 系列单片机信息头文件包含伪指令ORG 0000HLJMP INITIAL;主程序入口ORG 0003HLJMP STOP ;外中断 0 服务程序入口 ,开始键( STAR )ORG 0013HLJMP STAR;外中断1 服务程序入口 停止键(STOP)ORG 0100HINITIAL: LCALL Init_Device;调用初始设置子程序MOVP3,#0FFH;熄灭全部发光二极管MOV A,#0FFHMOVDPTR,#7F80HMOVXDPTR,A;清除数码管2( NUM2 )

6、显示MOV A,#0FEH ;点亮发光二极管的初始数据MOV R1,#1H;发光二极管点亮位置初值MOVR4,#0FHMOV IP,#04H;设置INTO (开始键STAR)为高优先级MOV TCON,#05H;外中断采用边沿触发SETB EX0 ;INT1 (停止键 STOP )开中断SETB EA;开放中断LOOP:CLREA ; 关闭中断CJNE R4, #0FH, LPRLACJNE R4,#0FH,LPMOV P3,ACJNE R4,#0FH,LPINC R1CJNER4,#0FH,LPEASETBLCALLDELAY1LCALLDELAY1LCALLDELAY1LCALLDELAY

7、1CJNER1,#8H,LOOPMOVR1,#0HSJMPLOOPLP:CLREACJNER4,#0F0H,LOOPRRACJNER4,#0F0H,LOOPMOVP3,ACJNER4,#0F0H,LOOPDECR1CJNER4,#0F0H,LOOPSETBEALCALLDELAY1LCALLDELAY1LCALLDELAY1LCALLDELAY1CJNER1,#0H,LPMOVR1,#8HSJMPLP;停止键的中断服务程序STOP:PUSH ACC ;保护 A 寄存器内容MOV A,R1;读取发光二极管点亮位置计数值MOV DPTR,#TABMOVC A,A+DPTR ; 获取发光二极管点亮位

8、置计数值的显示段码MOV DPTR,#7F80HMOVX DPTR,A;发光二极管点亮位置计数值的显示数据送显示SETB EX1 ;INT0 (启动键 STAR )开中断JNZ $;等待重新启动条件-A=0MOV A,#0FFHMOVX DPTR,A;清除数码管2( NUM2 )显示CLR EX1;禁止INT0 中断(避免程序误动作)POP ACC ;恢复 A 寄存器内容CLR IE1;清除INT1 (停止键STOP)中断标志(避免程序误动作)RETI ;中断返回;启动键的中断服务程序-A=0 设置启动条件; A,#00HMOVSTAR:CLRIE0 ;清除INTO (启动键STOP)中断标志

9、(避免程序误动作)PUSHACCMOVA,R4CPL AMOVR4,APOPACCRETI ; 中断返回TAB:DB 0C0H,0F9H,0A4H,0B0H,099H;0-4 段码DB 092H,082H,0F8H,080H;5-8 段码DELAY1: MOV R6,#0;延时子程序D1:MOV R7,#0DJNZR7,$DJNZR6,D1RET$include (Init_Device.inc);初始设置子程序文件包含伪指令END2.修改例程6,将计数范围由0-F扩展至00-FF (使用定时器/计时器0) ,并在2 位数码管上用 10进制数显示计数结果(00-99)$include(C805

10、1F020.inc);C8051F02x 系列单片机信息头文件包含伪指令DP2EQU07F80HDP_LEQU30H; 低位数值暂存器DP_HEQU31H; 高位数值暂存器MAIN:LCALLInit_Device ;调用初始设置子程序MOVTMOD,#00000101B;C/T0 工作于方式2MOVA,#0;显示初值为 0MOVDP_L,AMOVDP_H,ACALLDISPLAY;调用显示子程序显示初值00置初值;C/T0TL0,#0MOVSETBTR0;启动计数器0LOOP:MOVA,TL0;读计数器0 的计数值CJNEA,#0AH,L1MOVTL0,#0MOVA,#0INCDP_HMOV

11、A,DP_HCJNEA,#0AH,MMMOVDP_H,#0MM:MOVA,#0L1:MOVDP_L,A;在 NUM2显示计数器 0 的计数值CALLDISPLAY;调用显示子程序显示计数值SJMPLOOP;无限次循环;显示子程序DISPLAY:MOVA,DP_L;读低位显示值CALLDECODE; 调用换码子程序MOVDPTR,#DP2;显示段码送NUM2MOVXDPTR,AMOVA,DP_H;读高位显示值CALLDECODE; 调用换码子程序MOVP5,ARET;换码子程序DECODE:MOVDPTR,#TABMOVCA,A+DPTRRETTAB:DB0C0H,0F9H,0A4H,0B0H,

12、099H,092H,082H,0F8H ; 显示段码0-7DB080H,090H,088H,083H,0C6H,0A1H,086H,08EH ; 显示段码8-F$include (Init_Device.inc);初始设置子程序文件包含伪指令END通过对例程8 的程序进行修改和上机调试,改变源程序的1)将发送 1、 2、 3、 4 的 ASCII 码改为发送A、 B、 C、功能D 的 ASCII2)将接收的第 2、第 3 字节数据的显示位置交换$includeNUM2(C8051F020.inc)EQU 07F80H;C8051F02x 系列单片机信息头文件包含伪指令NUM3EQU 07F90

13、H;NUM2;NUM3地址地址NUM4EQU 07FA0HNUM5EQU 07FB0HTIM_LEQU 0FDH;NUM4;NUM5;T/C1地址 地址 低字节计数值TIM_HEQU 0FDH;T/C1 高字节计数值REC_BUF0 EQU 32HREC_BUF1 EQU 34HREC_BUF2 EQU 33HFLAG BIT01H; 数据接收缓冲器; 数据接收缓冲器; 数据接收缓冲器;数据发送完成标志ORG0000HLJMPMAIN; 转主程序ORG0023HLJMPRECE;转串行通信中断程序MAIN:;主程序lcall InitDevice ;C8051F02x系列单片机信息头文件包含伪指令MOV A,#0FFHMOV P5,AMOV DPTR,#NUM2MOVX DPTR,A MOV DPTR,#NUM3 MOVX DPTR,A MOV DPTR,#NUM4 MOVX DPTR,AMOV DPTR,#NUM5 MOVX DPTR,A; 清除数码管; 清除数码管; 清除数码管; 清除数码管NUM1NUM2NUM3NUM4的显示的显示的显示的显示MOV R6,#0;通信操作状态寄存器清除

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 工业自动化

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号