蓝桥杯问题


大家好,我想问个事情。比赛的时候驱动会出问题吗

我在网上找了一个2021数据包。下面这个。

image-20220124135435397

但是我发现他的驱动有点问题。ds18b20他是这么写的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
程序说明: 单总线驱动程序
软件环境: Keil uVision 4.10
硬件环境: CT107单片机综合实训平台(外部晶振12MHz) STC89C52RC单片机
日 期: 2011-8-9
*/
#include "reg52.h"

sbit DQ = P1^4; //单总线接口

//单总线延时函数
void Delay_OneWire(unsigned int t) //STC89C52RC
{
while(t--);
}

//通过单总线向DS18B20写一个字节
void Write_DS18B20(unsigned char dat)
{
unsigned char i;
for(i=0;i<8;i++)
{
DQ = 0;
DQ = dat&0x01;
Delay_OneWire(5);//有问题
DQ = 1;
dat >>= 1;
}
Delay_OneWire(5);
}

//从DS18B20读取一个字节
unsigned char Read_DS18B20(void)
{
unsigned char i;
unsigned char dat;

for(i=0;i<8;i++)
{
DQ = 0;
dat >>= 1;
DQ = 1;
if(DQ)
{
dat |= 0x80;
}
Delay_OneWire(5);//有问题
}
return dat;
}

//DS18B20设备初始化
bit init_ds18b20(void)
{
bit initflag = 0;

DQ = 1;
Delay_OneWire(60);
DQ = 0;
Delay_OneWire(480);
DQ = 1;
Delay_OneWire(120);
initflag = DQ;
Delay_OneWire(5);

return initflag;
}

他读和写的延迟时间不对

屏幕截图 2022-01-24 135205

所以考试的时候,给的驱动会出这种类似的问题吗?


文章作者: 小熊大大
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小熊大大 !
  目录