📄 16位二进制转化为5位bcd的pic子程序.txt
字号:
; 16位二进制数转化为5 BCD码子程序;********************************************************************; Binary To BCD Conversion Routine; This routine converts a 16 Bit binary Number to a 5 Digit; BCD Number. This routine is useful since PIC16C55 & PIC16C57; have two 8 bit ports and one 4 bit port ( total of 5 BCD digits);; The 16 bit binary number is input in locations H_byte and; L_byte with the high byte in H_byte.; The 5 digit BCD number is returned in R0, R1 and R2 with R0; containing the MSD in its right most nibble.;; Performance :; Program Memory : 35; Clock Cycles : 885;;*******************************************************************;;count equ 16temp equ 17;H_byte equ 10L_byte equ 11R0 equ 12 ; RAM AssignmentsR1 equ 13R2 equ 14;;其它寄存器自己定义;B2_BCD bcf STATUS,0 ; clear the carry bit movlw D'16' movwf count clrf R0 clrf R1 clrf R2loop16 rlf L_byte rlf H_byte rlf R2 rlf R1 rlf R0; decfsz count goto adjDEC RETLW 0;adjDEC movlw R2 movwf FSR call adjBCD; movlw R1 movwf FSR call adjBCD; movlw R0 movwf FSR call adjBCD; goto loop16;adjBCD movlw 3 addwf 0,W movwf temp btfsc temp,3 ; test if result > 7 movwf 0 movlw 30 addwf 0,W movwf temp btfsc temp,7 ; test if result > 7 movwf 0 ; save as MSD RETLW 0;;********************************************************************; 测试程序(注意用法,16位BIN放在H_byte,L_byte;结果放在R0,R1,R2);*********************************************************************main movlw 0FF movwf H_byte movwf L_byte ; The 16 bit binary number = FFFF call B2_BCD ; After conversion the Decimal Number; ; in R0,R1,R2 = 06,55,35;self goto self ;如果不是测试程序,本句无用; org 1FF goto main; END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -