首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 电子制作
用PICl6F873A单片机设计的高精度电子温度计
来源:本站整理  作者:佚名  2011-01-20 09:58:24



  3.二进制数到BCD码转换程序实例
  
  程序流程如下图所示。其中,下图a是二进制数到BCD码的转换流程图。下图b是BCD码(数)调整流程图。

  根据下图的流程。定义的源程序命名为PIC3TD·ASM.其清单如下:

  UST P=PICl6F873A;选芯片型号

TRO EOU 26H

    ;设置等效十进制小数点位寄
存器   
    TRl EOU 27H
    ;设置等效的十进制个位寄存
    TR2 EOU 28H
    :设置等效的十进制10位寄存
    REGH EOU 3FH
    REGLEOU 40H
    REGHl EOU 32H
    REGLl EOU 33H
    COUNT3 EOU 2CH
    ;定义左移次数寄存器
    BCD2 EOU 3lH
    BCDl EoU 30H
    BCD0 EOU 2FH
    MO EOU 2EH
    ORG    0000H
    GOTO    START
    ORG    10H
    :RA3比较电压,RA0输入,RB口
出BCD码,RC口位扫描控制
    START BCF STATUS.RPl
    BSF STATUS.RP0
    NOP
    BCF STATUS.RPO
    ;10位A/D转换结果转4位BCD
码(百位未用)
    MOVLW 0x03
    ;设A/D转换高两位为0x03
    MOVWF REGH
    ;将0x03通过W送REGH,以便
仿真
    MOVLW 0x85
    :设A/D转换低8位为0x85
    MOVWF REGL
    ;将0x85通过W送REGL,以便
仿真
    EJZ_BCD1 MOVFW REGH;A/
D转换高两位→W
    MOVWF REGHl:W→REGHl
    MOVFW REGL;A/D转换低8
位→W
    MOVWF REGLl:W→REGLl
    MOVLW H'lO':设定左移次数
MOVWF COUNT3
    CLRF BCD0;清BCD0、BCDl、
BCD2
    CLRF    BCDl   
    CLRF    BCD2
BCF STATUS,C;清进位位C
    LLMP RLF REGLl,1:REGLl左
    RLF REGHl,l;REGHl左移
    RLF BCD2。1;BCD2左移
    RLF BCDl。1:BCDl左移
    RLF BCD0,1;BCDO左移
    DECFSZ  COUNT3,1:COUNT3
减l不等于0
    GOTO POLl;转标号POLl
    MOVFW BCD2;BCD→W
    ANDLW HOF';取BCD2低四
    MOVWF TRO;小数点位值送
TR0
    SWAPF BCD2,W;BCD2字节交
    ANDLW H'0F':取BCD2高四位
    MOVWF TRl;BCD个位值送
TRl
    MOVFW BCDl:BCDl→W
    ANDLW H'0F':取BCDl低4位
    MOVWF TR2:BCD十位值送
TR2
    RETURN
    POLl
    MOVLIW BCD2:BCD2地址送W
    MOVWF FSR:W→间址FSR
    CALL ZHCX:调ZHCX
    MOVLW BCDl;BCDl地址送W
    MOVWF FSR:W→间址FSR
    CALL ZHCX:调ZHCX
    MOVLW BCDO;BCD0地址送W
    MOVWF FSR;W→间址FSR
    CALL ZHCX:调用ZHCX
    GOTO LLMP:转LLMP
    ZHCX MOVLW H'03';将值3→
W
    ADDWF INDF,W;W+INDF→
W
    MOVWF MO;W→寄存器M0
    BTFSC MO,3;M0大于7?

  MOVWF INDF:大于7→INDFMOVLW H'30‘;将30→WADDWF INDF,W:W+INDF→WMOVWF M0;W→寄存器M0BTFSC MO,7:M0高4位大于7?

  MOVWF INDF:大于7→INDFRETURN:不大于7返回END;程序结束说明:1.上述源程序(PIC3TD·ASM)将电子温度计源程序PIC3T·ASM中的加转换、查表查序删去,仅剩二进制数转BCD码的程序部分,目的是突出学习二进制数转BCD码的程序技术。

  2.为直观学习其转换过程和进行该程序的模拟仿真演示,增加了以下4条指令:

  MOVLW 0x03MOVWF  REGHMOVLW Ox85MOVWF REGL加上述四条指令的意义是,给A/D转换结果寄存器高2位送常数0×03:低8位送常数0×85.此时10位A/D转换结果寄存器的内容应该是:

  0×0385=3×162+8×16+5=901其目的是将上述的程序在MPLAB集成开发软件下汇编。生成目标码后,直接在MPLAB的OPTION命令进行软件仿真。可看到TR0(LED第l位)、TRl(LED第二位)、TR2(LED第三位)的值,即为90l。可见,给定的A/D转换常数值901,经程序左移调整运行,模拟仿真结果完全相同。说明文中所介绍的二进制数到BCD转换方法完全正确。

  注意:所加的四条指令不能放在电子温度计PIC3T·ASM源程序中,否则引起错误结果。

  五、小结
  
  本文介绍的内容包括:1.完整可执行的高精度电子温度计的源程序;2.电子温度计的数码管LED显示方法:3.二进制数转BCD码、再转等效的十进制数。供查表程序给数码管LED显示。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:130,722.70000 毫秒