- 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.7】 将一个字节内的两个BCD十进制数拆开并变成相应的ASCII码,存入两个RAM单元。设两个BCD数已放在内部RAM的20H单元,变换后的ASCII码放在21H和22H单元并让高位十进制BCD数存放在21H单元。
MOV R0,#22H ;R0←22H
MOV @R0,#00H ;22H清零
MOV A,20H ;两个BCD数送A
XCHD A,@R0 ;低位BCD数送至22H单元
ORL 22H,#30H ;完成低位转换
SWAP A ;高位BCD放至低 4位
ORL A,#30H ;完成高位转换
MOV 21H,A ;存数
RET
【例4.8】 16位二进制数求补程序。设16位二进制数存放在R1、R0,求补以后的结果则存放于R3、R2。
MOV A,R0 ;低8位送A
CPL A ;取反
ADD A,#1 ;加1
MOV R2,A ;送回
MOV A,R1 ;高8位送A
XRL A,#7FH ;符号位不变,其余位取反
ADDC A,#0 ;加进位
MOV R3,A ;结果送回
RET
【例4.9】 将十六进制数转换为ASCII码。设十六进制数存放在R0寄存器的低4位,转换后的ASCII码仍送回R0寄存器。
MOV A,R0
ANL A,#0FH
MOV DPTR, #ASCTAB
MOVC A,@A+DPTR
MOV R0,A
RET
ASCTAB: DB 0,1,2,3,4
DB 5,6,7,8,9
DB A,B,C,D,E,F
END
【例4.10】 按下式的要求给Y赋值。
ORG 1000H
X DATA 30H
Y DATA 31H
MOV A ,X ;A ← X
JNB ACC.7 ,PLUS ;若X0,则转PLUS
MOV A ,# 0FFH ;若X0,则Y=-1
SJMP DONE
PLUS: MOV A ,# 01H ;若X0,则Y = 1
DONE: MOVE Y ,A ;存函数值
SJMP $
END
【例4.11】 按照下式的要求给Y赋值。
ORG 0000H
X DATA 30H
Y DATA 31H
MOV A , X ;A ← X
MOV R0 , #0FFH ;先设X0,R0 = FFH
JB ACC.7 ,DONE ;若X0,则转DONE
MOV R0, #0
JZ DONE
MOV R0 ,# 01H ;若X0,R0=1
PLUS: MOV R0 ,# 01H ;若X0,则Y = 1
DONE: MOV Y ,R0 ;存函数值
SJMP $
END
【例4.12】 128分支程序。根据R3的值(00H-7FH),分支到128个不同的分支入口。
MOV A,R3 ;取地址序号送A
RL A ;A←A×2
MOV DPTR,#BRTAB ;地址表首地址送DPTR
JMP @A+DPTR ;转入转移表内
BRTAB: AJMP ROUT00 ;地址表
AJMP ROUT01
┇
AJMP ROUT127
END
【例4.13】 编程根据R3(0~3)的值,转向相应的操作程序。
ORG 0000H
MOV A,R3
MOV DPTR, #ADTAB ;地址表首地址送DPTR
MOVC A, @A+DPTR ;偏移地址送A
MOV DPTR,#ROUT0 ;首地址送DPTR
JMP @A+DPTR ;转至序号对应的分支
ROUT0: ┇
SJMP DONE
ROUT1: ┇
SJMP DONE
ROUT2: ┇
SJMP DONE
ROUT3: ┇
DONE?: RET
ADTAB:DB 0,ROUT1-ROUT0,ROUT2-ROUT0,ROUT3-ROUT0
END
【例4.14】 编程根据R3的值,转向相应的操作程序。
ORG 0000H
MOV A,R3
RL A
MOV R1,A ;存2倍序号至R1
MOV
文档评论(0)