




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
范例 58 EQU DPOINT 100 DATA BLOCK from 100 to 22b CRCST LDI R16 2 最末 2 字节在发送方已清为零 或仍为 0D 0A MOV R11 R16 在接收方则为对方计算出的 CRC 校验码 余式 LDI R16 2C MOV R12 R16 r11r12 内装入 22C 块长为 12C CRCST1 LDI R26 HIGH DPOINT LDI R27 LOW DPOINT 数据指针 CRC0 CLR R14 CLR R15 LDI R17 80 16 15 2 LDI R18 05 P X X X X 1 18005 CRC1 LDI R16 8 MOV R13 R16 8 位 字节 LD R16 X CRC2 LSL R16 ROL R15 ROL R14 BRCC CRC3 EOR R14 R17 EOR R15 R18 移出位为 1 时 将寄存器 r14r15 内容异或立即数 8005 CRC3 DEC R13 位数减 1 BRNE CRC2 DEC R12 字节数减 1 BRNE CRC1 DEC R11 BRNE CRC1 ST X R15 ST X R14 除得余数放在数据块尾部 或将原始数据恢复 RET 范例 58A DS18B20 读出温度数据 CRC 检测子程序 生成多项式为 P X X8 X4 X3 1 CRCSTA LDI XL 70 温度数据指针 CLR XH LDI R16 9 温度数据 上 下限 CRC 校验码等共 9 字节 CLR R15 异或除法工作单元 LDI R18 8C CRC1A LD R14 X LDI R17 8 CRC2A LSR R14 ROR R15 位序列右移 BRCC CRC3A EOR R15 R18 移出位为 1 时 位序列异或立即数 8C CRC3A DEC R17 BRNE CRC2A 右移次数减 1 DEC R16 BRNE CRC1A 块长减 1 RET R15 0 接收正确 范例 59 DEMCRC LDI R27 1 CRC 演示程序 校验码 16 位 CLR R26 数据块首地址为 100 DEMLP ST X R26 CPI R26 2A 在 100 229 中充入数据 BRNE DEMLP CPI R27 2 BRNE DEMLP 100 229 中充入 00 FF 和 00 29 CLR R16 ST X R16 ST X R16 22A 22B 两单元请除 将计算出余式 即 CRC 校验码 放在其中 RCALL CRCST 在发送方计算出 CRC 校验码 RETEST RCALL CRCST 在接收方做 CRC 检测 余式在 r14r15 OR R15 R14 r14r15 恢复为 0000 或恢复出原数据为正确接收 BRNE ERCRC HCRC RJMP HCRC ERCRC 出错处理 要求对方重发 RJMP RETEST 重新 CRC 检测 DSEG ORG 100 DPOINT BYTE 12C 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 00 00 码制转换 范例 60 地址 90 1 2 3 4 5 6 7 8 9 a b c d e f a0 ascii 码数据 P i A S x x x x x x k g EQU DPNT 90 the first ascii character addr DataPoint sit a0 weighing unit a1 a2 P1 P4 no a6 a7 ac ad max no ae af EQU TPTR b0 the first total total1 b0 b3 addr EQU CPTR C0 print char buffer addr EQU SREG 3F EQU SPH 3E EQU SPL 3D ACUM CLR R29 CLR R27 ASCII 码存放区为 90 9F LDI R26 90 LD R16 X CPI R16 50 P 打头方为有效 BRNE ACRT ADIW R26 2 指向 92 LD R16 X CPI R16 2C 是 BREQ DOP0 ACRT SET 非法数据 RET DOP0 LDI R17 4 LDI R26 99 设指针 寻找小数点 DOP1 LD R16 X CPI R16 2E BREQ DOP3 找到 DOP2 DEC R17 BRNE DOP1 DOP3 LDI R28 A0 小数点放入 A0 1 2 3 4 表示小数点后有 1 2 3 4 位数据 ST Y r17 0 表示无小数点 LDI R26 9E 指向质量单位 LD R17 X ST Y R17 LD R17 X ST Y R17 质量单位 kg t a1 a2 LDI R28 11 CLR R9 CLR R10 CLR R11 予请除 存放 BCD 码 LDI R26 9E F1 LD R16 X 减 1 后指向 9d CPI R16 2E 从低位到高位顺序将 ASCII 转为 BCD 两两合成 1 字节压缩 BCD 码 BREQ F1 遇到小数点跳过 F2 BRCS FEND 遇空格 等结束 SUBI R16 30 十进制数 ascii 变 bcd MOV R12 R16 ST Y R16 F3 LD R16 X CPI R16 2E BREQ F3 F4 BRCS FEND 小于 2E 转换结束 SUBI R16 30 SWAP R16 ADD R16 R12 ST Y R16 DEC R28 CPI R28 8 BRNE F1 FEND MOV R17 R9 OR R17 R10 OR R17 R11 BREQ ACRT 0 数据转出 RCALL CONV2 整数二翻十 r9r10r11 r13r14r15 MOV R5 R13 MOV R6 R14 MOV R7 R15 CLR R12 LDS R16 96 取数据符号 CPI R16 2d ASCII 码 BRNE F09 LDI R26 16 RCALL NEG4 负数取补 F09 LDI R26 91 指向数据序号 ASCII 码 LD R16 X SUBI R16 31 将 ASCII 码序号 31 34 变为 0 3 CPI R16 4 BRCC FRET 大于 3 为无效 MOV R9 R16 暂存 LSL R16 LSL R16 乘 4 LDI R26 B0 B0 为第一个累加和首地址 TPTR ADD R26 R16 得到实际首地址 LDI R16 4 LDI R28 16 数据指针 CLC LACM LD R17 X 取累加和一字节数据 LD R10 Y ADC R17 R10 ST X R17 DEC R16 BRNE LACM r12 13 14 15 加入累加和 LSL R9 序号乘 2 LDI R26 AE 指向最大累加次数 LDI R28 A6 指向第一个累加次数 ADD R28 R9 指向实际累加次数 LD R11 X LD R10 X 取最大累加次数 2 字节 LD R13 Y INC R13 实际累加次数增 1 ST Y R13 低位字节送回 LD R12 Y TST R13 BRNE F10 INC R12 低位字节增 1 后为 0 高位字节增 1 ST Y R12 F10 SUB R11 R13 SBC R10 R12 与最大累加次数相比较 BRCC F12 ST X R12 ST X R13 存最大累加次数 F12 MOV r15 r7 MOV r14 r6 MOV r13 r5 LDI R17 98 予设阶码 假定为 24 位整数 MOV R12 R17 F120 SBRC R13 7 RJMP F13 LSL R15 ROL R14 ROL R13 DEC R12 RJMP F120 F13 LDS R0 A0 取小数点位数 0 1 2 3 4 TST R0 BREQ F14 整数转 F130 RCALL G01 取浮点数 0 1 范例 70 RCALL FPMU 范例 65 DEC R0 BRNE F130 小数点位置决定乘几个 0 1 F14 LDS R16 96 CPI R16 2B 负数 BRNE F9 LDI R16 7F AND R13 R16 正数清除数符位 F9 CLT 合法数据出口 T 0 RET FRET SET 非法数据出口 T 1 RET NEG4 LDI R16 4 4 字节二进制数据求补 CLC NG4L CLR R17 LD R11 X X 1 指向最低位字节 SBC R17 R11 ST X R11 DEC R16 BRNE NG4L RET FLSPC LDI R26 C0 准备一行空格字符 为打印一行空格做准备 CLR R31 LDI R16 20 SPC FSLOP ST X R16 CPI r30 d0 BRNE FSLOP LDI R16 0D 0D D0 ST X R16 LDI R16 0A 0A D1 ST X R16 RET BRDT RCALL CONV1A 二翻十并将压缩 BCD 码转换为 ASCII 码 RCALL FLSPC LDI R28 A3 A1 A2 is the weighing unit CLR R29 取质量单位到打印数据存储区 LDI R26 D0 LD R16 Y ST X R16 g D0 1 LD R16 Y ST X R16 取质量单位 A1 ce 取小数点位置 A0 R10 LP59 LDI R28 15 LP60 LD R16 Y RCALL BTOA 低位 BCD 变为 ASCII 码 LD R16 Y RCALL BTOA0 高位 BCD 变为 ASCII 码 DEC R28 CPI R28 10 r11 12 13 14 15 都分解完毕 BRNE LP60 DL30H LDI R26 C5 BRTC DL300 数据为负 LDI R16 2D ST X R16 负数加 送入 C5 CLT 并清除负数标志 DL300 INC R26 LD R16 X CPI R16 30 BRCS DL300 去掉数据头无效的零 ASCII 码 30 DL301 CPI R16 30 BRNE DLRT 非零结束 INC R26 LD R16 X CPI R16 30 BRCS DLRT 小于 30 结束 质量单位 t CPI R16 3A BRCS DL302 大于 3A 结束 质量单位 kg DLRT RET DL302 DEC R26 LDI R16 20 无效零充以空格 ST X R16 LD R16 X RJMP DL301 BTOA0 SWAP R16 BTOA ANDI R16 15 SUBI R16 D0 加 30 变为 ASCII 码 ST X R16 DEC R26 DEC R10 BRNE BART LDI R16 2E 加入小数点 ASCII 码 ST X R16 DEC R26 BART RET PRAV LDI R17 4 打印 4 组平均数据 MOV R0 R17 DEC R0 PRV MOV R17 R0 LSL R17 LSL R17 组别序号之偏移量 LDI R26 B0 TOTAL1 首趾 ADD R26 R17 得到实际组别之首地址 LDI R28 16 将 TOTAL 取入 R12R13R14TOTAL 为零不打印 BRV1 BST R12 7 数符位送入 T BRTC BRV2 LDI R26 16 RCALL NEG4 负数求补 BRV2 MOV R26 R0 LSL R26 SUBI R26 A6 取本组累加和之累加次数 第一组从 A6 开始 LD R11 X LD R10 X RCALL DIV24 计算平均值 在 r13r14r15 中 CLR R7 MOV R8 R13 MOV R9 R14 MOV R10 R15 r11r12r13r14r15 r7r8r9r10 RCALL BRDT 二翻十 再将 BCD 码转为 ASCII 码 如为负数将 装入 c5 LDI R26 C5 LDI R16 56 V ST X R16 start from c4 LDI R16 41 A ST X R16 LDI R16 2C ST X R16 MOV R16 R0 i 1 2 3 4 SUBI R16 CF 加上 31 ST X R16 LDI R16 50 ST X R16 P RCALL PR1 打印一行 NBR DEC R0 BRNE PRV RET PRNO RCALL FLSPC 打印最大累加次数 整数 不加小数点 LDI R26 CD 存放 ASCII 码指针 LDI R28 AE 指向最大累加次数 LD R10 Y LD R9 Y 最大累加次数取到 R9R10 CLR R8 CLR R7 RCALL CONV1A 二进制数变为 BCD 码 BRN CLR R10 不加 RCALL LP59 转为 ASCII 码 LDI R26 C4 LDI R16 2E ST X R16 LDI R16 4F O ST X R16 LDI R16 4E ST X R16 N 加上 NO 后 RJMP PR1 打印 PRTL LDI R17 4 MOV R0 r17 取序号之偏移量 DEC R0 PRL MOV R17 R0 LSL R17 LSL R17 乘 4 累加和为 4 字节 CLR R27 LDI R26 B0 第一个累加和 TOTAL1 之首地址 ADD R26 R17 累加和之实际地址 CLR R15 LDI R28 11 BRL LD R16 X ST Y R16 OR R15 R16 CPI R28 7 BRNE BRL 累加和取到 r7r8r9r10 NINC TST R15 BREQ NBL 累加和为零 不打印 BST R7 7 BRTC BRTL1 LDI R26 11 RCALL NEG4 累加和为负数 取补 BRTL1 RCALL BRDT BCD 转为 ASCII LDI R26 C5 LDI R16 4C 加 L ST X R16 LDI R16 54 加 T ST X R16 LDI R16 2C ST X R16 加 MOV R16 R0 SUBI R16 CF i 1 2 3 4 加上 30 变为 ASCII 码 ST X R16 LDI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《开学第一课》观后感写作指导附范文
- 电瓶车上路知识培训总结课件
- 北京通州流管员考试题及答案
- Zotepine-d6-生命科学试剂-MCE
- 北大物理卓越考试试题及答案
- 康熙元年考试题目及答案
- 乐谱制作考试题及答案
- 电热保险丝知识培训内容课件
- 保定初中中考考试题型及答案
- 蚌埠市科目一考试试卷及答案
- 2025仓库保管员试题及答案
- 房地产样板间装饰工程重点难点及措施
- 康复科护理金点子
- 工地油库安全管理办法
- 全球治理转型-洞察及研究
- 高等数学课程教学中遇到的问题及解决对策
- (高清版)DB32∕T 4001-2025 公共机构能耗定额及计算方法
- 电力物资打包方案(3篇)
- 2025至2030中国味精行业发展趋势分析与未来投资战略咨询研究报告
- 保险执业登记管理制度
- 你的样子就是教育的样子-一位校长对教师行为规范的深度思考建议收藏
评论
0/150
提交评论