技术支持Microchip产品专区Microchip产品应用技术 [分享]一些应用程序/算法/子程!!(供参考)

1  /  4  页   1234 跳转 查看:64484

[分享]一些应用程序/算法/子程!!(供参考)

[分享]一些应用程序/算法/子程!!(供参考)

双字节定点数至5位BCD码转换程序
    入口条件:ACCBHI、ACCBLO
    出口条件:ACCCHI低半字节、ACCCLO、ACCDHI
以下为双字节定点数至5位BCD码转换程序清单。
    LIST            p=16f877
    INCLUDE        p16f877.inc
    ACCBLO         EQU     23        ;存放被转换的双字节整数低8位
    ACCBHI         EQU     24        ;存放被转换的双字节整数高8位
    ACCCLO         EQU     26        ;存放5位BCD码
    ACCCHI         EQU     27
    ACCDLO         EQU     28
    ACCDHI         EQU     29
    TEMP         EQU     2A        ;临时寄存器
    SIGN         EQU     2B        ;被转换数符号寄存器
    ORG            0X0000
START    GOTO        MAIN
    ORG            0X0100
;**********双字节数至BCD码子程序************
BtoBCD    CLRF        SIGN            ;初始化符号寄存器
    BTFSS        ACCBHI,7    ;被转换数为负?
    GOTO        LOOP1        ;否,转BtoBCD
    BSF            SIGN,7        ;是,存符号
    CALL        NEG_B        ;ACCB取补
LOOP1    BCF             STATUS,C    ;清进位位
    MOVLW         .16            ;移位计数器赋初值
    MOVWF         COUNT
    CLRF         ACCCHI        ;初始化出口寄存器
    CLRF         ACCCLO
    CLRF         ACCDHI
LOOP16    RLF             ACCBLO        ;ACCB左移一位至出口寄存器
    RLF             ACCBHI
    RLF             ACCDHI
    RLF             ACCCLO
    RLF             ACCCHI
    DECFSZ         COUNT         ;移位计数器=0?
    GOTO         ADJDEC        ;否,转ADJDEC
    RETLW         0            ;是,返回
ADJDEC    MOVLW         ACCDHI        ;指针指向ACCDHI
    MOVWF         FSR
    CALL         ADJBCD        ;调用BCD码校正子程序
    MOVLW         ACCCLO        ;指针指向ACCCLO
    MOVWF         FSR
    CALL         ADJBCD        ;调用BCD码校正子程序   
    MOVLW         ACCCHI        ;指针指向ACCCHI
    MOVWF         FSR
    CALL         ADJBCD        ;调用BCD码校正子程序
    GOTO         LOOP16        ;ACCB重新左移
;************* BCD码校正子程序**************
ADJBCD     MOVLW         00X03        ;LSD+3>7?
    ADDWF         INDF,0
    MOVWF         TEMP
    BTFSC         TEMP,3
    MOVWF         INDF         ;是,LSD=LSD+3
    MOVLW         0X30            ;否,MSD+3>7?
    ADDWF         INDF,0
    MOVWF         TEMP
    BTFSC         TEMP,7
    MOVWF         INDF            ;是,MSD=MSD+3
    RETLW         0            ;返回
【校验举例1】 -23808(十进制)
化为十六进制数:A300
结果:023808(BCD),SIGN=80
【校验举例2】 12306(十进制)
化为十六进制数: 3012
结果:012306(BCD),SIGN=00
[em07][em08][em14]
-----------------------
+++++++++++++++++++++++
¤ ╱◥█◣^^ ╭⌒╮  
  ︱田︱田︱ぃ╭ ╭ ⌒╮
⿶⿶⿶⿶⿶ い⿶⿶⿶⿶⿶⿶⿶ 
╪╪╪╪╪╪╪╪╪╪╪╪⿶⿶⿶
 

re:程序设计时首先RAM的定义,可以采用块定...

-----------------------
+++++++++++++++++++++++
¤ ╱◥█◣^^ ╭⌒╮  
  ︱田︱田︱ぃ╭ ╭ ⌒╮
⿶⿶⿶⿶⿶ い⿶⿶⿶⿶⿶⿶⿶ 
╪╪╪╪╪╪╪╪╪╪╪╪⿶⿶⿶
 

TIME0应用的一点经验---赋初值!

-----------------------
+++++++++++++++++++++++
¤ ╱◥█◣^^ ╭⌒╮  
  ︱田︱田︱ぃ╭ ╭ ⌒╮
⿶⿶⿶⿶⿶ い⿶⿶⿶⿶⿶⿶⿶ 
╪╪╪╪╪╪╪╪╪╪╪╪⿶⿶⿶
 

浮点数加(减)法子程序

-----------------------
+++++++++++++++++++++++
¤ ╱◥█◣^^ ╭⌒╮  
  ︱田︱田︱ぃ╭ ╭ ⌒╮
⿶⿶⿶⿶⿶ い⿶⿶⿶⿶⿶⿶⿶ 
╪╪╪╪╪╪╪╪╪╪╪╪⿶⿶⿶
 

浮点数乘法子程序(供参考)

-----------------------
+++++++++++++++++++++++
¤ ╱◥█◣^^ ╭⌒╮  
  ︱田︱田︱ぃ╭ ╭ ⌒╮
⿶⿶⿶⿶⿶ い⿶⿶⿶⿶⿶⿶⿶ 
╪╪╪╪╪╪╪╪╪╪╪╪⿶⿶⿶
 

定点数转换成浮点数(供参考)

-----------------------
+++++++++++++++++++++++
¤ ╱◥█◣^^ ╭⌒╮  
  ︱田︱田︱ぃ╭ ╭ ⌒╮
⿶⿶⿶⿶⿶ い⿶⿶⿶⿶⿶⿶⿶ 
╪╪╪╪╪╪╪╪╪╪╪╪⿶⿶⿶
 

re:酷毙了

 

[分享]PIC实现1-wire通讯(供参考)

 

re:^_^,好!以前可以费了很大工夫,才...

 

re:谢谢这位大侠的MATH.ASM.

 
1  /  4  页   1234 跳转

版权所有 贝能国际  Burnon国际  Sitemap

Powered by Discuz!NT 2.1.202    Copyright © 2001-2009 Comsenz Inc.
Processed in 0.031251 second(s) , 5 queries. 闽ICP备05003850号
返顶部