📄 ds18b20c.lst
字号:
C51 COMPILER V7.06 DS18B20C 08/29/2006 18:00:54 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DS18B20C
OBJECT MODULE PLACED IN ds18b20c.OBJ
COMPILER INVOKED BY: E:\Program Files\C51\BIN\C51.EXE ds18b20c.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //****************ds18b20.c******************//
2 #pragma small
3 #include<reg52.h>
4 #include<intrins.h>
5 #define uchar unsigned char
6 #define uint unsigned int
7
8 sbit DQ=P3^6;
9
10
11 delay(uint i)
12 {
13 1 while(i--);
14 1 }
15
16 reset(void) //复位
17 {
18 1 uchar x=0;
19 1 DQ = 1;
20 1 delay(8); //稍做延时
21 1 DQ = 0;
22 1 delay(80); //精确延时 大于 480us
23 1 DQ = 1; //拉高总线
24 1 delay(14);
25 1 x=DQ;
26 1 delay(20);
27 1 }
28
29 readbyte(void) //读1字节
30 {
31 1 uchar i=0;
32 1 uchar dat=0;
33 1 for (i=8;i>0;i--)
34 1 {
35 2 DQ = 0;
36 2 dat>>=1;
37 2 DQ = 1;
38 2 if(DQ)
39 2 dat|=0x80;
40 2 delay(4);
41 2 }
42 1 return(dat);
43 1 }
44
45 writebyte(unsigned char dat) //写1字节
46 {
47 1 uchar i=0;
48 1 for (i=8; i>0; i--)
49 1 {
50 2 DQ = 0;
51 2 DQ = dat&0x01;
52 2 delay(5);
53 2 DQ = 1;
54 2 dat>>=1;
55 2 }
C51 COMPILER V7.06 DS18B20C 08/29/2006 18:00:54 PAGE 2
56 1 delay(4);
57 1 }
58
59 readtemp(void) //读取温度
60 {
61 1 uchar a=0,b=0;
62 1 reset();
63 1 writebyte(0xCC); // 跳过序列号
64 1 writebyte(0x44); // 启动温度转换
65 1 reset();
66 1 writebyte(0xCC);
67 1 writebyte(0xBE); //读9个寄存器,前两个为温度
68 1 a=readbyte(); //低位
69 1 b=readbyte(); //高位
70 1 temper[0]=a&0x0f;
*** ERROR C202 IN LINE 70 OF DS18B20C.C: 'temper': undefined identifier
71 1 a=a>>4; //低位右移4位,舍弃小数部分
72 1 temper[1]=b<<4; //高位左移4位,舍弃符号位
*** ERROR C202 IN LINE 72 OF DS18B20C.C: 'temper': undefined identifier
73 1 temper[1]=temper[1]|a;
*** ERROR C202 IN LINE 73 OF DS18B20C.C: 'temper': undefined identifier
74 1 }
75
76 main()
77 {
78 1 while(1)
79 1 {
80 2 readtemp();
81 2 disp();
82 2 }
83 1 }
C51 COMPILATION COMPLETE. 0 WARNING(S), 3 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -