下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、INIT:LCALLInit_Device(1)MOVA,#080HCPLAMOVP3,ALOOP:CALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAY(2)RLAMOVP3,AAJMPLOOPDELAY:MOVR5,#0HD1:MOVR6,#00HDJNZR6,$DJNZRETR5,D1$include (Init_Device.inc);END1修改例程一的源程序( 1)将 A 寄存器的初值改为 80H(正逻辑,数据位为 1 表示发光二 极管点亮),再对源程序进行简单修改,使程序运行后发光二极管情 况与修改前相同。(
2、 2)将 LED 向左循环移位点亮改为向右循环移位点亮( 3)加快 LED 循环移位点亮的速度$include (C8051F020.inc);C8051F02x 系列单片机信息头文件包含伪指令调用初始设置子程序;赋初始值并在发光二极管上显示该数值;A 寄存器内容右移 1位并送 1 发光二极管显示;无限循环;延时子程序初始设置子程序文件包含伪指令3)可删除几个CALL DELAY 语句即可加快循环速度2将例程二 0 F的循环显示改为 09 的循环显示$include (C8051F020.inc) ;C8051F02x 系列单片机信息头文件包含伪指令ORGLJMP0000HINITTAB:IN
3、IT:INIT1:MAIN:DELAY:D1:DBDB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H080H,090H;字符段码表 8-FlcallInit_Device;调用初始设置子程序MOVR1,#00H;操作数据初始值MOVA,R1MOVDPTR,#TAB;读取与 A 中数值对应的显示段码MOVCA,A+DPTRMOVP5,A;段码送并行口 1 显示CALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLD
4、ELAYCALLDELAYCALLDELAYINCR1;操作数据 (R1) 增 1MOVA,R1CJNEA,#0AH,MAIN;检查操作数据是否大于显示范围SJMPINIT1;无限循环MOVR5,#0H;延时子程序MOVR6,#0HDJNZR6,$DJNZR5,D1RET$include (Init_Device.inc);初始设置子程序文件包含伪指令END;字符段码表 0-71. 例程 5 程序修改1)将 KEY2 、KEY4 的功能对调2)每次停下再启动以后,更改发光二极管点亮的循环方向$includeINITIAL:LOOP:ORG0000HLJMPINITIAL;主程序入口ORG000
5、3HLJMPSTOP;外中断 0 服务程序入口 ,开始键( STAR)ORG0013HLJMPSTAR;外中断 1 服务程序入口 停止键( STOPORG0100HInit_Device;调用初始设置子程序MOVP3,#0FFH;熄灭全部发光二极管MOVA,#0FFHMOVDPTR,#7F80HMOVXDPTR,A;清除数码管 2( NUM2 )显示MOVA,#0FEH;点亮发光二极管的初始数据MOVR1,#1H;发光二极管点亮位置初值MOVR4,#0FHMOVIP,#04H;设置 INT0 (开始键 STAR)为高优先级MOVTCON,#05H ; 外中断采用边沿触发SETBEX0;INT1
6、 (停止键 STOP)开中断SETBEA;开放中断CLREA;关闭中断CJNER4, #0FH, LPRLACJNER4,#0FH,LPMOVP3,ACJNER4,#0FH,LPINCR1CJNER4,#0FH,LP;C8051F02x 系列单片机信息头文件包含伪指令(C8051F020.inc)SETBEA)LCALLLP:LCALLDELAY1LCALLDELAY1LCALLDELAY1LCALLDELAY1CJNER1,#8H,LOOPMOVR1,#0HSJMPLOOPCLREACJNER4,#0F0H,LOOPRRACJNER4,#0F0H,LOOPMOVP3,ACJNER4,#0F0
7、H,LOOPDECR1CJNER4,#0F0H,LOOPSETBEALCALLDELAY1LCALLDELAY1LCALLDELAY1LCALLDELAY1CJNER1,#0H,LPMOVR1,#8HSJMPLP;停止键的中断服务程序STOP:PUSHACC;保护 A 寄存器内容MOVA,R1;读取发光二极管点亮位置计数值MOVDPTR,#TABMOVCA,A+DPTR; 获取发光二极管点亮位置计数值的显示段码MOVDPTR,#7F80HMOVXDPTR,A;发光二极管点亮位置计数值的显示数据送显示SETBEX1;INT0 (启动键 STAR )开中断JNZ$;等待重新启动条件 -A=0MOV
8、A,#0FFHMOVXDPTR,A;清除数码管 2( NUM2 )显示CLREX1;禁止 INT0 中断(避免程序误动作)POPACC;恢复 A 寄存器内容CLRIE1; 清除 INT1(停止键 STOP)中断标志(避免程序误动作)RETI;中断返回STAR:;启动键的中断服务程序MOV A,#00H;设置启动条件 -A=0CLRIE0 ;清除 INT0 (启动键 STOP)中断标志(避免程序误动作)PUSHACCMOVA,R4CPLAMOVR4,APOPACCRETI;中断返回TAB:DB0C0H,0F9H,0A4H,0B0H,099H;0-4 段码DB092H,082H,0F8H,080H
9、;5-8 段码DELAY1:MOVR6,#0;延时子程序D1:MOVR7,#0DJNZR7,$DJNZR6,D1RET$include (Init_Device.inc);初始设置子程序文件包含伪指令END2. 修改例程 6,将计数范围由 0-F 扩展至 00-FF(使用定时器 /计时器0),并在 2 位数码管上用10 进制数显示计数结果( 00-99)$include(C8051F020.inc);C8051F02x 系列单片机信息头文件包含伪指令DP2EQU07F80HDP_LEQU30H;低位数值暂存器DP_HEQU31H;高位数值暂存器MAIN:LCALLInit_Device;调用初
10、始设置子程序MOVTMOD,#00000101B ;C/T0 工作于方式 2MOVA,#0;显示初值为 0MOVDP_L,AMOVDP_H,ACALLDISPLAY;调用显示子程序显示初值 0MOVTL0,#0;C/T0 置初值 0SETBTR0;启动计数器0LOOP:MOVA,TL0;读计数器0 的计数值CJNEA,#0AH,L1MOVTL0,#0MOVA,#0INCDP_HMOVA,DP_HCJNEA,#0AH,MMMOVDP_H,#0MM:MOVA,#0L1:MOVDP_L,A;在 NUM2显示计数器 0 的计数值CALLDISPLAY;调用显示子程序显示计数值SJMPLOOP;无限次循
11、环;显示子程序DISPLAY:MOVA,DP_L;读低位显示值CALLDECODE;调用换码子程序MOVDPTR,#DP2;显示段码送 NUM2MOVXDPTR,AMOVA,DP_H;读高位显示值CALLDECODE;调用换码子程序MOV P5,ARET;换码子程序DECODE:MOV MOVC RETDPTR,#TAB A,A+DPTRTAB:DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H ;显示段码0-7DB080H,090H,088H,083H,0C6H,0A1H,086H,08EH ;显示段码8-F$include (Init_Device.inc)
12、;初始设置子程序文件包含伪指令END通过对例程 8 的程序进行修改和上机调试,改变源程序的 功能(1) 将发送 1、2、 3、4 的 ASCII 码改为发送 A、B、C、D 的ASCII 码2) 将接收的第 2、第 3 字节数据的显示位置交换$include (C8051F020.inc);C8051F02x 系列单片机信息头文件包含伪指令NUM2EQU07F80H;NUM2 地址NUM3EQU07F90H;NUM3 地址NUM4EQU07FA0H;NUM4 地址NUM5EQU07FB0H;NUM5 地址TIM_LEQU0FDH;T/C1 低字节计数值TIM_HEQU0FDH;T/C1 高字节
13、计数值REC_BUF0EQU32H;数据接收缓冲器 0REC_BUF1EQU34H;数据接收缓冲器 1REC_BUF2EQU33H;数据接收缓冲器 2FLAGBIT01H;数据发送完成标志ORG0000HLJMPMAIN;转主程序ORG0023HLJMPRECE;转串行通信中断程序;主程序MAIN:lcallInit_Device;C8051F02x 系列单片机信息头文件包含伪指令MOVA,#0FFHMOVP5,AMOVDPTR,#NUM2MOVXDPTR,A;清除数码管 NUM1 的显示MOVDPTR,#NUM3MOVXDPTR,A;清除数码管 NUM2 的显示MOVDPTR,#NUM4MO
14、VXDPTR,A;清除数码管 NUM3 的显示MOVDPTR,#NUM5MOVXDPTR,A;清除数码管 NUM4 的显示MOVR6,#0;通信操作状态寄存器清除MOVSP,#40H;堆栈栈底设置MOVTMOD,#00100000B;T/C1 方式 2MOVTH1,#TIM_H;T/C1 重装填值MOV SETB MOV SETB SETBTL1,#TIM_LTR1SCON0,#01010000BESEA;T/C1 计数值;启动 T/C1 ;串口方式 1 ;串口中断允许;开中断;主循环LOOP:CALLKEYBOARD;调用案件状态分析子程序CJNEA,#0FFH,L0;按键状态发生变化转 L
15、0CLRFLAG;按键状态无变化,清除发送完成标志SJMPLOOPL0:JBFLAG ,LOOP;数据发送完成,返回主循环MOVR7,A;否则,键值暂存 R7MOVA,#043H;CMOVSBUF0,A;发送字符 C 的 ASCII 码值CALLDELAYMOVA,#04FH;OMOVSBUF0,A;发送字符 O 的 ASCII 码值CALLDELAYMOVA,#04DH;MMOVSBUF0,A;发送字符 M 的 ASCII 码值CALLDELAYMOVA,#04BH;KMOVSBUF0,A;发送字符 K 的 ASCII 码值CALLDELAYMOVA,#40H;发送数字 0 的 ASCII
16、码值MOVSBUF0,ACALLDELAYMOVA,R7ADDA,#40H;生成键值的 ASCII 码值MOVSBUF0,A;发送键值的 ASCII 码值SETBFLAG;置位发送完成标志SJMPLOOP;中断服务程序RECE:JNBTI,REC1;非发送转接收处理CLRTI;否则,清除发送中断标志RETI;中断返回REC1:PUSHACC;保护累加器 AMOVA,SBUF0;读接收缓冲器CJNER6,#0,REC2CJNEA,#43H,REC6;接收状态为 0,进行字符 C 的过滤处理MOVR6,#1;接收状态改为 1SJMPREC6REC2:CJNER6,#1,REC3CJNEA,#4FH
17、,REC5;接收状态为 1,进行字符 O 的过滤处理MOVR6,#2;接收状态改为 2SJMPREC6REC3:CJNER6,#2,REC4CJNEA,#4DH,REC5;接收状态为 2,进行字符 M 的过滤处理MOVR6,#3;接收状态改为 3MOVR5,#3;数据接收计数器设置为 3SJMPREC6REC4:CJNER6,#3,REC6PUSHACC;接收状态为 3,暂存接收的内容MOVA,#REC_BUF0ADDA,R5MOVR0,A;生成接收数据存放缓冲器地址POPACC;恢复接收数据至 A 寄存器MOVR0,A;保存接收的数据DECR5;接收数据计数器减 1CJNER5,#0,REC
18、6CALLDISPLAY;接收数据计数器减为 0,进行接收结果的显示REC5:MOVR6,#0;接收状态恢复为 0(就绪状态)REC6:POPACC;恢复累加器 ACLRRI;清除接收中断标志RETI;中断返回KEYBOARD: MOVA,P2;读按键状态输入端口RRARRARRCA;KEY1 有效键值移入位累加器CJCK1;键值无效转 KEY2 键值的分析MOVA,#1;否则, KEY1 代码送 A 寄存器SJMPK5K1:RRCA;KEY2 有效键值移入位累加器CJCK2;键值无效转 KEY3 键值的分析MOVA,#2;否则, KEY2 代码送 A 寄存器SJMPK5K2:RRCA;KEY3 有效键值移入位累加器CJCK3;键值无效转 KEY4 键值的分析MOVA,#3;否则, KEY3 代码送 A 寄存器SJMPK5K3:RRCA;KEY4 有效键值移入位累加器CJCK4;键值无效转按键无效处理MOVA,#4;否则, KEY4 代码送 A 寄存器SJMPK5K4:MOVA,#0FFH;按键无效代码送 A 寄存器K5:RETDISPLAY:MOV SWAP ANL CALLMOV MOVXA,REC_BUF2AA,#0FHDECODEDPTR,#NUM2DPTR,AMOVA,REC_BUF2ANLA,#0FHCALLDECO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川大学华西医院医保真实世界研究与评价中心科研岗招聘2人考试参考试题及答案解析
- 2025-2026贵州九八五教育集团教师招聘考试3人考试参考题库及答案解析
- 2026年福建三明市建宁县县属国有企业招聘正式职工7人考试备考题库及答案解析
- 2026天津中医药大学第二批招聘4人(博士辅导员)考试参考试题及答案解析
- 2026年安徽省选调生招录700名笔试参考题库及答案解析
- 2026东台农商银行专场寒假实习招募80人考试参考试题及答案解析
- 2026河北保定雄安人才集团诚聘现场教学导师考试参考试题及答案解析
- 2026西北工业大学航空学院飞行器综合设计数智化技术陕西省高等学校重点实验室招聘科研助理人员1人考试参考题库及答案解析
- 2026浙江省数据局下属事业单位招聘3人考试参考题库及答案解析
- 2026广东深圳福田区第一幼教集团招聘考试备考题库及答案解析
- DB6301∕T 4-2023 住宅物业星级服务规范
- 护理查房与病例讨论区别
- 公司特殊贡献奖管理制度
- T/CA 105-2019手机壳套通用规范
- 2025-2031年中国汽车维修设备行业市场全景评估及产业前景研判报告
- 门窗拆除合同协议书范本
- GB/T 1040.1-2025塑料拉伸性能的测定第1部分:总则
- 重症胰腺炎的中医护理
- SL631水利水电工程单元工程施工质量验收标准第3部分:地基处理与基础工程
- 2024年高中语文选择性必修上册古诗文情境式默写(含答案)
- 中央2025年全国妇联所属在京事业单位招聘93人笔试历年参考题库附带答案详解-1
评论
0/150
提交评论