|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
我写的32为二进制码转10位BCD码的汇编子程序! |
作者:hujiahua 栏目:单片机 |
调用一次要2千多个指令周期。 第一次用AVR,芯片是ATMEGA8L-8PI,大家交流一下,欢迎拍砖! .equ bin4_0 =$20c ; LSB .equ bin4_1 =$20d .equ bin4_2 =$20e .equ bin4_3 =$20f ; MSB .equ bcd10_0 =$210 ; LSB .equ bcd10_1 =$211 .equ bcd10_2 =$212 .equ bcd10_3 =$213 .equ bcd10_4 =$214 .equ bcd10_5 =$215 .equ bcd10_6 =$216 .equ bcd10_7 =$217 .equ bcd10_8 =$218 .equ bcd10_9 =$219 ; MSB ;****************************************************** ; function: bin2bcd32 ; input: bin4_0, bin4_1, bin4_2, bin4_3 ; OUTPUT: bcd10_0, bcd10_1, bcd10_2, bcd10_3, bcd10_4 ; OUTPUT: bcd10_5, bcd10_6, bcd10_7, bcd10_8, bcd10_9 ;****************************************************** bin2bcd32: PUSH r16 PUSH r17 PUSH XL PUSH XH PUSH YL PUSH YH PUSH ZL PUSH ZH ldi XL, bcd10_0 ldi XH, bcd10_0>>8 clr r16 st X+, r16 ; 0 st X+, r16 ; 1 st X+, r16 ; 2 st X+, r16 ; 3 st X+, r16 ; 4 st X+, r16 ; 5 st X+, r16 ; 6 st X+, r16 ; 7 st X+, r16 ; 8 st X+, r16 ; 9 ldi XL, bin4_3+1 ldi XH, (bin4_3+1)>>8 bit31: ld r16, -X sbrs r16, 7 rjmp bit30 ldi ZL, bin2bcd_bit31<<1 ldi ZH, (bin2bcd_bit31)>>7 rcall add_bcd_10 bit30: sbrs r16, 6 rjmp bit29 ldi ZL, bin2bcd_bit30<<1 ldi ZH, (bin2bcd_bit30)>>7 rcall add_bcd_10 bit29: sbrs r16, 5 rjmp bit28 ldi ZL, bin2bcd_bit29<<1 ldi ZH, (bin2bcd_bit29)>>7 rcall add_bcd_10 bit28: sbrs r16, 4 rjmp bit27 ldi ZL, bin2bcd_bit28<<1 ldi ZH, (bin2bcd_bit28)>>7 rcall add_bcd_10 bit27: sbrs r16, 3 rjmp bit26 ldi ZL, bin2bcd_bit27<<1 ldi&nb |
2楼: | >>参与讨论 |
作者: 宇宙飞船 于 2004/10/7 19:57:00 发布:
二进制转BCD码的主要是算法,没有什么好说! 看这种代码会浪费我很多时间!知道算法的话这东西是很简单的。我没兴趣看代码。 这等于1+1=2的道理这么简单。 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |