单片微型计算机C第9讲(机械)课件.ppt

单片微型计算机C第9讲(机械)课件.ppt

ID:57110226

大小:2.49 MB

页数:27页

时间:2020-07-31

单片微型计算机C第9讲(机械)课件.ppt_第1页
单片微型计算机C第9讲(机械)课件.ppt_第2页
单片微型计算机C第9讲(机械)课件.ppt_第3页
单片微型计算机C第9讲(机械)课件.ppt_第4页
单片微型计算机C第9讲(机械)课件.ppt_第5页
资源描述:

《单片微型计算机C第9讲(机械)课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Microcontroller’sPrincipleandApplications单片机原理及应用C上节内容回顾MCS51单片机的指令数据传送类(28条)算术运算类(24条)逻辑运算类(25条)控制转移类(17条)位操作类(17条)第8-9讲教学目的和要求【教学目标】通过讲述MCS-51单片机的汇编语言程序设计的基本步骤、基本方法,使学生对指令系统有进一步的认识和理解,同时使得学生掌握使用汇编语言进行程序设计的方法,通过实例加以巩固。【教学重点】①单片机程序设计的基本方法;②查表、差值运算、译码等简单程序设计方法;【教学难点】如何将实际问题转换成单

2、片机能识别和解决的问题第五章MCS-51的汇编语言程序设计5.3.2分支结构指令执行时,根据不同的情况执行不同的程序段。单分支双分支多分支双分支结构设变量x以补码的形式存放在片内RAM的30H单元,变量y与x的关系是:当x>0时,y=x;当x=0时,y=20H;当x<0时,y=x+5。编制程序,根据x的大小求y并送回30H单元。判断结果为0,可通过执行JZrel来实现判断补码的正负,可通过最高位来判断先与,保留最高位,再判断结果是否为零来实现双分支结构设变量x以补码的形式存放在片内RAM的30H单元,变量y与x的关系是:当x>0时,y=x;当x=0

3、时,y=20H;当x<0时,y=x+5。编制程序,根据x的大小求y并送回30H单元。双分支结构START:MOVA,30H;取x至累加器JZNEXT;x=0,转NEXTNEXT:MOV30H,#20HDONE:SJMP$ENDANLA,#80H;否,保留符号位JZDONE;x>0,转结束MOVA,#05H;x<0处理ADDA,30HMOV30H,A;X+05H送YSJMPDONE5.3.3循环结构按某种控制规律重复执行的程序称为循环程序。循环程序有先执行后判断和先判断后执行两种基本结构。例1延时程序编写一段延时50ms的程序若晶振频率为12MHz,

4、则一个机器周期为1μs,延时50ms,则程序的执行时间为50000个机器周期。立即数取指在0~255之间,可考虑200*250=50000。需要用到减1,结果不为0则重复的指令。执行一条DJNZ指令需要2个机器周期,即2μs。采用循环计数法实现延时,需要用到双重循环。延时程序DEL:MOVR7,#200;1μsDEL1:NOP;1μsDEL1:MOVR6,#?;1μsNOP;1μsDEL2:DJNZR6,DEL2;2μsDJNZR7,DEL1;2μsDEL1:MOVR6,#123;1μs共计[(2×123+2+2)×200+1]μs,即50.001

5、ms例2未知次数的循环将内部RAM中起始地址为data的数据串传送到外部RAM中起始地址为buffer的存储区域内,直到发现‘$’字符停止传送。…………data??H??Hdata+1……内部RAM‘$’??…………bufferbuffer+1……外部RAM问题何时终止传送?对取出的数进行与’S’进行比较,判断是否相等。用CJNE例2未知次数的循环程序将内部RAM中起始地址为data的数据串传送到外部RAM中起始地址为buffer的存储区域内,直到发现‘$’字符停止传送。MOVR0,#dataMOVDPTR,#bufferLOOP:MOVA,@R0

6、CJNEA,’$’,继续执行地址结束LP:MOVX@DPTR,AINCR0INCDPTRSJMPLOOPLP2:SJMP$ENDSJMPLP2CJNEA,’$’,LP5.4子程序及其调用在实际应用中,经常会遇到一些带有通用性的问题,在一个程序中可能要使用多次。这时可以将其设计成通用的子程序供随时调用,减少代码冗余。一个程序中可以多次调用一个子程序多个程序可以调用一个子程序子程序可以调用子程序,最多支持8级调用子程序时,单片机能自动保存PC内容,遇RET返回时,能自动恢复PC程序1……子程序RET……程序2……子程序结构子程序编写完成后,使用ACAL

7、L函数名(短距离调用)LCALL函数名(整个ROM区调用)此处的函数名,实际上是一个标号,编译后形成具体的地址。子程序的处理过程中,可能要影响PSW、ACC,以及其他的一些功能寄存器,若这些影响是子程序功能的一部分,则无需保护;否则,一定要保护现场,使得主程序得以正确执行。保护现场……子程序处理……恢复现场RET子程序函数名:通过堆栈进行现场的保护SUB1:PUSHPSW;保护现场PUSHACC;PUSHB;……MOVPSW,#10H;换当前工作寄存器组……POPB;恢复现场POPACC;POPPSW;RET注意:①保护和恢复的工作在子程序中进行。

8、②保护与恢复的顺序要对应。子程序结构子程序参数的传递。调用子程序时,语句中无法携带子程序运行所需的参数。明确子程序的功能后

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。