- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
0102单片机原理及应用技术第5节 汇编语言程序的基本结构
3.5.4 子程序设计 HASC:MOV A,R0 ;取4位二进制数 ANL A,#0FH ;屏蔽掉高4位 PUSH ACC ;4位二进制数入栈 CLR C ;清进(借)位标志位 SUBB A,#0AH ;用借位标志位的状态判断该数 ; 是在在0~9之间还是A~F之间 POP ACC ;弹出原4位二进制数 JC LOOP ;借位位为1,跳转至LOOP ADD A,#07H ;借位位为0,该数在 ;A~F之间,加37H LOOP: ADD A,#30H ;该数在0~9之间,加30H MOV R2,A ;ASCII码存于R2 RET 3.5.4 子程序设计 【例】 【功能】双字节二进制数转换成BCD码 【分析】BCD码在计算机中又分为两种形式: 非压缩BCD码:1B放1位BCD码,适用于显示及输出 压缩的BCD码:1B放2位BCD码,适用于运算及存储 【入口参数】(R2、R3)=16位无符号二进制整数。 【出口参数】(R4、R5、R6)为转换完的压缩型BCD码 3.5.4 子程序设计 十进制数B及一个8位的二进制数的关系可以表示为: 只要依十进制运算法则,将 bi(i=7,6,……,1,0)按权相加,就可以得到对应的十进制数B。 3.5.4 子程序设计 DCDTH: MOV R7,#16 ;置计数初值 CLR A MOV R6,A MOV R5,A MOV R4,A LOOP : CLR C MOV A,R3 RLC A MOV R3,A ;R3左移1位并送回 MOV A,R2 RLC A MOV R2,A ;R2左移1位并送回 MOV A,R6 3.5.4 子程序设计 ADDC A,R6 DA A MOV R6,A ;(R6)乘2并调整后送回 MOV A,R5 ADDC A,R5 DA A MOV R5,A ;(R5)乘2并调整后送回 MOV A,R4 ADDC A,R4 DA A MOV R4,A ;(R4)乘2并调整后送回 DJNZ R7,LOOP RET 3.5.4 子程序设计 3. 滤波子程序 1) 中值滤波 中值滤波是对某一被测参数连续采样N次,把N次采样值按大小排列,取中间值为本次采样值。中值滤波能有效地克服偶然因素引起的波动或采样器不稳定引起的误码等脉冲干扰。 【例】 【功能】对采样值中值滤波。 【入口参数】SAMP为存放采样值的内存单元首地址,(R3)为采样值个数。 【出口参数】DATA为存放滤波值的内存单元地址。 3.5.4 子程序设计 SORT: DEC R3 ;设置外循环次数 MOV A,R3;保存外循环次数,计算中值地址 PUSH A LOP1: MOV A,R3;设置外循环次数 MOV R2,A MOV R0,#SAMP MOV R1,#SAMP+1 LOP2: MOV A,@R1 CLR C SUBB A,@R0;((R1))-((R0))→(A) JNC DONE ;((R1))≥((R0))不交换 MOV A, @R0;((R1))≤((R0))交换 XCH A, @R1 MOV @R0, A 3.5.4 子程序设计 DONE : INC R0 ;数据指针加1 INC R1 DJNZ R2,LOP2 D
文档评论(0)