- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章程序设计的基本技术 .ppt
第4章 程序设计的基本技术 ;;例3-1将内部RAM40H单元中的一压缩BCD数转换为
二进制数存入内部RAM41H,算法X=10D1+D0
MOV A,40H
SWAP A
ANL A,#0FH ;取十位
MOV B,#10
MUL AB
MOV B,A ;乘10暂存B
MOV A,40H
ANL A,#0FH ;取个位
ADD A,B
MOV 41H,A; ;例:求双字节补码。
设在内部RAM的30H和31H单元存有一个双字节无符号数(高位字节存于高地址单元)。编写程序求其对应负数的补码存入32H和33H单元。
START: MOV A,30H ;
CPL A ;取反
ADD A,#1 ;末位加一
MOV 32H,A
MOV A,31H
CPL A ;高字节取反 ADDC A,#0
MOV 33H,A
;4.1.2 分支程序;
一、单分支程序
;例3-10 内部RAM 40H,41H单元存有无符号数,比较大小,大数存60H,小数存61H
MOV A,40H
CJNE A,41H,$+3
JNC NEXT
XCH A,41H
NEXT:MOV 60H,A
MOV 61H,41H;二、双分支程序
;例3-8设补码数X在内部RAM30H单元中;
Y放内部RAM40H单元中
MOV A,30H
JZ ZERO
JNB ACC.7,PLUS
ADD A,#5
MOV 40H,A
SJMP END1
PLUS: MOV 40H,30H
SJMP END1
ZERO:MOV 40H,#20H
END1: SJMP $;三、多分支程序
例3-9 根据R3的内容转向相应的处理程序。
设R3的内容为0~N,对应的处理程序的入口地址分别为
BR0~BRN。
MOV DPTR,#BRTAB;置分支入口地址表首址
MOV A,R3 ;分支转移序号送A
ADD A,R3 ;分支转移序号乘以2
JNC NADD
INC DPH
NADD: MOV B,A ;暂存于B
MOVC A,@A+DPTR ;取高位地
XCH A,B
INC A
MOVC A,@A+DPTR ;取低位地址 ; MOV DPL,A
MOV DPH,B
CLR A
JMP @A+DPTR
BRTAB: DW BR0,BR1,BR2
BR0: MOV A,R0
SJMP $
BR1: CPL A
SJMP $
BR2: ANL A,#0FH
SJMP $
END;4.1.3 循环程序;一、计数控制的循环程序; ADD A,R6
MOV R6,A;R6R7*10
MOV A,R7
ADD A,@R0
MOV R7,A
MOV A,R6
ADDC A,#0
MOV R6,A
INC R0
DJNZ R5,LOOP;二、条件控制的循环程序;三、双重控制的循环程序;四、多重循环程序;PAO: MOV R7,#19
LOOP1:MOV A,R7
MOV R2,A
MOV R0,#33H
LOOP: MOV A,@R0
DEC R0
MOV 50H,@R0
CJNE A,50H,$+3
;例 50ms延时程序。
若晶振频率为12MHz,则一个机器周期为1μs。采用循环计数法实现延时,程序???如下:
DEL: MOV R7,#200 ;1 μs
DEL1: MOV R6,#123 ;1 μs
NOP ;1 μs
DEL2: DJNZ R6,DEL2 ;2μs,计(2×123)μs
DJNZ R7,DEL1 ;2μs,
RET ;2μs
共计 [(2×123+2+ 2)×200+3] μs,即50.003ms;4.3.4 子程序及其调用;二、现场保护与恢复
子程序要用到单片机的一些通用单元,如工作寄存器R0-R7、累加器A、数据指针DPTR,以及有关标志和状态等。这些单元中的内容在子程序调用结束后主程序仍有用,所以需要进行保护,称为现场保护。在执行完子程序,返回继续执行主程序前恢复其原内容,称为现场恢复。保护与恢复的方法有以下两种:
在主程序中实现;
在子程序中实现。; 1、在主程序中实现
示例如下:
PUSH PSW ;保护现场
PUS
文档评论(0)