- 1、本文档共142页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 AT89C51单片机软件
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ·*· 数码转换程序 计算机中只能处理二进制数据,而实际应用中常用到其他进制的表示,如八进制、十进制、十六进制,为了用户读取方便,另还有字符形式等,所以需进行各种数码之间的转换。 计算机中的十进制数常用BCD码表示,一个字节存放一个BCD码称为非压缩BCD码;一个字节存放两个BCD码则称为压缩BCD码。 3.3.7 程序设计实例 ·*· 【例3.18】将8位二进制数转换为3位BCD码。 分析:8位二进制最多可表示到百位,故需3位BCD码表示。 如用3位压缩BCD码则需两个存储单元。 子程序名:B2BCD 入口参数:R0中存8位二进制数 出口参数:R1、R2存放转换后的BCD码,R2中存放高位。 使用资源:A、B、R0、R1、R2 ·*· 子程序如下: B2BCD:MOV B,#100 MOV A, R0 ;取待转换的二进制数 DIV AB ;除以100,商为百位 MOV R2 , A ;百位存入R2 MOV A, #10 XCH A , B DIV AB ; 余数除以10,A中商为十位, ;B中所得余数为个 位 SWAP A ;十位换到高4位 ADD A,B ;高、低各4位拼装成BCD码 MOV R1,A ;保存十位、个位结果 RET ·*· 运算类程序 AT89C51指令系统中,提供了单字节的加、减、乘、除,但实际应用中,常会碰到多字节的加、减、乘、除,及带符号数的运算,则需编程人员自己进行程序设计。 ·*· 【例3.19】 8位带符号整数的乘法子程序。 分析:先保存乘数的符号,对乘数绝对值进行相乘,然后求出乘积符号 (两乘数符号位相同时为正数,相异时为负数),最后根据符号位情况对绝对值乘积进行处理。 子程序名:MULF 入口参数:被乘数、乘数分别放R1、R0中 出口参数:积高8位存R3,低8位存R2中,积的符号存于可位寻址单元22H。 使用资源:A,B,PSW,20H,21H,22H,R1,R2,R3,R0 ·*· 子程序如下: MULF: PUSH PSW ;现场保护 PUSH ACC PUSH B MOV A,R1 ;取被乘数送入累加器A RLC A ;符号位送入CY MOV 20H,C ;存被乘数的符号 MOV A,R0 ;取乘数 RLC A ;符号位送入CY MOV 21H,C ;存乘数的符号 ANL C,/20H MOV 22H,C ;暂存到22H位 MOV C,20H ;取被乘数符号 ANL C,/21H ORL C,22H ;或运算 MOV 22H,C ;保存乘积符号 MOV A,R0 ;取乘数 JNB ACC.7,MUL1 ;乘数为正则转向MUL1 CPL A ;乘数为负则求补 INC A ·*· (续上) MUL1: MOV B,A ;乘数存入B MOV A,R1 ;取被乘数 JNB ACC.7,MUL2 ;被乘数为正则转向MUL2 CPL A ;被乘数为负则求补 INC A MUL2: MUL AB ;相乘 JNB 22H,MUL3 ;积为正则转向MUL3 CPL A ;积为负则求补 INC A MUL3: MOV R2,A ;存积的低8位 MOV A,B ;积的高8位送A JNB 22H,MUL4 ;积为正则转向MUL4 CPL A ;高8位取反 ADDC A,#00H ;加进位 MUL4: MOV R3,A ;保存积的高8位 POP B ;恢复现场 POP ACC POP PSW RET ;返回 ·*· 数据处理程序 实际应用中的数据处理包括对数据进行排序、查找、求极值、平均值、平方、开方等操作。 【例3.20】用冒泡法对片内RAM单元由40H开始连续存放的20个8位无符号数升序排列。 分析:冒泡法是非常经典的数据排序算法,是一个将相邻数互换的排序方法。 执行时将一个数与其后面每一个数进行比较,若数据的大小次序与要求的顺序不符,就将两数交换。比如要求升序排列,那么第一次冒泡最大的数就排到了最后,然后取第二个数,再“冒泡”一次
您可能关注的文档
- 第2课时 盐的化学性质 复分解反应.ppt
- 第3-2 供应过程业务的核算.pptx
- 第32课 水.ppt
- 第2讲发电厂动力工程概论.ppt
- 第3.1讲 工业数据通信和控制网络(数据链路层).ppt
- 第33讲 复数综合复习.doc
- 第33讲 空气(二)(39张ppt,含13中考真题).ppt
- 第2讲 常用元器件识别与检测及常用维修工具2.ppt
- 第3,4讲散热器采暖.ppt
- 第35课 专题三:常见气体的制取与净化、验证.ppt
- 中国消毒防腐行业发展前景及发展策略与投资风险研究报告2025-2028版.docx
- 中国健身器械行业发展分析及投资风险预测分析报告2025-2028版.docx
- 2025年中国半球网络摄像机数据监测报告.docx
- 2025年中国立杆式椭圆形灯箱数据监测报告.docx
- 2025年中国电缆大力钳数据监测报告.docx
- 2025年中国金刚长车针数据监测报告.docx
- 2025年中国血液循环泵行业市场调查、投资前景及策略咨询报告.docx
- 2025年中国文件盒行业投资前景及策略咨询研究报告.docx
- 2025年中国电子病历数据监测报告.docx
- 2025年中国汽车中央配电装置行业市场调查、投资前景及策略咨询报告.docx
最近下载
- 院感知识试题(附答案).docx VIP
- 分布式光伏电站屋顶租赁协议(标准范本).docx
- 高温防暑安全培训课件.pptx VIP
- 11SG534带水平段钢斜梯(45°)(OCR).pdf VIP
- 一升二数学《暑假作业》 每日一练.docx VIP
- 《商务-谈判》课程标准).doc VIP
- 对我国长距离浆体管道输送工程设计的思考-论文发表.PDF VIP
- 110(66)kV~500kV架空输电线路运行规范.ppt VIP
- 牛津译林版九年级上册英语Unit 1-Unit 8语法知识点复习提纲.pdf VIP
- 《GBT20001.3-2015标准编写规则第3部分:分类标准》(2025版)深度解析.pptx
文档评论(0)