电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

单片机原理与应用 第2版 教学课件 ppt 作者 赵德安 第五章

35页
  • 卖家[上传人]:E****
  • 文档编号:89503308
  • 上传时间:2019-05-26
  • 文档格式:PPT
  • 文档大小:2.60MB
  • / 35 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第五章 汇编语言程序设计,1 程序设计方法 2 顺序程序 3 分支程序 4 循环程序 5 子程序 6 算术运算程序,第五章 汇编语言程序设计,5-1-2 汇编语言程序设计步骤 一.分析问题。 二.确定算法。 三.制定程序流程图:表示程序结构和程序功能 四.编制源程序 1. 合理分配存储器单元和了解I/O接口地址。 2. 按功能设计程序, 明确各程序之间的相互关系。 3. 用注释行说明程序, 便于阅读和修改调试和修改。 五.程序调试。,第五章 汇编语言程序设计,5-1-3 评价程序质量的标准 (1)程序的执行时间。 (2)程序所占用的内存字节数。 (3)程序的逻辑性、可读性。 (4)程序的兼容性、可扩展性。 (5)程序的可靠性。,5-2 顺序程序 直线程序又称简单程序,程序走向只有一条路径。 例1 双字节变补程序(设数据在R4 R5中)双字节变补程序(设数据在R4R5中): MOV A,R5 ;取低字节 CPL A ADD A,#1 ;低字节变补 MOV R5,A MOV A,R4 ;取高字节 CPL A ADDC A,#0 ;高字节变补 MOV R4,A,第五章 汇编语言程序设计,第五

      2、章 汇编语言程序设计,例2 压缩式BCD码分解成为单字节BCD码。,MOV R0,#40H ;设指针 MOV A,R0 ;取一个字节 MOV R2,A ;暂存 ANL A,#0FH ;清0高半字节 INC R0 MOV R0,A ;保存数据个位 MOV A,R2 SWAP A ;十位换到低半字节 ANL A,#0FH INC R0 MOV R0,A ;保存数据十位,十 个,第五章 汇编语言程序设计,例5-1 假设两个双字节无符号数,分别存放在R1R0和R3R2中,高字节在前,低字节在后。编程使两数相加,和数存放回R2R1R0中。 ORG 1000h CLR C MOV A,R0 ;取被加数低字节至A ADD A,R2 ;与加数低字节相加 MOV R0,A ;存和数低字节 MOV A,Rl ;取被加数高字节至A ADDC A,R3 ;与加数高字节相加 MOV Rl,A ;存和数高字节 MOV A,#0 ADDC A,#0 ;加进位位 MOV R2,A ;存和数进位位 SJMP $ ;原地踏步 END,第五章 汇编语言程序设计,5-3 分支程序 由条件转移指令构成程序判断框部分,形成程序分

      3、支结构。 5-3-1 单重分支程序 一个判断决策框,程序有两条出路。两种分支结构。 例1 求R2中补码绝对值,正数不变,负数变补。 MOV A,R2 JNB ACC.7,NEXT ;为正数? CPL A ;负数变补 INC A MOV R2,A NEXT: SJMP NEXT ;结束,第五章 汇编语言程序设计,5-3-2 多重分支程序 多次使用条件转移指令,形成两个以上判断框。 例5-7 设30H单元存放的是一元二次方程ax2+bx+c=0根的判别式=b2-4ac的值。 解:值为有符号数,有三种情况,即大于零、等于零、小于零。,第五章 汇编语言程序设计,编程: ORG 1000H START: MOV A,30H ;值送A JNB ACC.7,YES ;=0转YES MOV 31H,#0 ;0转TOW MOV 31H,#1 ;=0有相同实根 SJMP FINISH TOW: MOV 31H,#2 ;有两个不同实根 FINISH:SJMP $,第五章 汇编语言程序设计,5-3-3 N路分支程序 N路分支程序是根据前面程序运行的结果,可以有N种选择,并能转向其中任一处理程序。,第五章 汇编

      4、语言程序设计,例5-10 128路分支程序。 功能:根据R3的值(00H7FH)转到128个目的地址。 参考程序: JMPl28: MOV A,R3 RL A ;(A)2 MOV DPTR,#PRGTBL ;散转表首址送DPTR JMP A+DPTR ;散转 PRGTBL:AJMP ROUT00 AJMP ROUT01 AJMP ROUT7F ;128个AJMP指令占256个字节,第五章 汇编语言程序设计,例5-11 256路分支程序 功能:根据R3的值转移到256个目的地址; 入口条件:(R3)=转移目的地址代号(00HFFH); 出口条件:转移到相应分支处理程序入口。 解: JMP256: MOV A,R3 ;取N值 MOV DPTR,#PRGTBL ;指向分支地址表首址 CLR C RLC A ;(A)2 JNC LOWl28 ;是前128个分支程序,则转移 INC DPH ;否则基址加256,第五章 汇编语言程序设计,LOWl28: MOV TEMP,A ;暂存A INC A ;指向地址低8位 MOVC A,A+DPTR ;查表,读分支地址低8位 PUSH ACC ;地址低8位

      5、入栈 MOV A,TEMP ;恢复A,指向地址高8位 MOVC A,A+DPTR ;查表,读分支地址高8位 PUSH ACC ;地址高8位入栈 RET ;分支地址弹入PC实现转移 PRGTBL: DW ROUT00 ;占用512个字节 DW ROUT01 ,第五章 汇编语言程序设计,例5-12 大于256路分支转移程序 功能:根据入口条件转向n个分支处理程序 入口条件:(R7R6)=转移目的地址代号; 出口条件:转移到相应分支处理程序入口。 程序散转表中有N条LJMP指令,每条LJMP指令占3个字节,因此要按入口条件将址代号乘以3,用乘积的高字节加DPH,乘积的低字节送A(变址寄存器)。 PRGTBL:LJMP ROUT0 LJMP ROUT1 LJMP ROUT2 ,第五章 汇编语言程序设计,参考程序: JMPN:MOV DPTR,#PRGTBL;DPTR指向表首址 MOV A,R7 ;取地址代号高8位 MOV B,#3 ; MUL AB ;3 ADD A,DPH ; MOV DPH,A ;修改指针高8位 MOV A,R6 ;取地址代号低8位 MOV B,#3 ;3 MUL AB ;

      6、 XCH A,B ;交换乘积的高低字节 ADD A,DPH ;乘积的高字节加DPH MOV DPH,A XCH A,B ;乘积的低字节送A JMP A+DPTR ;散转,第五章 汇编语言程序设计,5-4 循环程序 包含多次重复执行的程序段,循环结构使程序紧凑。 5-4-1 循环程序的导出 各个环节任务: 一初始化部分 循环准备工作。 如:清结果单元、设指针、设循环控制变量初值等。 二循环体 循环工作部分: 需多次重复处理的工作。 循环控制部分: 1.修改指针和循环控制变量。 2.检测循环条件:满足循环条件,继续循环,否则退出循环。 三.结束部分 处理和保存循环结果。1)已知循环次数 2)循环次数未知 允许0次循环的循环结构:在循环工作之前检测循环条件。,第五章 汇编语言程序设计,单重循环 简单循环结构:循环体中不套循环。 例:求n个单字节数据的累加,设数据串已在43H起始单元,数据串长度在42H单元,累加和不超过2个字节。 SUM:MOV R0,#42H;设指针 MOV A,R0 MOV R2,A ;循环计数器R2n CLR A ;结果单元清0 MOV R3,A ADD1:INC R0

      7、 ;修改指针 ADD A,R0 ;累加 JNC NEXT ;处理进位 INC R3 ;有进位,高字节加1 NEXT: DJNZ R2,ADD1 ;循环控制:数据是否加完? MOV 40H,A ;循环结束,保存结果 MOV 41H,R3 RET,第五章 汇编语言程序设计,循环控制方法:计数控制、特征标志控制。 一.计数控制: 设循环计数器,控制循环次数。正计数和倒计数两种方式。 例:为一串7位ASCII码数据的D7位加上奇校验,设数据存放在片外RAM的2101H起始单元,数据长度在2100H单元。 MOV DPTR,#2100H MOVX A,DPTR MOV R2,A NEXT:INC DPTR MOVX A,DPTR ORL A,#80H JNB P,PASS ;判断是否加校验 MOVX DPTR,A;是,则加奇校验 PASS:DJNZ R2,NEXT DONE:SJMP DONE,第五章 汇编语言程序设计,二.特征控制: 设定循环结束标志实现循环控制。 例:找正数表最小值。正数表存在片外RAM中以LIST为起始单元,用-1作为结束标志。 START:MOV DPTR,#LIST ;

      8、数表首地址 MOV B,#127 ;预置最小值 NEXT: MOVX A,DPTR ;取数 INC DPTR ;修改指针 CJNE A,#0FFH,NEXT1;是否为数表结尾? SJMP DONE ;循环结束 NEXT1:CJNE A,B,NEXT2 ;比较 NEXT2:JNC NEXT ;Cy=1,则AB MOV B,A ;保存较小值 SJMP NEXT DONE: SJMP DONE,第五章 汇编语言程序设计,5-4-2 多重循环 循环体中套循环结构。以双重循环使用较多。 例:将内存一串单字节无符号数升序排序。 步骤: 每次取相邻单元的两个数比较, 决定是否需要交换数据位置。 第一次循环,比较N-1次,取数据表中最大值。 第二次循环,比较N-2次,取到次大值。 第N-1次循环:比较一次,排序结束。,第五章 汇编语言程序设计,SORT: MOV A,#N-1 ;N个数据排序 MOV R4,A ;外循环次数 LOOP1:MOV A,R4 MOV R3,A ;内循环次数 MOV R0,#TAB ;设数据指针 LOOP2:MOV A,R0 ;取二数 MOV B,A INC R0 MOV A

      9、,R0 CJNE A,B,L1 ;比较 L1: JNC UNEX ;AB,不交换 DEC R0 ;否则交换数据 XCH A ,R0 INC R0 MOV R0,A UNEX: DJNZ R3,LOOP2 ;内循环结束? DJNZ R4,LOOP1 ;外循环结束? RET,第五章 汇编语言程序设计,软件延时程序 用循环程序将指令重复多次执行,实现软件延时。 试计算延时程序的执行时间。 源程序 指令周期(M) 指令执行次数 DELAY:MOV R6,#64H 1 I1: MOV R7,#0FFH 1 I2: DJNZ R7,I2 2 DJNZ R6,I1 2 RET 2,延时时间计算:(设时钟f=12MHz) t=(11+1100+2100255+2100+21)M=51.3 ms,1 100 100255 100 1,第五章 汇编语言程序设计,5.5.2编写循环程序应注意的问题 1)循环体前应注意安排循环初始化; 2)内外循环间不应相互交叉。,第五章 汇编语言程序设计,5-5 查表程序 例5-19 一个十六进制数存放在HEX单元的低四位,将其转换成ASCII码并送回HEX单元。 编程: ORG 0100H HEX EQU 30H HEXASC: MOV A, HEX ANL A ,#00001111B ADD

      《单片机原理与应用 第2版 教学课件 ppt 作者 赵德安 第五章》由会员E****分享,可在线阅读,更多相关《单片机原理与应用 第2版 教学课件 ppt 作者 赵德安 第五章》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.