导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[caroljzw]新手求助~DS18B20测温程序编译错误



No.94158
作者:caroljzw
邮件:caroljzw@yahoo.com.cn
ID:54672
登陆:1次
文章数:1篇
最后登陆IP:202.206.209.10
最后登陆:2006/6/4 20:46:09
注册:2006/6/4 16:06:05
财富:105
发帖时间:2006/6/4 16:12:07
发贴者IP:202.206.209.10
标题:caroljzw:新手求助~DS18B20测温程序编译错误太多~
摘要:No.94158新手求助~DS18B20测温程序编译错误太多~ 用AT89C2051单片机。程序如下
**********************************
 ;DS18B20 数字温度计 *
 ;采用4位LED共阳显示器显示测温值,显示精度0.1℃,测温范围-55~+125℃ *
 ;用AT89C2051 单片机,12MHZ 晶振 *
 ;**************************************
 ;
 ;**************************************
 ;常数定义
 ;**************************************
       TIMEL  EQU       0E0H        ;20MS,定时器0时间常数
       TIMEH  EQU       0B1H
    TEMPHEAD  EQU       36H
     ;
 ;**************************************
 ;工作内存定义
 ;**************************************
     BITST         DATA 20H
     TIME1SOK        BIT       BITST.1
     TEMPONEOK       BIT       BITST.2
     TEMPL         DATA 26H
     TEMPH         DATA 27H
     TEMPHC         DATA 28H
     TEMPLC         DATA 29H
 ;
 ;**************************************
 ;引脚定义
 ;**************************************
     TEMPDIN       BIT P3.7
 ;
 ;**************************************
 ;中断向量区
 ;**************************************
              ORG       0000H
           LJMP   START
 ;
              ORG       00BH
           LJMP   T0IT
 ;
 ;**************************************
 ;系统初始化
 ;**************************************
              ORG       100H
      START:  MOV       SP,#60H
     CLSMEM:  MOV       R0,#20H
              MOV       R1,#60H
    CLSMEM1:  MOV       @R0,#00H
              INC       R0
                 DJNZ   R1,CLSMEM1
 ;
              MOV       TMOD,#00100001B         ;定时器0作方式1(16BIT)
              MOV       TH0,#TIMEL
              MOV       TL0,#TIMEH  ;20MS
                 SJMP   INIT
 ;
      ERROR:  NOP
                 LJMP   START
 ;
              NOP
       INIT:  NOP
              SETB      ET0
              SETB      TR0
              SETB      EA
              MOV       PSW,#00H
                 CLR   TEMPONEOK
                 LJMP   MAIN
 ;
 ;**************************************
 ;定时器0中断服务程序
 ;**************************************
       T0IT:  PUSH      PSW
              MOV       PSW,#10H
              MOV       TH0,#TIMEH
              MOV       TL0,@TIMEL
              INC       R7
                 CJNE   R7,#32H,T0IT1
              MOV       R7,#00H
              SETB      TIME1SOK    ;1S定时到标志
      T0IT1:  POP       PSE
                 RETI
 ;
 ;
 ;
 ;**************************************
 ;主程序
 ;**************************************
 MAIN:           LCALL   DISP1 ;调用显示子程序
              JNB       TIME1SOK,MAIN
                 CLR   TIME1SOK ;测温每1S一次
              JNB       TEMPONEOK,MAIN2         ;上电时先温度转换一次
                 LCALL   READTEMP1 ;读出温度值子程序
                 LCALL   CONVTEMP ;温度BCD码计算处理子程序
                 LCALL   DISPBCD ;显示区BCD码温度值刷新子程序
                 LCALL   DISP1 ;消闪烁,显示一次
 MAIN2:           LCALL   READTEMP ;温度转换开始
              SETB      TEMPONEOK
                 LJMP   MAIN
 ;
 ;**************************************
 ;**************************************
 ;子程序区
 ;**************************************
 ;RESET DS18B20
 ;**************************************
 INITDS1820:  SETB      TEMPDIN
              NOP
              NOP
                 CLR    TEMPDIN
              MOV       R6,#0A0H    ;DELAY480US
                 DJNZ   R6,$
              MOV       R6,#0A0H
                 DJNZ   R6,$
              SETB      TEMPDIN
              MOV       R6,#32H     ;DELAY70US
                 DJNZ   R6,$
              MOV       R6,#3CH
   LOOP1820:  MOV       C,TEMPDIN
              JC        INITDS1820OUT
                 DJNZ   R6,LOOP1820
              MOV       R6,#064H    ;DELAY200US
                 DJNZ   R6,$
                 SJMP   INITDS1820
              RET
 ;
          INITDS1820OUT:  SETB      TEMPDIN
              RET
 ;
 ;
 ;**************************************
 ;读DS18B20的程序,从DS18B20中读出一个字节的数据
 ;**************************************
 READDS1820:  MOV       R7,#08H
              SETB      TEMPDIN
              NOP
 READDS1820LOOP: CLR   TEMPDIN
              NOP
              NOP
              NOP
              SETB      TEMPDIN
              MOV       R6,#07H     ;DELAY15US
                 DJNZ   R6,$
              MOV       C,TEMPDIN
              MOV       R6,#3CH
                 DJNZ   R6,$
                 RRC   A
              SETB      TEMPDIN
                 DJNZ   R7,READDS1820LOOP
              MOV       R6,#3CH     ;DELAY120US
                 DJNZ   R6,$
              RET
 ;
 ;
 ;**************************************
 ;写DS18B20的程序,从DS18B20种些一个字节的数据
 ;**************************************
            WRETEDS1820:  MOV       R7,#08H
              SETB      TEMPDIN
              NOP
              NOP
 WRITEDS1820LOP: CLR   TEMPDIN
              MOV       R6,#07H     ;DELAY15US
                 DJNZ   R6,$
                 RRC   A
              MOV       TEMPDIN,C
              MOV       R6,#34H     ;DELAY104US
                 DJNZ   R6,$
              SETB      TEMPDIN
                 DJNZ   R7,WRITEDS1820LOP
              RET
 ;
 ;
 ;**************************************
 ;READ TEMP
 ;**************************************
 READTEMP:     LCALL   INITDS1820
              MOV       A,#0CCH
                 LCALL   WRITEDS1820   ;SKIP ROM
              MOV       R6,#34H     ;DELAY104US
                DJNZ   R6,$
              MOV       A,#44H
                 LCALL   WRITEDS1820  ;START CONVERSION
              MOV       R6,#34H     ;DELAY104US
                 DJNZ   R6,$
              RET
 ;
 READTEMP1:     LCALL   INITES1820
              MOV       A,#0CCH
                 LCALL   WRITEDS1820 ;SKIP ROM
              MOV       R6,#34H     ;DELAY104US
                 DJNZ   R6,$
              MOV       A,#0BEH
                 LCALL   WRITEDS1820 ;SCRATCHPAD
              MOV       R6,#34H     ;DELAY104US
                 DJNZ   R6,$
              MOV       R5,#09H
              MOV       R0,#TEMPHEAD
              MOV       B,#00H
 READTEMP2:     LCALL   READDS1820
              MOV       @R0,A
              INC       R0
 READTEMP21:     LCALL   CRC8CAL
                 DJNZ   R5,READTEMP2
            ......

>>返回讨论的主题


  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:47毫秒 最大:5186毫秒 查询6次