📄 18b20.lst
字号:
C51 COMPILER V7.50 18B20 09/05/2007 12:19:01 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 18B20
OBJECT MODULE PLACED IN 18b20.OBJ
COMPILER INVOKED BY: D:\Program Files\C51\BIN\C51.EXE 18b20.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*****************************************************************
2 * 浙江大学仪器系短学期实习项目:
3 * 电仪2004级
4 * 小组成员:韩灿 刘清文赵岩 许琳燕
5 *
6 * 文件名 :
7 * 开发人 :韩灿
8 * 开发时间:2007-8-20
9 * 版本 :
10 * 修改者 :
11 * 修改时间:
12 * 修改说明:
13 ******************************************************************/
14 #include<18b20.h>
15 #include<7279.h>
16
17
18
19 void init18b20(void)
20 {
21 1 unsigned char x=0;
22 1 DQ=1;
23 1 _nop_();
24 1 DQ=0;
25 1 delay15us(36); //延时480us
26 1 DQ=1;
27 1 delay15us(4);; //延时60us
28 1 x=DQ;
29 1 DQ=1;
30 1 delay15us(18); //延时270us
31 1 }
32
33
34
35 void write18b20(unsigned char ch)
36 {
*** WARNING C235 IN LINE 36 OF 18B20.C: parameter 1: different types
37 1 unsigned char i;
38 1 for(i=0;i<8;i++)
39 1 {
40 2 DQ=0;
41 2 delay15us(1); //首先将DQ拉低,并延时15us
42 2 DQ=ch&0x01; //从低8位开始写入
43 2 ch=ch>>1; //数据右移一位
44 2 delay15us(4); //写入数据后并延时45us以上
45 2 DQ=1;
46 2 }
47 1 }
48
49
50
51 unsigned int read18b20()
52 {
53 1 unsigned char i;
54 1 unsigned char ch=0;
C51 COMPILER V7.50 18B20 09/05/2007 12:19:01 PAGE 2
55 1 for(i=0;i<8;i++)
56 1 {DQ=0;
57 2 ch=ch>>1;
58 2 DQ=1;
59 2 delay15us(1);
60 2 if(DQ==0) {ch=ch&0x7f; }
61 2 else {ch=ch|0x80; }
62 2 delay15us(3);
63 2 //DQ=1;
64 2 }
65 1 return(ch);
66 1 }
67
68
69
70 delay15us(unsigned char n)
71 {
72 1 _nop_();
73 1 for(;n>1;n--){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
74 1 }
75
76 /******
77 *读温度函数
78 *******/
79
80 unsigned char readtemp(unsigned char *z)
81 {
82 1 unsigned char t,x,y;
83 1 init18b20();
84 1 write18b20(0xCC); //跳过skip rom
85 1 write18b20(0x44); //启动温度转换
86 1 init18b20();
87 1 write18b20(0xCC); //跳过多路传感器识别 skip rom
88 1 write18b20(0xBE); //读暂存器,
89 1 x=read18b20(); //返回读出温度值 16位补码形式
90 1 y=read18b20();
91 1 *z=x;
92 1 *z=*z&0x0f;
93 1 *z=*z*10/16;
94 1 x=x>>4;
95 1 y=(y&0x07)<<4;
96 1 t=x|y;
97 1 return t;
98 1 }
99
100
101 /*************************************
102 *** 显示温度函数
103 *************************************/
104 /*showtemp()
105 {
106 unsigned char t,x,y,*z;
107 t=readtemp(z);
108 if(t>0)
109 {
110 x=t/10;
111 t=t%10;
112 y=t/1;
113 //z=t%1;
114 // write(DECODE0,0x00);
115 write(DECODE0+1,x);
116 write(DECODE0+2,0x80+y);
C51 COMPILER V7.50 18B20 09/05/2007 12:19:01 PAGE 3
117 }
118 else
119 {
120 t=~t;
121 t=t+1;
122 x=t/10;
123 t=t%10;
124 y=t/1;
125 //z=t%1;
126 write(DECODE0,0x0a);
127 write(DECODE0+1,x);
128 write(DECODE0+2,0x80+y);
129 }
130 }*/
131
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 237 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 8
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -