网站大量收购独家精品文档,联系QQ:2885784924

第3章.程序设计.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.6 位操作程序设计 MCS-51单片机有着优异的位逻辑功能,可以方便的实现各种复杂的逻辑运算.这种用软件替代硬件的方法,可以大大简化甚至完全不用硬件,但比硬件要多花运算时间。 例3-17 编写一程序,以实现图3-7中的逻辑运算电路。 其中P1.1和P2.2分别是端口线上的信息,TF0和IE1分别是定时器0定时溢出标志和外部中断1请求标志, 25H和26H分别是两个位地址, 运算结果由端口线P1.3输出。 * 程序如下: START:MOV C,P2.2 ORL C,TF0 ANL C,P1.1 MOV F0,C MOV C,IE1 ORL C,/25H ANL C,F0 ANL C,/26H MOV P1.3,C SJMP $ * Y=X0X1X2+X0X1X2+X0X1X2X3+X4X5X6X7 X0 BIT ACC.0 X1 BIT ACC.1 X2 BIT ACC.2 X3 BIT ACC.3 X4 BIT ACC.4 X5 BIT ACC.5 X6 BIT ACC.6 X7 BIT ACC.7 ORG 0000H MOV C,X0 ANL C,X1 ANL C,X2 MOV 00H,C ;X0X1X2 MOV C,X0 ANL C,/X1 MOV 01H,C ;X0X1 ANL C,/X2 ORL C,00H MOV 00H,C MOV C,X2 ANL C,01H ANL C,X3 ;X0X1X2X3 ORL C,/00H MOV 00H,C MOV C,X7 ANL C,/X6 ANL C,/X5 ANL C,/X4 ; X4X5X6X7 ORL C,00H ; 最终结果Y→C SJMP $ 例3-18 设累加器A的各位ACC.0~ACC.7分别记为X0~X7,编制程序用软件实现下式: * 3.7 子程序 当一段程序需多次应用,或为多人应用时,这段程序编为子程序。 子程序是构成单片机应用程序必不可少的部分,通过ACALL和LCALL两条子程序调用指令,可以十分方便地用来调用任何地址处的子程序。 子程序节省占用的存储单元,使程序简短、清晰,灵活地使用子程序,是程序设计的重要技巧之一。子程序必须以RET指令结尾。 在调用子程序时,有以下几点应注意: 1)保护现场:如果在调用前主程序已经使用了某些存储单元或寄存器,在调用时,这些寄存器和存储单元又有其他用途,就应先把这些单元或寄存器中的内容压入堆栈保护,调用完后再从堆栈中弹出以便加以恢复。如果有较多的寄存器要保护,应使主、子程序使用不同的寄存器组。 2)设置入口参数和出口参数:用之前主程序要按子程序的要求设置好地址单元或存储器(称为入口参数),以便子程序从指定的地址单元或存储器获得输入数据;子程序经运算或处理后的结果存放到指定的地址单元或寄存器(称为出口参数),主程序调用后从指定的地址单元或寄存器读取运算或处理后的结果。 3)子程序中可包括对另外子程序的调用,称为子程序嵌套。 * 例3-19 用程序实现c=a2+b2,设a,b均小于10。a存放在31H单元,b存放在32H单元,把c存入34H和33H单元。(和要求为BCD码)。 解:因该算式两次用到平方值,所以在程序中采用把求平方编为子程序的方法。求平方采用查表法,主程序和子程序编写如下: 主程序: ORG 0000H MOV SP,#3FH MOV A,31H ;取a LCALL SQR ;求a方 MOV R1,A MOV A,32H ;取b LCALL SQR ; 求b方 ADD A,R1 ; 求和 DA A ;调整 MOV 33H,A MOV A,#0 ADDC A,#0 MOV 34H,A SJMP $ 子程序: ORG 0030H SQR:INC A MOVC A,@A+PC RET TAB:DB 00H,01H,04H DB 09H 16H,25H, DB 36H,49H,64H,81H END 0035h 0033h 0031h 04 01 0034h 00 22 0032h 83 04 0030h 09 0037h 16.. 0036h 十六进制表 * 3.8 小 结 1、程序设计的关键在于指令

文档评论(0)

lyxbb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档