历史上的今天
今天是: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
上一篇:如何选择PIC单片机的C编译器
史海拾趣
|
一、 闭路监视电视系统简介: 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 使用 —— 快速制作原理图封装当制作引脚数比较多的器件的原理图封装时,可以使用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)视频教程15.5板本,是一个培训班的内部视频讲义,清晰度很高,很具体详细,是自学的好资料。如果您没时间看书或者想很快学会allegro的话就请联系:13783696474 或者QQ:20247125 ...… 查看全部问答> |
|
1.最近我用sci调试RS485的时候遇到一个怪现象: 有时候(不是全部,重新加载程序的时候一般都是)cpu明明有数据发出来,SCIRX,SCITX波形正常,可是485驱动芯片出来的两线信号发不出来,示波器只能看到负半波.只要我把与其通信的人机界面的通讯口拔出来 ...… 查看全部问答> |
|
最近在学习FPGA方面知识,对时钟触发有了了解,但有好多问题有些不明白。希望大虾解释 如: always(posedge CLK) begin //执行任务块 end 假如时钟的周期为50nS,占空比50%;所执行的任务块比较耗时间,超过50nS,而此时任务块尚未完全执行完 ...… 查看全部问答> |




