stc89c52rc单片机与ds18b20连接,连初始化程序都实现不了,帮我看下程序问题,详细点,可以多给分

我把自己的程序贴出来
DQ BIT P3.7 ;DS18B20数据线

ORG 0000H
SJMP MAIN

ORG 0030H
MAIN:
SETB DQ
CLR P1.0
NOP
CLR DQ
MOV R2,#250 ;主机发出延时500微秒的复位低脉冲
DJNZ R2,$
SETB DQ ;然后拉高数据线
CLR P1.1
MOV R2,#30
DJNZ R2,$ ;延时60us等待DS18B20回应
CLR P1.2
JNB DQ,INIT1
CLR P1.3
JMP MAIN ;超时而没有响应,重新初始化
INIT1:
CLR P1.4
MOV R2,#120
DJNZ R2,$ ;延时240us
JB DQ,INIT2 ;数据变高,初始化成功

JMP MAIN
INIT2:
CLR P1.5
MOV R2,#240
DJNZ R2,$
RET
END
其中,CPL步骤是为了让LED指示灯看到我执行到哪一步,我看到的是P1.0 1.1 1.2 1.3灯都亮了,但是1.4没有亮,大家帮我看下到底是程序哪里出了问题,连初始化都失败呢?

MOV R2,#250 ;主机发出延时500微秒的复位低脉冲
DJNZ R2,$

这里应该是600微秒....追问

芯片手册上说这一段只要控制在480——900微秒之间都可以的,究竟是什么其他问题

追答

你要知道指令周期,延时总执行时间

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-28
你等待60us以后, JNB DQ,INIT1 判断DQ有没有被拉低.
后面JB DQ,INIT2 这是干嘛的??
底下你参考:ds18b20_init: ;[r0]
;in : NULL
;out: (22h)=00h: ds18b20 not found, (22h)=ffh: ds18b20 found
mov r0, #245
clr DQ
djnz r0, $ ;490us: master send reset pulse, pull down for 480us minimum

setb DQ
mov r0, #34
djnz r0, $ ;1+1+2*34=70us: ds18b20 wait 15us~60us and then transmits a presence pulse
mov c, DQ

mov r0, #205
djnz r0, $ ;70+2+1+2*205=483us: master rx 480us minimum
;setb DQ

jnc l01
mov 22h, #00h ;ds18b20 not found
ret
l01:mov 22h, #0ffh ;ds18b20 found
ret
第2个回答  2011-05-15
#include<reg51.h>
sbit p3_7=P3^7;
sbit p1_0=P1^0;
sbit p1_1=P1^1;
sbit p1_2=P1^2;
sbit p1_3=P1^3;
sbit p1_4=P1^4;
sbit p1_5=P1^5;
void delay(unsigned char tt)
{
for(;tt>0;tt--);
}
void init2()
{
p1_5=0;
delay(240);
}
void init1()
{
p1_4=0;
delay(120);
if(p3_7==1)
init2();
}
void main()
{
while(1)
{
p3_7=1;
p1_0=0;
delay(2);
p3_7=0;
delay(250);
p3_7=1;
p1_1=0;
delay(30);
p1_2=0;
if(p3_7==0)
init1();
else
p1_3=0;
}
}追问

请问你就把汇编改成C了。。。有实质性变化吗。。。

智能型即热式热水器的控制主程序设计
1、对温度精确控制,采用高性能的温敏电阻实时采集热水器内水温,将温度信号转变为电压信号后送单片机处理,可用LCD进行实时显示.2、能显示当前的时间,热水器的实际温度。 3、自动检测热水器是否处于正常工作状态,并具有调温、恒温、防超高温等多项自检功能,使用户在使用过程中安全更有保障。 。2 本次...

【51单片机】基于STC89C52RC的电子秒表
设计采用STC89C52RC作为中央处理器,配置12MHz晶振电路以确保精确的时间计数。复位电路通过按键和电容限流电阻实现。按键电路由按键和上拉电阻构成,便于操作。显示电路采用8段共阳数码管,方便直观显示时间。电路设计主要包括单片机、晶振电路、复位电路、按键电路和数码管显示电路。STC89C52RC单片机与电路间的连接...

求STC89C52单片机的详细资料?包括引脚功能,存储器等等的详细介绍,越...
1、STC89C52单片机,支持USB口或者是串口两种下载程序方式 不用另买烧写器 编程器等产品 可以方便的烧写程序到单片机里.2、USB供电系统,直接插接到电脑USB口即可提供电源,不需另接直流电源 。3、8位LED发光二极管(做 跑马灯实验 交通灯实验 )。4、8位数码管(可做数码管的静态和动态扫描显示实验 如...

寒假打算学习一下单片机,不知道哪个单片机开发板好?
1、一个CH340的USB转UART芯片,实现USB下载程序,为无串口的笔记本电脑提供下载方便。2、板子上电源入口有一个自恢复保险丝,可以有效的保护您的电脑主板和开发板。加上这个保险,作为初学的你,即使不小心短路了,也不会烧主板和单片机。3、板子自带单片机,一个STC89C52RC,有8K的程序空间和512字节的数...

单片机开发板怎么用?
1、一个CH340的USB转UART芯片,实现USB下载程序,为无串口的笔记本电脑提供下载方便。 2、板子上电源入口有一个自恢复保险丝,可以有效的保护您的电脑主板和开发板。加上这个保险,作为初学的你,即使不小心短路了,也不会烧主板和单片机。 3、板子自带单片机,一个STC89C52RC,有8K的程序空间和512字节的数据空间. ...

求STC89C52单片机的详细资料?包括引脚功能,存储器等等的详细介绍,越...
如有必要,可通过对特殊功能寄存器(sfr)区中的8eh单元的d0位置位,可禁止ale操作。该位置位后,只有一条movx和movc指令才能将ale激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ale禁止位无效。psen——程序储存允许(psen)输出是外部程序存储器的读选通信号,当stc89c52由外部程序存储器...

单片机实验板是不是学习单片机必备的,怎么选择
1、一个CH340的USB转UART芯片,实现USB下载程序,为无串口的笔记本电脑提供下载方便。2、板子上电源入口有一个自恢复保险丝,可以有效的保护您的电脑主板和开发板。加上这个保险,作为初学的你,即使不小心短路了,也不会烧主板和单片机。3、板子自带单片机,一个STC89C52RC,有8K的程序空间和512字节的...

单片机开发板有哪些,初学者学习哪个好?
1、一个CH340的USB转UART芯片,实现USB下载程序,为无串口的笔记本电脑提供下载方便。2、板子上电源入口有一个自恢复保险丝,可以有效的保护您的电脑主板和开发板。加上这个保险,作为初学的你,即使不小心短路了,也不会烧主板和单片机。3、板子自带单片机,一个STC89C52RC,有8K的程序空间和512字节的...

单片机开发板如何选择?我是大一新生,现在专业课都没有开。
1、一个CH340的USB转UART芯片,实现USB下载程序,为无串口的笔记本电脑提供下载方便。2、板子上电源入口有一个自恢复保险丝,可以有效的保护您的电脑主板和开发板。加上这个保险,作为初学的你,即使不小心短路了,也不会烧主板和单片机。3、板子自带单片机,一个STC89C52RC,有8K的程序空间和512字节的...

单片机开发板哪个好啊?开学了,想学习一下。
1、一个CH340的USB转UART芯片,实现USB下载程序,为无串口的笔记本电脑提供下载方便。2、板子上电源入口有一个自恢复保险丝,可以有效的保护您的电脑主板和开发板。加上这个保险,作为初学的你,即使不小心短路了,也不会烧主板和单片机。3、板子自带单片机,一个STC89C52RC,有8K的程序空间和512字节的...

相似回答
大家正在搜