Lecture Notes for PAMC (07) - Ch3_L3-201415(1)_第1页
Lecture Notes for PAMC (07) - Ch3_L3-201415(1)_第2页
Lecture Notes for PAMC (07) - Ch3_L3-201415(1)_第3页
Lecture Notes for PAMC (07) - Ch3_L3-201415(1)_第4页
Lecture Notes for PAMC (07) - Ch3_L3-201415(1)_第5页
已阅读5页,还剩11页未读, 继续免费阅读

下载本文档

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

文档简介

1、Lecture notes for Principle and Applications of Micro-Computers “微机原理及应用”讲义第7讲 MCS-51单片机的汇编程序设计(2)(教材3.3节)教学目的: 掌握掌握MCS-51单片机汇编程序设计方法单片机汇编程序设计方法要求: 掌握掌握MCS-51单片机汇编程序设计结构和设计方法单片机汇编程序设计结构和设计方法难点: 汇编程序设计方法汇编程序设计方法本讲的主要内容nMCS-51单片机汇编程序设计示例单片机汇编程序设计示例(接前一讲接前一讲)例例3, BCD码运算程序码运算程序n包含的主要指令包含的主要指令: ADD, ADDC

2、, DA例例4, 搜索最小搜索最小(大大)数程序数程序(逻辑判断逻辑判断)n包含的主要指令包含的主要指令: JNC, XCH例例5, I/O端口控制程序设计端口控制程序设计 (位操作位操作)n包含的主要指令包含的主要指令: JB, JNB, CPL汇编语言程序设计 示例3n功能功能 计算计算3个字节型个字节型BCD码之和码之和, 并表示成并表示成BCD码码n要求要求写成子程序形式写成子程序形式子程序的输入和输出参数子程序的输入和输出参数n输入输入: 数据存放在数据存放在R4, R5和和R6中中n输出输出: 和存放在和存放在R2(高高8位位)和和R3(低低8位位)中中汇编语言程序设计 示例3的源

3、码BCDSum: PUSH AccPUSH PSWMOV R2, #00HMOV A, R4ADD A, R5DA AMOV R3, ACLR AADDC A, R2 mov R2,AMOV A, R3ADD A, R6DA AMOV R3, A CLR AADDC A, R2DA AMOV R2, APOP PSWPOP AccRETR5R4+AC调整调整R3R2R6+ACR3调整调整R2C+R2汇编语言程序设计 课内练习3n功能功能 将一个无符号整型十六进制数转换成将一个无符号整型十六进制数转换成BCD码码n要求要求写成子程序形式写成子程序形式子程序的输入和输出参数子程序的输入和输出参数n

4、输入输入: 原数据保存在原数据保存在A中中n输出输出: BCD码保存在码保存在R3(高字节高字节)和和R4(低字节低字节)中中汇编语言程序设计 课内练习3续n MOVB,#100nDIVABnMOVR3,A; save hundred bitnMOVA,BnMOVB,#10nDIVABnSWAPAnORLA,BnMOVR4,AnRET汇编语言程序设计 示例4n功能功能 某系统的片外某系统的片外RAM从从0020H0030H地址单元存放着一批地址单元存放着一批无符号整型数无符号整型数, 请查找其中的最小数是多少请查找其中的最小数是多少? 位于哪个地址位于哪个地址单元单元?n要求要求写成子程序形式

5、写成子程序形式子程序的输入和输出参数子程序的输入和输出参数n输入输入: 原数据存放在片外原数据存放在片外RAM的的00200030H中中n输出输出: 最小数存放在最小数存放在A中中, 其地址放在其地址放在R2(高高8位位)和和R3(低低8位位)中中汇编语言程序设计 示例4的源码Sort:MOV R7, #16MOV DPTR, #0020HMOVX A, DPTRMOV B, AINC DPTRSort1:MOVX A, DPTRCLR CSUBB A, BJNC Sort_SkipMOVX A, DPTRXCH A, BMOVX DPTR, AMOV R3, DPLSort_Skip:INC

6、 DPTRDJNZ R7, Sort1RET 课内练习课内练习4:编写程序确定这一组数编写程序确定这一组数据的最大数及其存储单据的最大数及其存储单元地址元地址. 汇编语言程序设计 课内练习4n功能功能 有有16个字节的数据分别存放在个字节的数据分别存放在2000H200FH单元,请单元,请编写程序统计其中有多少个数据是大于编写程序统计其中有多少个数据是大于80H的,将统计结的,将统计结果保存在片内果保存在片内RAM的的30H单元。单元。n要求要求写成子程序形式写成子程序形式子程序的输入和输出参数子程序的输入和输出参数n输入输入:原数据存放在片外原数据存放在片外RAM的的2000H200FH中中

7、n输出输出:统计结果保存在片内统计结果保存在片内RAM的的30H单元单元汇编语言程序设计 课内练习4续n MOVR4,#0nMOVR2,#16nMOVDPTR,#2000Hnex1_loop:nMOVXA,DPTRnSUBB A,#80H ; nJCex1_skipnINCR4nex1_skip:nINCDPTRnDJNZR2,ex1_loopnMOVA,R4nMOV30H,AnRET汇编语言程序设计 示例5n功能功能 按图中电路按图中电路, 控制控制LED: 按下按下Key时时, LED常亮常亮; Key断开时断开时, LED亮亮0.1s, 灭灭0.9sn要求要求写成主程序形式写成主程序形式

8、P1.0+5V12MHzKeyP3.1XTAL1XTAL2按下KeyKey断开讨论实现思路讨论实现思路.汇编语言程序设计 示例5的流程启动启动按按Key?YesNoLED亮亮,Flag=0OnOff=0, Cnt=00HFlag=1OnOff=0?YesNoCnt9?NoYesCnt=Cnt+1OnOff=1, Cnt=00HP1.0=0Cnt90?NoYesOnOff=0, Cnt=00HP1.0=1 AND Flag延时延时10ms 启动和初始化启动和初始化任务任务2(识别识别Key状态状态)任务任务3(控制控制LED状态状态)任务任务1(延时延时10ms)汇编语言程序设计 示例5的源码F

9、lag BIT 00HOnOff BIT 01HCnt DATA 30HORG 0000HLJMP main_entry ; 无中断程序无中断程序ORG 0100Hmain_entry:CLR OnOffMOV Cnt, #00Hmain_loop:LCALL Task1LCALL Task2LCALL Task3LJMP main_loopORG 0200HTask1: ; 延时延时10msMOV R7, #97T11: MOV R6, #50T12: DJNZ R6, T12DJNZ R7, T11RETTask2: ; 识别识别Key状态状态JNB P3.1,T2Skip;按下按下SET

10、B FlagRETT2Skip: CLR P1.0CLR FlagRETTask3: ; 控制控制LED状态状态INC CNTJNB OnOff, T3SkipMOV P1.0, FlagMOV A, #90CJNE A, Cnt, T31T31: JNC T34CLR OnOffAJMP T33T3Skip: CLR P1.0MOV A, #9CJNE A, Cnt, T32T32: JNC T34SETB OnOffT33: MOV Cnt, #00HT34: RETEND示例5实现思路的一些说明n示例示例5的主程序每执行一个周期大约的主程序每执行一个周期大约10ms, 所以扫描所以扫描K

11、ey的周期为的周期为10msn把把Task1的延迟去掉的延迟去掉, 执行执行Task2和和Task3所消耗的时所消耗的时间大约间大约25 s, 用此时间作为延时基准用此时间作为延时基准(Cnt的最大值的最大值需要修改需要修改), 可以使整个程序无任何等待可以使整个程序无任何等待, 以减小以减小Key的扫描周期的扫描周期, 提高实时性提高实时性n在本课程以后的示例中在本课程以后的示例中, 尽可能使用这种思路尽可能使用这种思路n如果结合定时器如果结合定时器, 这种思路具有更明显的优势这种思路具有更明显的优势总结n三个程序设计示例和两个课内练习三个程序设计示例和两个课内练习进一步巩固汇编程序的循环控制语句进一步巩固汇编程序的循环控制语句掌握数值的加减运算指令掌握数值的加减运算

温馨提示

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

评论

0/150

提交评论