历史上的今天
返回首页

历史上的今天

今天是:2024年12月12日(星期四)

正在发生

2019年12月12日 | PIC单片机的BIN码转BCD码

2019-12-12 来源:elecfans


;********************************************************************
;                  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      16
temp   equ      17
;
H_byte  equ     10
L_byte  equ     11
R0      equ     12              ; RAM Assignments
R1      equ     13
R2      equ     14
;
 include         "picreg.h"
;
B2_BCD  bcf     STATUS,0                ; clear the carry bit
 movlw   .16
 movwf   count
 clrf    R0
 clrf    R1
 clrf    R2
loop16  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
;
;********************************************************************
;               Test Program
;*********************************************************************
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

推荐阅读

史海拾趣

Dow-Key Microwave Corporation公司的发展小趣事

1945年,第二次世界大战结束后不久,Dow-Key Microwave Corporation在美国成立。公司创始人凭借对射频和微波技术的深刻理解和市场需求的敏锐洞察,决定专注于射频微波开关的制造。在初创阶段,公司面临资金短缺、技术挑战和市场接受度不高等问题。然而,创始人及其团队凭借不懈的努力和创新的精神,逐渐克服了这些困难,为公司的发展奠定了坚实的基础。

Allied Wire & Cable Inc公司的发展小趣事

随着公司业务的不断发展,Allied公司开始积极拓展产品线,逐渐涵盖了多种类型的电线电缆产品,满足了不同客户的需求。同时,公司还积极开拓新的市场领域,将产品推广至全国范围,并逐渐拓展至国际市场。通过不断的产品创新和市场拓展,Allied公司的业务规模逐渐扩大,市场份额也稳步提升。

HiRel Connectors Inc公司的发展小趣事
每个摄像头单独使用电源适配器供电,适用于小规模或分散安装的摄像头系统。
Dynawave Incorporated公司的发展小趣事

Dynawave Incorporated的创始人李明,是一位在电子行业有着丰富经验的工程师。他深知随着科技的发展,无线通信技术将成为未来发展的重要方向。因此,李明带领一支技术团队,夜以继日地研发新型无线通信技术。经过数月的努力,他们成功开发出了一种具有高效能、低能耗特点的无线传输技术,这一技术为Dynawave在行业中赢得了初步声誉。

Digital View公司的发展小趣事

随着数字化技术的不断进步和应用领域的不断扩大,Digital View公司也加快了数字化转型和升级的步伐。公司加大了对云计算、大数据、人工智能等前沿技术的研发和应用力度,推出了一系列智能化、数字化的产品和服务。这些产品和服务不仅提高了客户的运营效率和管理水平,还为公司带来了新的增长点。

Fillfactory Nv公司的发展小趣事

FIDELIX公司成立于1990年,是一家专注于存储芯片研发与销售的韩国企业。在公司成立初期,FIDELIX凭借对技术的深入研究和对市场的敏锐洞察,成功推出了多款性能优越的NAND FLASH(闪存)和SDR/DDR(单/双数率同步动态存储器)等存储芯片产品。这些产品不仅在韩国市场上获得了良好的口碑,同时也开始逐步进入国际市场。

随着技术的不断进步和市场的不断扩大,FIDELIX逐渐在韩国存储芯片领域崭露头角。公司不断投入研发资金,加强技术创新,努力提升产品的性能和品质。同时,FIDELIX也积极拓展销售渠道,与多家国内外知名厂商建立了合作关系,为公司的持续发展奠定了坚实的基础。

问答坊 | AI 解惑

监视电视系统防雷防护技术方案简介

一、 闭路监视电视系统简介:     CCTV系统结构:     电视监控系统(Closed Circuit Television,简称CCTV),一般由以下三部分组成:     前端部分:     主要由黑白(彩色)摄像机、镜头、云台、防 ...…

查看全部问答>

高人可以帮我看下我的这个拨码开关程序老有点小我问题,,十万火急

process(clk_a) VARIABLE cnt_a : std_logic_vector(7 downto 0):=\"11111111\"; begin   if (clk_a\'event and clk_a=\'1\') then    if cnt_a=\"11111111\" then     cnt_a:=d;     full_a…

查看全部问答>

Altium Designer 使用

Altium Designer 使用 —— 快速制作原理图封装当制作引脚数比较多的器件的原理图封装时,可以使用AD提供的“smart grid insert”功能快速制作原理图封装库。本文以制作K9F1G08为例,进行简单说明。K9F1G08的引脚分布如图1所示:1. 打开 excel ,按 ...…

查看全部问答>

新建一个wince 的mfc exe,怎么在对话框中添加一个ie控件,浏览一个url(本地页面),thanks

新建的时候,选择,WCE MFC appWizard[exe] ,然后再选择Dialog base, 怎么样在该Dialog上添加一个ie控件,然后去浏览一个本地url? thanks…

查看全部问答>

最新cadence(allegro)视频教程

本人从朋友那里得到一份cadence(allegro)视频教程15.5板本,是一个培训班的内部视频讲义,清晰度很高,很具体详细,是自学的好资料。如果您没时间看书或者想很快学会allegro的话就请联系:13783696474   或者QQ:20247125    ...…

查看全部问答>

新人报道

我是刚刚来到的新人,刚刚接触WINCE。现在跟老师做着一个项目,需要将一个PC上的一个写好的软件移植到wince6.0下面,平台在mini的6410上搭建,还需要搞好一个ccd摄像头的驱动(有可二次开发的开发包),想问问,如果要入门,那么我应该先看拿些书籍 ...…

查看全部问答>

f2812 SCI RS485 调试

1.最近我用sci调试RS485的时候遇到一个怪现象: 有时候(不是全部,重新加载程序的时候一般都是)cpu明明有数据发出来,SCIRX,SCITX波形正常,可是485驱动芯片出来的两线信号发不出来,示波器只能看到负半波.只要我把与其通信的人机界面的通讯口拔出来 ...…

查看全部问答>

proteus仿真出现问题

proteus仿真出现问题,如下图,不知怎么回事?…

查看全部问答>

时钟的触发时序执行时间?

最近在学习FPGA方面知识,对时钟触发有了了解,但有好多问题有些不明白。希望大虾解释 如: always(posedge CLK) begin //执行任务块 end 假如时钟的周期为50nS,占空比50%;所执行的任务块比较耗时间,超过50nS,而此时任务块尚未完全执行完 ...…

查看全部问答>

在PCB中设计WIFI时候注意事项

各位大神,在PCB中设计WIFI时候注意事项有哪些?你们有什么经验?…

查看全部问答>