Mege16 AVR单片机实现中的BCD码转换与运算

发布者:omicron25最新更新时间:2016-10-22 来源: eefocus关键字:Mege16  AVR单片机  BCD码转换 手机看文章 扫描二维码
随时随地手机看文章
.include "m16def.inc"

.org $0000
rjmp RESET


;***以下是16位2进制(fbinH:fbinL)码转换成BCD码(tBCD2:tBCD1:tBCD0)程序***
.equ AtBCD0 =13  ;address of tBCD0
.equ AtBCD2 =15  ;address of tBCD1

.def tBCD0 =r13  ;BCD value digits 1 and 0
.def tBCD1 =r14  ;BCD value digits 3 and 2
.def tBCD2 =r15  ;BCD value digit 4
.def fbinL =r16  ;binary value Low byte
.def fbinH =r17  ;binary value High byte
.def cnt16a =r18  ;loop counter
.def tmp16a =r19  ;temporary value
bin2BCD16:
 ldi cnt16a,16 ;Init loop counter 
 clr tBCD2  ;clear result (3 bytes)
 clr tBCD1  
 clr tBCD0  
 clr ZH  ;clear ZH (not needed for AT90Sxx0x)
bBCDx_1:lsl fbinL  ;shift input value
 rol fbinH  ;through all bytes
 rol tBCD0  ;
 rol tBCD1
 rol tBCD2
 dec cnt16a  ;decrement loop counter
 brne bBCDx_2  ;if counter not zero
 ret   ;   return
bBCDx_2:ldi r30,AtBCD2+1 ;Z points to result MSB + 1
bBCDx_3:
 ld tmp16a,-Z ;get (Z) with pre-decrement
subi tmp16a,-$03 ;add 0x03
 sbrc tmp16a,3 ;if bit 3 not clear
 st Z,tmp16a ; store back
 ld tmp16a,Z ;get (Z)
 subi tmp16a,-$30 ;add 0x30
 sbrc tmp16a,7 ;if bit 7 not clear
 st Z,tmp16a ; store back
 cpi ZL,AtBCD0 ;done all three?
 brne bBCDx_3  ;loop again if not
 rjmp bBCDx_1
 
  
;***8位2进制(fbin)转换成BCD码(tBCDH:tBCDL)程序***
.def fbin =r16  ;8-bit binary value
.def tBCDL =r16  ;BCD result MSD
.def tBCDH =r17  ;BCD result LSD
bin2bcd8:
 clr tBCDH  ;clear result MSD
bBCD8_1:subi fbin,10  ;input = input - 10
 brcs bBCD8_2  ;abort if carry set
 inc tBCDH  ;inc MSD
 rjmp bBCD8_1  ;loop again
bBCD8_2:subi fbin,-10 ;compensate extra subtraction
ret


;***BCD码(fBCD2:fBCD1:fBCD0)转换成16位2进制(tbinH:tbinL)程序***
.def copyL =r12  ;temporary register
.def copyH =r13  ;temporary register
.def mp10L =r14  :Low byte of number to be multiplied by 10
.def mp10H =r15  ;High byte of number to be multiplied by 10
.def adder =r19  ;value to add after multiplication 
mul10a: ;***** multiplies "mp10H:mp10L" with 10 and adds "adder" high nibble 
 swap adder
mul10b: ;***** multiplies "mp10H:mp10L" with 10 and adds "adder" low nibble 
 mov copyL,mp10L ;make copy
 mov copyH,mp10H
 lsl mp10L  ;multiply original by 2
 rol mp10H
 lsl copyL  ;multiply copy by 2
 rol copyH  
 lsl copyL  ;multiply copy by 2 (4)
 rol copyH  
 lsl copyL  ;multiply copy by 2 (8)
 rol copyH  
 add mp10L,copyL ;add copy to original
 adc mp10H,copyH 
 andi adder,0x0f ;mask away upper nibble of adder
 add mp10L,adder ;add lower nibble of adder
 brcc m10_1  ;if carry not cleared
 inc mp10H  ; inc high byte
m10_1: ret 


;*********************************************************
.def tbinL =r14  ;Low byte of binary result (same as mp10L)
.def tbinH =r15  ;High byte of binary result (same as mp10H)
.def fBCD0 =r16  ;BCD value digits 1 and 0
.def fBCD1 =r17  ;BCD value digits 2 and 3
.def fBCD2 =r18  ;BCD value digit 5
BCD2bin16:
 andi fBCD2,0x0f ;mask away upper nibble of fBCD2
 clr mp10H  
 mov mp10L,fBCD2 ;mp10H:mp10L = a
 mov adder,fBCD1
 rcall mu

关键字:Mege16  AVR单片机  BCD码转换 引用地址:Mege16 AVR单片机实现中的BCD码转换与运算

上一篇:如何设定的AVR Mega16 片内RC振荡器工作频率
下一篇:AVR查询方式 A/D 转换测试程序

推荐阅读最新更新时间:2024-03-16 15:16

AVR单片机8位数码管显示的程序实现(两种方法介绍)
本文为大家介绍两个AVR单片机8位数码管显示的程序实现。 AVR单片机595驱动8位数码管的显示的电路实现 主程序代码 #include #include //GCC中的延时函数头文件 #include “hc595.h” //unsigned char Led_Disbuf[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //共阴极 unsigned char Led_Disbuf[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //共阳极 unsigned char ComBuf[8] = {0
[单片机]
<font color='red'>AVR单片机</font>8位数码管显示的程序实现(两种方法介绍)
基于AVR单片机USART与PC机的串行通信
PC机发送字符给单片机控制发光管亮,同时将其传回PC机,其中单片机的发送和接收都采用查询方式 1、USART的主要特点 通用同步和异步串行接收器和转发器(USART) 是一个高度灵活的串行通讯设备。主要特点为: 全双工操作( 独立的串行接收和发送寄存器) 异步或同步操作 主机或从机提供时钟的同步操作 高精度的波特率发生器 支持5, 6, 7, 8, 或9 个数据位和1 个或2 个停止位 支持的奇偶校验操作 数据过速检测? 帧错误检测 噪声滤波,包括错误的起始位检测,以及数字低通滤波器 三个独立的中断:发送结束中断, 发送数据寄存器空中断,以及接收结束中断 多处理器通讯模式 倍速异步通讯模式 2、异步串行收发器 USART
[单片机]
基于<font color='red'>AVR单片机</font>USART与PC机的串行通信
AVR单片机的多协议读写器的设计
引言 射频识别(RFID)是利用无线方式对电子数据载体(电子标签)进行识别的一种新兴技术。与接触式IC卡和条形码识别等系统比较,它有着巨大的优势。利用射频识别技术,能有效实现对数量大、分布区域广的信息进行智能化管理,达到高效快捷运作的目的,特别是在第二代身份证、物流、交通航运、自动收费、超市、门禁系统管理、服务领域等方面有着广泛的应用前景。随着我国国民经济的快速发展,国内RFID行业也正经历着深刻的变革。 RFID系统一般是由读写器、射频卡、应用软件来组成。其中读写器的设计是至关重要的,它决定了系统的稳定性和准确性。 除了要求其能支持一系列协议、标准和收发器外,对读写器可能还有其它功能性方面的要求,如高性能、防冲突、远/近感应距离
[单片机]
于<font color='red'>AVR单片机</font>的多协议读写器的设计
AVR单片机定时器TIME0普通定时实验程序
/*很简单的问题费了好大的劲,注意中断向量地址和向量号的区别,*/ /*这样的是时钟节拍可以搞到微秒级的,太好了这样对以后搞操作系统是很管用的,节拍直接影响CPU的利用效率*/ /*节拍器越小,时间片就越准确,对于整个系统的统一是绝对有意义的,*/ /*AVR定时器普通定时实验 0415 天津第四项目部宿舍 */ #include iom16v.h #define uchar unsigned char #define uint unsigned int #define set_bit(a,b) a|=(1 b) #define clr_bit(a,b) a&=(1 b) #define get_bit(a,b) a&(
[单片机]
关于AVR单片机的ADC使用
端口设置,设置为无上拉输入,下面是手册里的一段话 不论是否用作ADC的输入通道,输入到ADCn的模拟信号都受到引脚电容及输入泄露的影响。用作ADC的输入通道时,模拟信号源必须通过一个串联电阻 ( 输入通道的组合电阻 ) 驱动采样保持 (S/H) 电容。ADC针对那些输出阻抗接近于10 k Ω 或更小的模拟信号做了优化。对于这样的信号采样时间可以忽略不计。若信号具有更高的阻抗,那么采样时间就取决于对S/H 电容充电的时间。这个时间可能变化很大。建议用户使用输出阻抗低且变化缓慢的模拟信号,因为这可以减少对S/H 电容的电荷传输。 频率高于奈奎斯特频率(fADC/2) 的信号源不能用于任何一个通道,这样可以避免不可预知的信号卷积造成
[单片机]
avr单片机USART串口通讯初始化配置说明
avr atmega16 单片机通用同步和异步串行接收器和转发器 (USART) 是一个高度灵活的串行通讯设备,其工作模式及其初始化,寄存器说明如下 *USART 控制和状态寄存器A(UCSRA) USART 控制和状态寄存器A(UCSRA) bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 RXC TXC UDRE FE DOR PE U2X MPCM RXC: USART 接收结束 接收缓冲器中有未读出的数据时RXC 置位,否则清零。接收器禁止时,接收缓冲器被刷 新,导致RX
[单片机]
AVR单片机定时计数器学习笔记分享
  定时计数器的结构与应用定时计数器(Timer/Counter)常用于计数、延时、测量 周期、频率、脉宽、提供定时脉冲信号等。在实际应用中,对于转速,位移、速度、流量等物理量的 测量,通常也是由传感器转换成脉冲电信号,通过使用定时计 数器来测量其周期或频率,再经过计算处理获得。   AVR的定时计数器接口功能: 通过定时计数器与比较匹配寄存器相互配合,生成占空比 可变的方波信号,即脉冲宽度调制输出PWM信号,可用于 D/A、马达无级调速控制、变频控制等。本文主要介绍的是AVR单片机定时/计数器学习笔记,具体的跟随小编来了解下。      AVR单片机定时/计数器学习笔记   定时/计数器1(16位)有普通模式、CTC模式、
[单片机]
<font color='red'>AVR单片机</font>定时计数器学习笔记分享
AVR单片机万年历程序
AVR 单片机 万年历程序 //***************************FileName:RTC.C************************// //***************************I CC AVR V6.30编译**********************// #include io8535v.h //寄存器定义文件 #include macros.h //使用到宏 #define uchar unsigned char //数据类型定义 #define uint unsigned char //数据类型定义 #d
[单片机]
<font color='red'>AVR单片机</font>万年历程序
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved