- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.8.2 查表程序 MCS-51指令系统给用户提供了两条查表指令: (1)MOVC A,@A+PC (2)MOVC A,@A+DPTR 1、查表指令“MOVC A,@A+PC”的使用 指令“MOVC A,@A+PC”的优点是预处理较少且不影响其它特殊功能寄存器的值,所以不必保护其它特殊功能寄存器的原先值;缺点在于该表格只能存放在这条指令的地址以下的00~FFH之中。表格所在的程序空间受到了限制。 【例】根据累加器A中存放一个0~9之间的数,查出相应的7段码。 地 址子程序 AddrADD A,#01H Addr +2MOVC A,@A+PC Addr +3RET Addr +4DB 3FH,06H,5BH,4FH,66H;共阴极DB 6DH,7DH,07H,7FH,6FH;段码表 偏移量 = 表首地址-(查表指令所在的地址+1) 上例中,表首地址为Addr +4,所以偏移量 = Addr +4-(Addr +2+1)=1,所以,在使用查表指令MOVC A,@A+PC前,执行指令ADD A,#01H。 指令“MOVC A,@A+DPTR”的应用范围更为广泛,一般情况下,大多数使用该指令。使用该指令时不必计算偏移量。该指令的优点是表格可以设在程序存储器空间的任何地方。 前例的程序可改为: PUSH DPH PUSH DPL MOV DPTR ,#TABL MOVC A ,@A+DPTR POP DPL POP DPH RET TABL:DB 3FH,06H,5BH,4FH,66H;共阴极DB 6DH,7DH,07H,7FH,6FH;段码表 2、查表指令“MOVC A,@A+DPTR”的使用 在单片机应用程序的设计中,经常涉及各种码制的转换问题。比如:在单片机系统内部进行数据计算和存储时,经常采用二进制码。在输入输出中,按照人们习惯均采用代表十进制数的BCD码(用4位二进制数表示的十进制数)。此外,打印机要打印某数字字符,则需要将该数字的二进制码转换为该字符的ASCII码,才能送到打印机去打印。 ? 【例】把三位BCD码转换为二进制数,设3位BCD码最大为255。 分析:BCD码的百位数表示其中包含100的个数,十位数表示包含10的个数。所以可以用BCD码的百位数控制加100的次数,十位数控制加深10的次数,然后再加上BCD码的个位数,就可得到相应的二进制数。 设BCD码的存储单元地址为FIRST,且低位在先,高位在后,结果的存储单元地址为SECOND。 5.8.3 码制转换程序 参考程序: FIRSTEQU 08H;设(09H)=02H,(08H)=53H SECONDEQU 70H;结果253,存放在70H单元ORG 0000H AABB: MOV DPTR,#FIRST;置初值MOVX A,@DPTRMOV R1,AINC DPTRMOVX A,@DPTRMOV R0,AMOV A,#00HCJNE R0,#00H,LOOP1 ;非零转移,作加法SJMP LOOP2;零转移,不作加法 LOOP1: ADD A,#100DJNZ R0,LOOP1 LOOP2: MOVR2,A ;存中间结果MOV A,R1ANL A,#0F0HSWAP AMOV R0,AMOV A,R2CJNE R0,#00H,LOOP3 ;非零转移作加法SJMP LOOP4;为零转移不作加法 LOOP3: ADD A,#10DJNZR0,LOOP3 LOOP4: MOVR2,A ;存中间结果MOVA,R1ANL A,#0FHADD A,R2 ;加个位数MOVDPTR,#SECOND ;存结果MOVX @DPTR,ASJMP$END 方案一:先得到百位 程序清单: BIN2BCD: MOV A,30H MOV B,#100 DIV AB MOV 31H,A MOV A,B MOV B,#10 DIV AB MOV 32H,A MOV 33H,B RET 方案二:先得到个位 程序清单: BIN2BCD_1: MOV A,30H MOV B,#10 DIV AB MOV 33H,B MOV B,#10 DIV AB MOV 32H,B MOV 31H,A RET 【例5-15】将放在内部RAM 30H单元的二进制整数转换为十进制BCD码,并将结果放入31H(百位)、32H(十位)、33H(个位)单元。 【例】假设有下列逻辑方程:此方程可用硬件实
您可能关注的文档
最近下载
- 信息处理技术员教程(第三版)第10章 计算机网络与互联网.pptx VIP
- [超分子化学与晶体工程基础]-晶体结构分析.pptx VIP
- 《中国心力衰竭诊断和治疗指南2024》解读.pptx VIP
- 中级宏观经济学知到课后答案智慧树章节测试答案2025年春浙江大学.docx VIP
- 2025-2026学年小学科学四年级上册粤教粤科版(2024)教学设计合集.docx
- [超分子化学与晶体工程基础]-超分子化学.pptx VIP
- 2013款上汽通用雪佛兰赛欧_汽车使用手册用户操作图解驾驶指南车主车辆说明书电子版.pdf
- E+H200涡街流量计说明书.pdf VIP
- 20_WD_2021001981_大坝安全监测系统验收规范.pdf VIP
- 信息处理技术员教程(第三版)第9章 数据库应用基础知识.pptx VIP
文档评论(0)