;******************* Unsigned BCD AddiTIon ***************
;
; This rouTIne performs a 2 Digit Unsigned BCD AddiTIon
; It is assumed that the two BCD numbers to be added are in
; locaTIons Num_1 & Num_2. The result is the sum of Num_1+Num_2
; and is stored in location Num_2 and the overflow carry is returned
; in location Num_1
;
; Performance :
; Program Memory : 25
; Clock Cycles : 17 ( worst case )
;
;*******************************************************************;
;
Num_1 equ 8 ; Overflow flow carry overwrites Num_1
result equ 8
;
Num_2 equ 9 ; Num_2 + Num_1 overwrites Num_2
O_flow equ 9
;
;
include "picreg.h"
;
BCDAdd movf Num_1,W
clrf Num_1 ;clear num_1
addwf Num_2,1 ; do binary addition
btfsc STATUS,C ;< 256 then skip
goto inc_n1n2 ;else inc all
movlw 66 ;add 66
addwf Num_2,1 ;/
btfss STATUS,DC ;half carry?
goto sub_06 ;no then subtract
btfss STATUS,C ;full carry?
goto sub_60 ;yes then subtract
inc_n1 incf Num_1,1 ;inc it
retlw 0 ;clr w
sub_06 btfss STATUS,C ;full carry
goto sub_66 ;yes subtract 66
movlw 6 ;else subtract 6
goto sub_com ;do common
sub_66 movlw 66
sub_com subwf Num_2,1
retlw 0
sub_60 movlw 60
goto sub_com
inc_n1n2
movlw 66
addwf Num_2,1
goto inc_n1
;
;********************************************************************
; Test Program
;*********************************************************************
main movlw 99
movwf Num_1 ; Set Num_1 = 99 ( max BCD digit )
movlw 99
movwf Num_2 ; Set Num_2 = 99
;
call BCDAdd ; After addition, Num_2 = 98
; ; and Num_1 = 01 ( 99+99 = 198 -> max number )
;
self goto self
;
;
org 1FF
goto main
;
END
上一篇:基于PIC单片机的测试评估板设计
下一篇:PIC12F615 电平中断调试注意
设计资源 培训 开发板 精华推荐
- 2019年电赛D题-简易电路特性测试-设计方案及报告(国一,南京大学)
- 借助这款用于 LTC3440 的高效单电感器同步降压-升压稳压器,可以更轻松地将锂离子电池电压转换为 3.3V
- 具有负极性 LCD 对比度的 LT1184FCS 90% 高效接地 CCFL 配置的典型应用电路
- 具有错误标志的 TS39203 2A 超低压差稳压器的典型应用
- LT1021CCN8-5 具有全调整范围的精密电压基准的典型应用
- TAR5S42 点稳压器(低压差稳压器)的典型应用
- Tda7560H 4 X 45W 四桥车载收音机放大器加 Hsd 的典型应用
- 物联网弹幕器
- 用于仪表的 3 至 18V 模拟放大
- LM217L 电流调节器的典型应用