版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单元四 汇编语言程序设计4.1 任务七单片机计数4.2 任务八LED显示电路返回主目录4.1 任务七 单片机计数 学习目标:通过学习任务七的完成方法,掌握MCS-51单片机汇编语言中的伪指令的功能特点。 任务描述:利用实验开发板上的555振荡电路产生的4HZ的脉冲信号进行计数,要求每计十个数单灯向左移动一次。4.1.1 硬件电路ORG0000HLJMPMAINORG0030HMAIN:MOVTMOD,#06HMOVTH0,#0F6HMOVTL0,#0F6HSETBTR0MOVA,#0FEHLOOP:MOVP1,AJBCTF0,MLOOPSJMPLOOPMLOOP:RL ASJMPLOOPEND
2、 4.1.2 程序设计硬件演示:用“伟福”模拟仿真软件进行程序的编辑、编译。 打开“ISP下载软件”将目标文件下载到ISP-4实验 开发板上的AT89S51单片机芯片,观察程序运行 结果。提出问题:1、ORG END这样指令有什么意义? 2、什么是伪指令?有哪些常用伪指令?4.1.3 源程序编辑、编译、下载什么是伪指令伪指令又称汇编程序控制译码指令,属说明性汇编指令。伪”字体现在汇编时不产生机器指令代码,不影响程序的执行,仅产生供汇编时用的某些命令,在汇编时执行某些特殊操作。如EDN表示编译到此结束。 4.1.4 相关知识-伪指令(1 )定位伪指令ORG格式:标号: ORG 地址表达式功能:规
3、定程序块或数据块存放的起始位置。 例如:ORG 1000H;MOV A,#20H表示下面指令MOV A,#20H存放于1000H开始的单元(2)定义字节数据伪指令DB格式:标号: DB 字节数据表功能:字节数据表可以是多个字节数据、字符串或表达式,它表示将字节数据表中的数据从左到右依次存放在指定地址单元。2.常用伪指令例如:ORG 1000H TAB: DB 2BH, 0A0H, A, 2*4 ;表示从1000H单元开始的地方存放数据2BH,0A0H,41H(字母A的ASCII码),08H (3) 定义字数据伪指令DW格式:标号: DW 字数据表功能:与DB类似,但DW定义的数据项为字,包括两
4、个字节,存放时高位在前,低位在后。例如:ORG 1000H DATA: DW 324AH, 3CH ;表示从1000H单元开始的地方存放数据32H,4AH,00H ; 3CH(3CH以字的形式表示为003CH) (4)定义空间伪指令DS格式:标号: DS 表达式功能:从指定的地址开始,保留多少个存储单元作为备用的空间。例如: ORG 1000H BUF: DS 50 ; TAB: DB 22H ;22H存放在1032H单元。表示从1000H开始的地方预留50(1000H1031H)个存储字节空间。 (5) 符号定义伪指令EQU或“=”格式:符号名 EQU 表达式 或 符号名=表达式功能:将表达
5、式的值或某个特定汇编符号定义为一个指定的符号名,只能定义单字节数据,并且必须遵循先定义后使用的原则,因此该语句通常放在源程序的开头部分。例如:LEN=10SUM EQU 21HMOV A,#LEN;执行指令后,累加器A中的值为0AH (6)数据赋值伪指令DATA格式:符号名 DATA 表达式功能:将表达式的值或某个特定汇编符号定义为一个指定的符号名,只能定义单字节数据,但可以先使用后定义,因此用它定义数据可以放在程序末尾进行数据定义。例如: MOV A,#LEN LEN DATA 10尽管LEN的引用在定义之前,但汇编语言系统仍可以知道A的值是0AH。 7. 数据地址赋值伪指令XDATA格式:
6、符号名 XDATA 表达式功能:将表达式的值或某个特定汇编符号定义为一个指定的符号名,可以先使用后定义,并且用于双字节数据定义。例如:DELAY XDATA 0356H LCALL DELAY ;执行指令后,程序转到0356H单元执行 8. 汇编结束伪指令END格式:标号: END 功能:汇编语言源程序结束标志,用于整个汇编语言程序的末尾处。小结:1.伪指令在程序中的作用是什么?2.单片机汇编语言程序中常用的有哪些伪指令?思考与练习:4.2 4.34.2 任务八 LED显示电路 学习目标:通过学习任务八的完成方法,掌握单片机汇编语言程序设计的结构化设计方法,如分支结构、循环结构、子程序结构、查
7、表程序结构等。 任务描述:将09这十个数循环送P1口七段LED上显示 。4.2.1 硬件电路START: ORG 0100H MAIN: MOV R0,#00H MOV DPTR,#TABLE DISP: MOVA,R0 MOVCA,A+ADPTR MOVP1,A ACALLDELAY INCR0 CJNER0,#0AH,DISP AJMPMAINDELAY: MOVR1,#0FFH LOOP0: MOVR2,#0FFHLOOP1: DJNZR2,LOOP1DJNZR1,LOOP0RETTABLE:DB0C0H,0F9H, DB0A4H,0B0H DB99H,92H DB82H,0F8H DB
8、80H,90H END 4.2.2 程序设计4.2.3 源程序编辑、编译、下载硬件演示:用“伟福”模拟仿真软件进行程序的编辑、编译。 打开“ISP下载软件”将目标文件下载到ISP-4实验 开发板上的AT89S51单片机芯片,观察程序运行 结果。提出问题: 单片机源程序有哪些常用结构形式? 一个应用系统的汇编语言源程序,无论其系统功能的要求简单还是复杂,其程序结构的组成基础总是由简单程序、分支程序、循环程序、子程序、查表程序等结构化程序块组合而成。P2入口出口P1P3(a) 顺序结构过程A过程B是否入口出口条件满足?(b) 分支结构过程是否入口出口条件满足?(c) 循环结构4.2.4 相关知识-
9、MCS-51基础程序设计1. 单片机基本程序结构2. 分支程序结构条件成立?NY(1)单分支程序结构 只有一个入口 两个出口 条件中只有两种可能性出现 条件一般由运算或检测的状态标志提供 通常使用条件判断指令实现单分支结构程序的典型形式NY开始程序段1条件成立?程序段(2)结束分支程序(2)分支程序(1)NY开始程序段1条件成立?程序段(2)结束程序段(3)(A)=nS0S1Sn(2)多分支程序结构 只有一个入口 多个出口 条件有多种可能性出现 通常使用散转指令实现 JMP A+DPTR采用转移指令表的散转程序例: 编出要求根据R的内容转向各个操作程序的程序。即当(R)=0,转向OPR0(R)
10、=1,转向OPRl(R)=n,转向OPRn解:程序清单如下:MOV A,RRL A ;分支序号值乘2MOV DPTR ,#BRTABL ;转移指令表首址JMP A+DPTR ;转向形成的散转地址BRTABL:AJMP OPR0 ;转移指令表AJMP OPR1AJMP OPRn散转程序举例3. 循环程序结构(1)循环结构程序的基本组成(2)循环结构程序举例两条转移指令:DJNZ Rn,rel ;以工作寄存器Rn为控制寄存器DJNZ direct,rel ;以直接寻址单元作控制寄存器控制计数器方式:一般采用减1计数(递减方式)。 (3)多重循环结构程序应用情况:复杂问题或是循环数超出256。多重循
11、环结构:即循环中包含循环程序或一个大循环中包含多个小循环程序,也称循环嵌套。循环重数不限,但不能交叉。例如:双重软件延时START:MOV R3,#DATA1 ;外层循环计数初值LOOP1:MOV R2,#DATA2 ;内层循环计数初值LOOP2:NOPNOPNOPDJNZ R2,LOOP2 ;(R2)-10,转LOOP2DJNZ R3,LOOP1 ;(R3)-10,转LOOP1END ;结束4. 子程序结构(1)子程序的结构 子程序的结构A、必须标明子程序的入口地址,又称首地址,以便在主程序调用;B、必须以返回指令RET结束子程序。 参数传递A、传递数据 B、传递地址。 主程序的现场保护和恢
12、复A、调用前保护、返回后恢复。B、调用后保护、返回前恢复。 主程序PUSH PSW ;将PSW、A、DPTR等入栈保护PUSH ACCPUSH BPUSH DPL PUSH DPH PUSH PSW,#10H ;选用工作寄存器组2,将0组保护LCALL addr16 ;调用子程序addr16POP DPH ;出栈POP DPLPOP BPOP ACCPOP PSWA、调用前保护、返回后恢复ADDR:PUSH PSW ;子程序现场保护 PUSH ACC PUSH B PUSH DPL PUSH DPH MOV PSW,#08H ;选用工作寄存器组1,0组保护 ;子程序主体 POP DPH ;现场
13、恢复POP DPL POP BPOP ACCPOP PSWRET ;返回B、调用后保护、返回前恢复4. 子程序结构(2)子程序的特性 通用性浮动性 可递归性 子程序的说明文件 子程序名:标明子程序功能的名称。 子程序功能:简要说明子程序能完成的主要功能,包括重要算法、参量要求及有关存储单元配置等。 子程序调用:指明本子程序还需调用哪些子程程序流程图及程序清单。5. 查表程序结构 查表指令MOVC A,A+DPTRMOVC A,A+PC DPTR作为基地址查表A、将待查表格的首地址置入DPTR基址寄存器;B、将待查的表格具体项数值置入变址寄存器A中;C、执行指令 PC作为基地址查表A、表格不能放
14、在查表指令的下一条。B、表格下移若干字节。C、A赋初值时使用ADD A,#DATA; #DATA为表格与查表指令之间的地址差。使用MOVC A,A+DPTR指令来查表,程序清单如下:MOV DPTR,#JZ ;子程序入口地址表首址RL A ;键码值乘以 MOV R2,A ;暂存MOVC A,A+DPTR ;取得入口地址低位PUSH A ;进栈暂存INC AMOVC A,A+DPTR ;取得入口地址高位MOV DPH,APOP DPLCLR AJMP A+DPTR ;转向键处理子程序JZ: DB RK0L ;处理子程序入口地址表 DB RK0H DB RK1L DB RK1H DB RK2L DB RK2H 查表程序举例6. 单片机源程序的基本格式单片机应用系统源程序的基本格式及其部分地址分配示例:ORG 0000HLJMP START ;转向主程序ORG 0003HLJMP INTE0 ;转向外中断0服务子程序ORG 000BHLJMP INTTFO ;转向定时/计数器0服务子程序 ;可按实际需要设置服务子程序ORG 0030HSTART:MOV A,#00H ;主程序从0030H单元开始MOV R1,#dataMOV R0,#00HDJNZ R1,LOOP0 ;初始化程序段 ;主程序主体区段ORG 3100HA0: ;子程序A0RETA1 ;子程序A1RE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年高中语文第7单元11玄黑结婚作业含解析新人教版选修中国小说欣赏
- 2025届高考英语二轮复习专项解密01冠词含解析
- 合肥保时捷购买合同范例
- 乐山劳务派遣合同范例
- 小区购新房合同范例
- 广告制作包吃住合同范例
- 学校煤炭供应合同范例
- 双方共同投资合同范例
- 2024年重庆客运考题
- 2024年河北客运资格证应用能力试题
- 苏教版六年级上册数学期中考试试题带答案
- 医院培训课件:《医疗质量安全核心制度要点解读》
- 心血管内科专病数据库建设及研究
- DL-T-5161.5-2018电气装置安装工程质量检验及评定规程第5部分:电缆线路施工质量检验
- 产后康复-腹直肌分离
- 《光伏发电工程工程量清单计价规范》
- 最美老师评选述职报告
- 人工智能在统计中的应用
- 幼儿园:中班社会《桌子底下的动物园》
- GB/T 40734-2021焊缝无损检测相控阵超声检测验收等级
- 绿水青山就是金山银山心得体会范文(三篇)
评论
0/150
提交评论