单片机实验程序(共10页).doc
《单片机实验程序(共10页).doc》由会员分享,可在线阅读,更多相关《单片机实验程序(共10页).doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上一 1修改例程一的源程序(1)将A寄存器的初值改为80H(正逻辑,数据位为1表示发光二极管点亮),再对源程序进行简单修改,使程序运行后发光二极管情况与修改前相同。(2)将LED向左循环移位点亮改为向右循环移位点亮(3)加快LED循环移位点亮的速度$include (C8051F020.inc);C8051F02x系列单片机信息头文件包含伪指令INIT:LCALL Init_Device调用初始设置子程序 (1)MOV A,#080H ;赋初始值并在发光二极管上显示该数值CPL AMOV P3,ALOOP:CALL DELAYCALL DELAYCALL DELAYCA
2、LL DELAYCALL DELAYCALL DELAYCALL DELAY(2)RL A;A寄存器内容右移1位并送1发光二极管显示MOV P3,AAJMP LOOP;无限循环DELAY: MOVR5,#0H;延时子程序D1:MOVR6,#00HDJNZR6,$DJNZR5,D1RET$include (Init_Device.inc);初始设置子程序文件包含伪指令 END(3)可删除几个 CALL DELAY语句即可加快循环速度2将例程二0F的循环显示改为09的循环显示$include (C8051F020.inc);C8051F02x系列单片机信息头文件包含伪指令 ORG 0000H LJ
3、MP INITTAB:DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H;字符段码表0-7DB080H,090H;字符段码表8-FINIT:lcall Init_Device;调用初始设置子程序INIT1: MOV R1,#00H;操作数据初始值 MOV A,R1MAIN: MOV DPTR,#TAB;读取与A中数值对应的显示段码MOVC A,A+DPTRMOV P5,A;段码送并行口1显示CALL DELAYCALL DELAYCALL DELAYCALL DELAYCALL DELAYCALL DELAYCALL DELAYCALL DELAYCALL DE
4、LAYCALL DELAYCALL DELAYCALL DELAYCALL DELAYCALL DELAYINC R1 ;操作数据(R1)增1MOV A,R1CJNE A,#0AH,MAIN;检查操作数据是否大于显示范围(F)SJMP INIT1;无限循环DELAY: MOVR5,#0H ;延时子程序D1:MOVR6,#0HDJNZR6,$DJNZR5,D1RET$include (Init_Device.inc);初始设置子程序文件包含伪指令END二1. 例程5程序修改(1) 将KEY2、KEY4的功能对调(2) 每次停下再启动以后,更改发光二极管点亮的循环方向$include (C8051
5、F020.inc) ;C8051F02x系列单片机信息头文件包含伪指令 ORG0000H LJMPINITIAL ;主程序入口 ORG0003H LJMPSTOP ;外中断0服务程序入口,开始键(STAR) ORG0013H LJMP STAR ;外中断1服务程序入口 停止键(STOP) ORG0100HINITIAL:LCALL Init_Device ;调用初始设置子程序MOV P3,#0FFH ;熄灭全部发光二极管MOV A,#0FFHMOV DPTR,#7F80HMOVX DPTR,A ;清除数码管2(NUM2)显示MOV A,#0FEH ;点亮发光二极管的初始数据MOV R1,#1H
6、 ;发光二极管点亮位置初值MOV R4,#0FHMOVIP,#04H ;设置INT0(开始键STAR)为高优先级MOVTCON,#05H ;外中断采用边沿触发SETB EX0 ;INT1(停止键STOP)开中断SETB EA ;开放中断LOOP: CLR EA;关闭中断CJNE R4, #0FH, LPRL A CJNE R4,#0FH,LPMOV P3,A CJNE R4,#0FH,LPINC R1 CJNE R4,#0FH,LP SETB EALCALL DELAY1LCALL DELAY1LCALL DELAY1LCALL DELAY1CJNE R1,#8H,LOOPMOV R1,#0H
7、SJMP LOOPLP: CLR EA CJNE R4,#0F0H,LOOPRR A CJNE R4,#0F0H,LOOP MOV P3,ACJNE R4,#0F0H,LOOPDEC R1CJNE R4,#0F0H,LOOPSETB EALCALL DELAY1LCALL DELAY1LCALL DELAY1LCALL DELAY1CJNE R1,#0H,LPMOV R1,#8HSJMP LP;停止键的中断服务程序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 ;中断返回 ;启动键的中断服务程序STAR: MOV A,#00H;设置启动条件-A=0 CLRIE0;清除INT0(启动键STOP)中断标志(避免程序
9、误动作) PUSH ACC MOV A,R4 CPL A MOV R4,A POP ACC RETI;中断返回TAB: DB0C0H,0F9H,0A4H,0B0H,099H ;0-4段码 DB092H,082H,0F8H,080H ;5-8段码DELAY1: MOVR6,#0;延时子程序D1: MOV R7,#0 DJNZ R7,$ DJNZ R6,D1 RET$include (Init_Device.inc) ;初始设置子程序文件包含伪指令 END2. 修改例程6,将计数范围由0-F扩展至00-FF(使用定时器/计时器0),并在2位数码管上用10进制数显示计数结果(00-99)$inclu
10、de (C8051F020.inc);C8051F02x系列单片机信息头文件包含伪指令DP2 EQU 07F80H DP_L EQU 30H ;低位数值暂存器DP_H EQU 31H ;高位数值暂存器 MAIN: LCALL Init_Device;调用初始设置子程序 MOV TMOD,#B ;C/T0工作于方式2 MOV A,#0 ;显示初值为0 MOV DP_L,A MOV DP_H,A CALL DISPLAY ;调用显示子程序显示初值0 MOV TL0,#0 ;C/T0置初值0 SETB TR0 ;启动计数器0 LOOP: MOV A,TL0 ;读计数器0的计数值 CJNE A,#0A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 程序 10
限制150内