- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
06单片机编程
第6章 单片机程序设计 6.1 机器语言、汇编语言与高级程序设计语言 6.2 汇编语言基本程序设计 6.3 汇编语言高级程序设计(选学) 6.1.1 汇编语言及其语句格式 1、汇编语言 这里介绍MCS-51单片机的汇编语言。 2、汇编语言的语句格式 一条汇编语言的语句包括四部分内容:标号、操作码、操作数和注释。其格式为: 标号:操作码 操作数;注释 例如:LOOP: MOV A , #20H ; (A)←20H 6.1.2 汇编语言程序设计过程 1、分析任务,确定算法或解题思路 2、根据算法和解决思路画出程序流程图 流程图是由一些框图和流程线组合而成: 6.2.1 顺序结构程序设计 按照程序编写的顺序,依次执行。任何复杂的程序,都含有较大成份的顺序结构程序。 【例】 将两位压缩BCD码转换成二进制数 编程思路:(a1a0)BCD= a1×10+a0 编程说明:待转换的两位压缩BCD码存放于R2,转换结果存回R2。 程序流程图如图所示。 编程如下: START: MOV A , R2 ANL A , #0F0H ;取高位BCD码 SWAP A MOV B , #0AH MVL AB MOV R3 , A MOV A , R2 ANL A , #0FH ;取低位BCD码 ADD A , R3 MOV R2 , A END 6.2.2 分支程序设计 【例】 求符号函数的值 1 当X0 Y= 0 当X=0 的值。 -1 当X0 编程说明:设变量X存放在40H单元中,函数Y存放在41H单元中。此程序为三分支程序。 程序流程图如图所示。 编程如下: START: MOV A,40H JZ COMP JNB ACC.7, POST MOV A,#81H ;表示-1 SJMP COMP POSI: MOV A,#01H ;表示+1 COMP: MOV 41H,A END 【例3-10】 求单字节有符号二进制数的补码。 编程如下: CMPT: MOV A , 30H JNB ACC.7 , NCH ;(A)≥0,不需要转换 MOV C , ACC.7 ;保存符号 MOV 10H , C CPL A ADD A , #1 MOV C , 10H MOV ACC.7 , C ;恢复符号 NCH: END 参考程序如下: START: MOV R0 , #30H MOV DPTR , #2000H MOV R2 , #32H LOOP: MOV A , @R0 MOVX @DPTR , A INC R0 INC DPTR DJNZ R2 , LOOP END 1、子程序的调用与返回 MCS-51单片机有两条子程序调用指令:ACALL addr11、 LCALL addr16;一条子程序返回指令RET。 2、保存与恢复寄存器内容 例如:SUB1: PUSH PSW PUSH A PUSH R6 ∶ (此处省略了子程序的内容) ∶ POP R6 POP A PUSH PSW 主程序如下: START: MOV A , 30H ACALL SQR ;调查表子程序 MOV R1 , A ;a2暂存R1中 MOV A , 31H ACALL SQR ;调查表子程序 ADD A , R1 MOV 40H , A END 4、子程序的嵌套 【例】利用查表的方法编写Y= X2 (X=0,1,2…9 )的程序。 编程说明: 设变量X的值存放在内存30H单
文档评论(0)