MCS51系列单片机程序设计ppt课件_第1页
MCS51系列单片机程序设计ppt课件_第2页
MCS51系列单片机程序设计ppt课件_第3页
MCS51系列单片机程序设计ppt课件_第4页
MCS51系列单片机程序设计ppt课件_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MCS-51系列单片机的程序设计第四章 交叉汇编语言交叉汇编语言MASM51MASM51 单片机汇编语言程序设计方法及技巧单片机汇编语言程序设计方法及技巧 了解交叉汇编语言了解交叉汇编语言MASM51MASM51的特点的特点掌握顺序程序、分支程序、循环程序、查表程序、子程序的基本设计方法和技巧掌握顺序程序、分支程序、循环程序、查表程序、子程序的基本设计方法和技巧掌握汇编语言程序设计的一般步骤掌握汇编语言程序设计的一般步骤 汇编语言源程序是由汇编指令和伪指令组成的文件,其扩展名为“ASM”。 源程序编辑完后只有转换为机器码表示的目标程序计算机才能执行,这个转换的过程称为汇编。 例4.1 请用MC

2、S-51汇编指令编写程序,将片内RAM104、105单元中的内容分别传送到片外数据存储器 104H、105H单元中。分析:应注意片内和片外的寻址指令不同分析:应注意片内和片外的寻址指令不同YN 顺序执行条件满足?转向目标程序图4.1 简单分支程序转移 已知片内RAM FIRST 开始的两个单元中各存放有一个8位无符号二进制数,要求找出其中的大数并存入片内RAM的SECOND单元中。K=n K=n-1 K=2 转向分支n-1 转向分支2 转向分支1 转向分支n K=? K=1 可通过间接转移指令JMP A+DPTR和无条件转移指令中的AJMP或LJMP指令来实现多路分支转移: 已知R0中存放有一

3、数字关键码,要求根据码值的不同,分别转向对应的码值程序段去执行。即当R0=K时,便执行CODEK程序。 AJMP指令的转移范围不超出所在的2KB字节区间,如各小段程序较长,在2KB字节内无法全部容纳,上面的程序应该怎样修改? 设MCS-51单片机内部RAM从40H开始的连续16个单元中,每个单元中分别存放有单字节的带符号数。要求将其中的正数存入50H开始的连续单元中,负数存入60H开始的连续单元中,并将正数、负数和零的个数分别存入70H、71H、72H单元中。例例 4.4 分析 查表就是把事先计算或测得的数据按照一定的顺序编制成表格存放在存储器中,然后根据输入的数据,从表格中查出所需的结果。

4、例 4.6 LOOP: MOVC A ,A+DPTR ;查表 MOV R0 , A ;存结果 INC R0 ;调整存放结果地址指针 INC DPTR ;修正表地址指针 MOV A , R2 ;恢复n*3 DJNZ R1 , LOOP ;未查完,继续 SJMP $ TAB: DB 01H , 00H , 00H , 01H , 00H , 00H DB 02H , 00H , 00H , 06H , 00H , 00H DB 24H , 00H , 00H , 20H , 01H , 00H DB 20H , 07H , 00H , 40H , 50H , 00H DB 20H , 03H ,

5、04H , 80H , 28H , 36H二进制数与二进制数与ASCII码的对应关系:码的对应关系: 四位二进制四位二进制 ASCII 0000 (0) 30H 0001 (1) 31H 1001 (9) 39H 1010 (A) 41H 1111 (F) 46H ORG 1000BTOASC: PUSH A PUSH PSW MOV A , R0 ANL A , #0FH ;取四位二进制数 MOV R0 , A ;暂存 CLR C SUBB A , #0AH ;与10比较 MOV A , R0 ;恢复四位二进制数 JC LOOP ;小于10转LOOP ADD A , #07H ;大于10先加

6、07HLOOP: ADD A , #30H ;加30H MOV R0 , A ;存结果 POP PSW POP A RET 已知片内BLOCKB单元开始处有一数据块,块长在R2中,在此数据块的每个单元中存放有一个未组合的BCD码,要求将每个BCD码转换为ASCAII码,并存放在片内BLOCKA开始的连续单元中。 主程序: ORG 1000H MOV R2 ,#L MOV R0 ,#BLOCKB ;设BCD码的地址指针 MOV R1 ,#BLOCKA ;设ASCAII的地址指针LOOP:ACALL TRANS ;调用TRANS子程序 DJNZ R2 ,LOOP ;未转换完,继续 SJMP $ 设

7、片内40H单元中有一组合的BCD码,要求将其转换为二进制数存回原处。分析:1组合的BCD码为两位十进制数,需将十位 数和个位数分开处理。2十位数转换时只要累加0AH就能将其转换 为相应的二进制数,然后再将个位数直接 加到转换后的十位数上就可完成整个数的 转换。 加加10子程序子程序: 已知8位二进制数在R0中,要求将其转换为BCD码并存放在片内30H、31H单元中。 已知片内RAM ADR1开始的单元依次从低位到高位存放有L个字节的无符号数,片外RAM ADR2开始的单元也依次从低位到高位存放有L个字节的无符号数。请编一个加法程序,将他们的和存放在ADR1开始的连续单元中。R0: 片内片内RA

8、M地址指针,初值为地址指针,初值为ADR1DPTR:片外片外RAM地址指针,初值为地址指针,初值为ADR2每完成一个字节的加法后,每完成一个字节的加法后,R0、DPTR各自加各自加1,调整为加数、被加数下一待加字节的地址。调整为加数、被加数下一待加字节的地址。R2:计数器。存放待加的字节数,每完成一个字:计数器。存放待加的字节数,每完成一个字节的加法后,内容减节的加法后,内容减1,当,当R2=0时,程序结束。时,程序结束。开场开场#ADR1(R0)#ADR2(DPRTR)#L(R2)C清零(R0)+(DPTR)(A) (A) (R0)(R0)+1 (R0)(R1)+1 (R1)(R2)-1 (

9、R2)(R2) = 0?YN出口出口初始化初始化设初值设初值循环体循环体工作部分工作部分修正修正循环体循环体参数参数判别判别 a b c dbdH bdLadH adLbcH bcLacH acLR0+3 R0+2 R0+1 R0 b da db ca c积积+R7 R6R5 R4 ORG 1000HMUL1: MOV 40H ,#00H ;统计统计bdH+adL+bcL ;的进位单元清的进位单元清0 MOV 41H ,#00H ;统计统计adH+bcH+acL ;的进位单元清的进位单元清0 MOV R0 ,#50H ;积的首地址送积的首地址送R0中中 MOV A ,R6 ;b送送A MOV

10、B ,R4 ;d送送B MUL AB ;bd MOV R0 , A ;bdL送送50H单元中单元中 MOV R1 , B ;bdH送送R1中中R1R3R1R2 MOV R1 , B ;bcH存R1中 MOV A , R7 ;a送A MOV B , R5 ;c送B MUL AB ;ac ADD A , 40H ;acL加低位进位 JNC NEXT3 ;无进位转NEXT3 INC 41H ;统计进位NEXT3: ADD A , R1 ;acL+bcH JNC NEXT4 ;无进位转NEXT4 INC 41H ;统计acL+bcH进位NEXT4: ADD A , R3 ;acL+bcH+adH INC R0 MOV R0 , A ;存acL+bcH+adH的结 果于52H单元中 MOV A , B ADDC A , 41H ;acH加低位进位 INC R0 MOV R0 , A ;积最高位存53H单元中 RET R1R3 定时或延时方法:定时或延时方法:不需另添硬件,且变化灵活。软件延时:利用计算机执行程序耗用的软件延时:利用计算机执行程序耗用的时间来实现延时,又称时间来实现延时,又称“延时程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论