历史上的今天
今天是:2025年03月04日(星期二)
2020年03月04日 | PIC单片机的BCD码加法程序
2020-03-04 来源:elecfans
;******************* 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单片机的测试评估板设计
史海拾趣
|
WinCE5.0上如何编程设置任务栏"总在最前","自动隐藏","显示时间"的启用或停用? 如题,主要是想让任务栏不要总在最前,全屏程序. 并非想要直接ShowWindow(hTaskBarWnd, SW_HIDE)隐藏(这样打开\"最大化\"窗口时不能最大化,下面原来任务栏的地方是空白); 试过修改注册表并SendMessage(hTaskBarWnd, WM_COMMAND, 0x3EA, 0),实际并没 ...… 查看全部问答> |
|
例如 已经定义好了 #define U0IIR (*((volatile unsigned char *) 0xE000C008)) 和 #define U1IIR (*((volatile unsigned char *) 0xE00 ...… 查看全部问答> |
|
我的AM3517板子也收到了,刚在迅雷下载了一个“VMWare 7.1.0.261024 绿色精简版.rar”,现正在下载ubuntu9.10正式版,等我把开发平台架设好了就开始分享我的学习心得,显示的问题我准备到淘宝上去淘一个HDMI转VGA或者DVI的转换线,15-18一条,我准 ...… 查看全部问答> |
|
最近在做个上下位机通讯的自定义协议,思路如下: (1)通过状态机的方法分析数据包,提取需要的信息,这部分是采用【USART1中断接收模式】做的。 (2)分析数据包内固定位置的【数据长度】信 ...… 查看全部问答> |
|
#define EALLOW asm(\\" EALLOW\\" #define EDIS asm(\\" EDIS\\" #define ESTOP0 asm(\\" ESTOP0\\" 在上面定义的 指令中,不知道三个汇编指令的含义,还请高手赐教,谢谢!! ...… 查看全部问答> |
|
下载IAR for ARM 6.3(文档推荐的是v6.0以上的版本)---我以前用的是4.2的版本,到IAR的官网重新下载到了。 安装Manley MLink的驱动程序,这个我下载好,先在上传给大家,安装步骤请参考板子的资料FM3-Easy-Kit-manual.pdf文件。不然会出现下图的 ...… 查看全部问答> |




