历史上的今天
返回首页

历史上的今天

今天是: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

推荐阅读

史海拾趣

铨力(ALLPOWER)公司的发展小趣事

铨力(ALLPOWER)公司成立于XXXX年,由一群热衷于绿色能源技术的创新者共同创立。公司初期专注于太阳能电源产品的研发和生产,凭借着对技术的深入研究和市场需求的敏锐洞察,很快在行业中崭露头角。通过不断的技术创新和产品优化,铨力逐渐在太阳能电源领域建立起自己的品牌地位。

Clever Little Box公司的发展小趣事

Clever Little Box公司成立于1964年,当时正值电子行业的蓬勃发展时期。创始人凭借对音频和电子技术的深厚理解,以及对市场的敏锐洞察,决定成立这家公司,专注于音频和电子组件的分销。创业初期,公司面临着资金短缺、市场竞争激烈等诸多挑战,但创始人凭借坚定的信念和不懈的努力,逐渐在市场中站稳了脚跟。

Calex Mfg Co Inc公司的发展小趣事

品质是Calex Mfg. Co., Inc.的生命线。公司始终坚持以品质为核心,从原材料采购到生产制造,再到产品出厂,每一个环节都严格把控。这种对品质的执着追求,使得公司的产品赢得了客户的信赖和好评。同时,公司还注重品牌建设,通过广告宣传和参展等方式,不断提升品牌知名度和影响力。

展恒电子(Broadic)公司的发展小趣事

2012年,展恒电子与FANSO(孚安特)签订战略合作协议,共同向智能电表厂家提供配套销售服务。这一合作不仅拓宽了展恒电子的销售渠道,也提升了公司在智能电表市场的影响力。此后,展恒电子继续与多家知名企业建立战略合作关系,通过资源共享和优势互补,实现了共赢发展。

强盛电子(AEC)公司的发展小趣事

随着环保意识的日益增强,AEC积极响应国家绿色发展的号召,将环保理念融入企业的日常运营中。公司投入大量资金进行环保技术的研发和应用,推动生产过程的绿色化、低碳化。同时,AEC还积极参与社会公益活动,为保护环境、促进可持续发展贡献了自己的力量。

力芯微(ETEK)公司的发展小趣事

随着下游电子产品的更新换代和手机的快速普及,力芯微公司敏锐地捕捉到了这一市场机遇。公司及时调整研发方向,推出一系列低压低功耗的电源类产品,成功进入手机市场。这一转型不仅使公司实现了业务的多元化,也为公司带来了新的增长点。

问答坊 | AI 解惑

如何从单片机将程序上传到电脑?

如何从单片机将程序上传到电脑?…

查看全部问答>

驱动程序编译错误,帮我看看是什么错误?

我的一个代码如下:         ......                 #include \"s2440.h\"         ......                 vo ...…

查看全部问答>

除法问题

请问进行两位16进制除法运算的实现代码是什么?急求!谢谢!…

查看全部问答>

IC破解

请问有那位高手可以把AT88SC153这个芯片的 程序破解出来…

查看全部问答>

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板子也收到了

我的AM3517板子也收到了,刚在迅雷下载了一个“VMWare 7.1.0.261024 绿色精简版.rar”,现正在下载ubuntu9.10正式版,等我把开发平台架设好了就开始分享我的学习心得,显示的问题我准备到淘宝上去淘一个HDMI转VGA或者DVI的转换线,15-18一条,我准 ...…

查看全部问答>

DMA中断模式,莫名其妙的问题..

最近在做个上下位机通讯的自定义协议,思路如下:    (1)通过状态机的方法分析数据包,提取需要的信息,这部分是采用【USART1中断接收模式】做的。    (2)分析数据包内固定位置的【数据长度】信 ...…

查看全部问答>

请教汇编指令EALLOW和EDIS的含义

#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文件。不然会出现下图的 ...…

查看全部问答>