📄 6.2.lst
字号:
C51 COMPILER V7.09 6_2 08/24/2005 09:10:31 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE 6_2
OBJECT MODULE PLACED IN 6.2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 6.2.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG52.H>
2 sbit DQ =P2^1; //定义端口
3
4 typedef unsigned char byte;
5 typedef unsigned int word;
6
7 //延时
8 void delay(word useconds)
9 {
10 1 for(;useconds>0;useconds--);
11 1 }
12 //复位
13 byte ow_reset(void)
14 {
15 1 byte presence;
16 1 DQ = 0; // DQ 低电平
17 1 delay(29); // 480us
18 1 DQ = 1; // DQ 高电平
19 1 delay(3); // 等待
20 1 presence = DQ; // presence 信号
21 1 delay(25);
22 1 return(presence);
23 1 } // 0允许, 1 = 禁止t
24
25 //从1-wire 总线上读取一个字节
26 byte read_byte(void)
27 {
28 1 byte i;
29 1 byte value = 0;
30 1 for (i=8;i>0;i--)
31 1 {
32 2 value>>=1;
33 2 DQ = 0;
34 2 DQ = 1;
35 2 delay(1);
36 2
37 2 if(DQ)value|=0x80;
38 2 delay(6);
39 2 }
40 1 return(value);
41 1 }
42
43 //向 1-WIRE 总线上写一个字节
44 void write_byte(char val)
45 {
46 1 byte i;
47 1 for (i=8; i>0; i--) // 一次写一字节
48 1 {
49 2 DQ = 0;
50 2 DQ = val&0x01;
51 2 delay(5);
52 2 DQ = 1;
53 2 val=val/2;
54 2 }
55 1 delay(5);
C51 COMPILER V7.09 6_2 08/24/2005 09:10:31 PAGE 2
56 1 }
57
58 //读取温度
59 char Read_Temperature(void)
60 {
61 1 union{
62 1 byte c[2];
63 1 int x;
64 1 }temp;
65 1
66 1 ow_reset();
67 1 write_byte(0xCC); // 跳过 ROM
68 1 write_byte(0xBE); // 读
69 1 temp.c[1]=read_byte();
70 1 temp.c[0]=read_byte();
71 1 ow_reset();
72 1 write_byte(0xCC);
73 1 write_byte(0x44); // 开始
74 1 return temp.x/2;
75 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 168 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -