维库电子市场网
登录 免费注册 首页 | 行业黑名单 | 委托交易 | 帮助 | English
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

[请教]PIC频率计程序

作者:renhai 栏目:单片机



请教大家
我用PIC16C54制作频率计,其中要用到16位除法子程序,如下,但余数始终不对,为什么啊?

16×16位无符号除法子程序
子程序采用反复的减法算法,除数和被除数分别为16位二进制有符号数(均采用补码表示,第16位为符号位),商为16位二进制有符号数,第16位为符号位。子程序的入口条件和出口条件如下:
入口条件:被除数存放在ACCBHI、ACCBLO单元中;
      除数存放在ACCAHI、ACCALO单元中。
出口条件:商存放在ACCBHI、ACCBLO单元中;
          余数存放在ACCCHI、ACCCLO单元中。
    
    LIST    p=16F877
    INCLUDE    p16F877.inc
    ACCALO    EQU     20    ;存放除数低8位
    ACCAHI     EQU     21    ;存放除数高8位
    ACCBLO     EQU     22    ;存放被除数和商的低8位
    ACCBHI     EQU     23    ;存放被除数和商的高8位
    ACCCLO     EQU     24    ;存放余数低8位
    ACCCHI     EQU     25    ;存放余数高8位
    ACCDLO     EQU     26    ;临时寄存器
    ACCDHI     EQU     27    ;临时寄存器
    TEMP     EQU     28    ;临时寄存器
    SIGN     EQU     29    ;存放商的符号
    ORG    0X0000
START    GOTO    MAIN
;***16×16位数除法子程序,入口地址ACCB /ACCA,出口地址ACCB ***
    ORG    0X0100
D_div    CALL     S_SIGN    ;确定商的符号,并将负数取补
    CALL    SETUP    ;初始化TEMP,将被除数移至ACCD
          CLRF    ACCCHI    ;清余数寄存器
          CLRF    ACCCLO
DLOOP    BCF    STATUS,C    ;清进位位
    RLF    ACCDLO    ;被除数、余数左移1位
    RLF    ACCDHI
    RLF    ACCCLO
    RLF    ACCCHI
    MOVF    ACCAHI,0    ;ACCCHI-ACCAHI
    SUBWF    ACCCHI,0
    BTFSS    STATUS,Z    ;ACCCHI=ACCAHI?
    GOTO    NOCHK
    MOVF    ACCALO,0    ;是,ACCCLO-ACCALO
    SUBWF    ACCCLO,0
NOCHK    BTFSS    STATUS,C    ;ACCC>ACCA?
    GOTO    NOGO
    MOVF    ACCALO,0    ;是,余数减除数
    SUBWF    ACCCLO
    BTFSS    STATUS,C
    DECF    ACCCHI
    MOVF    ACCAHI,0
    SUBWF    ACCCHI
    BSF    STATUS,C    ;置进位位
NOGO    RLF    ACCBLO    ;商左移1位
    RLF    ACCBHI
    DECFSZ    TEMP    ;循环完毕?
    GOTO    DLOOP
   RETLW     0

  SETUP    MOVLW     .16    ;初始化TEMP寄存器        
    MOVWF     TEMP
    MOVF     ACCBHI,0    ;ACCB送ACCD
    MOVWF    ACCDHI
    MOVF     ACCBLO,0
    MOVWF     ACCDLO
    CLRF     ACCBHI    ;清ACCB
    CLRF     ACCBLO
    RETLW  0        ;子程序返回
2楼: >>参与讨论
lwq
这种程序看书后自己体会了。
参与讨论
昵称:
讨论内容:
 
 
相关帖子
每个器件对应一个或者多个pdf文档:有个资料网站拿来和...
在某论坛上看到的言论,,你们评评谁说得对
手工焊接表面元件是个细活[转帖]
带电压线路如何测电阻?
小弟正在用430和DS1302,正在郁闷中
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号