📄 zpfinal.lst
字号:
C51 COMPILER V7.10 ZPFINAL 04/06/2008 13:32:56 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE ZPFINAL
OBJECT MODULE PLACED IN ZPfinal.OBJ
COMPILER INVOKED BY: C:\Program Files\KEIL\C51\BIN\C51.EXE ZPfinal.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /******************************************************************************/
2 /**
3 /** 功能描述:通过AT89S/C52,DS18B20和6位数码管,采集温度并在数码管上实时显示。
4 /** 并有相应的不同颜色的led和蜂鸣器指示。
5 /** 创 建 人:chiusir@yahoo.cn 日期:2008-04-06 */
6 /** 修 改 人: 日期:2008-04-06 */
7 /** 其他说明:
8 /******************************************************************************/
9 #include<regx51.h>
10 #include <intrins.h>
11
12 #define U8 unsigned char
13 #define U16 unsigned int
14
15 sbit SIO = P2^0;
16 sbit redled =P3^0;
17 sbit greenled =P3^1;
18 sbit blueled =P3^2;
19 sbit BZ =P3^3;
20
21 //0,1,2,3,4,5,6,7,8,9,-
22 U8 code LED_IMG[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
23
24 /*******************************************************************************
25 *** 函 数 名: void DLY_us(U8 x)
26 *** 功能描述: 微秒级延时;
27 *** 全局变量: NO !
28 *** 输 入: x !
29 *** 输 出: NO !
30 *** 修 改 人: 日期:2006-11-28
31 *** 函数说明:
32 *** //1-5,2-7,3-9 ,5--16.5us,10-30.4,22-52,25-58,35-78,61-125,125-250,250--500us
33 /******************************************************************************/
34 void DLY_us(U8 x) //x取值1~255;
35 {
36 1 while(--x);
37 1 }
38 /*******************************************************************************
39 *** 函 数 名: void DLY_ms(U16 x)
40 *** 功能描述: 毫秒级延时;
41 *** 全局变量: NO !
42 *** 输 入: U16 x !
43 *** 输 出: NO !
44 *** 修 改 人: 日期:2006-11-28
45 *** 函数说明:
46 /******************************************************************************/
47 void DLY_ms(U8 x) //x取值1~255;
48 {
49 1 U8 i,j;
50 1 for(i=0;i<x;i++)
51 1 for(j=0;j<200;j++)
52 1 {
53 2 _nop_();
54 2 _nop_();
55 2 }
C51 COMPILER V7.10 ZPFINAL 04/06/2008 13:32:56 PAGE 2
56 1 }
57
58 /*******************************************************************************
59 *** 函 数 名: void Init1820()
60 *** 功能描述:
61 *** 全局变量: NO !
62 *** 输 入: NO !
63 *** 输 出: NO !
64 *** 修 改 人: 日期:2006-11-28
65 *** 函数说明:
66 /******************************************************************************/
67 void Init1820()
68 {
69 1 SIO = 1;
70 1 _nop_();
71 1 SIO = 0; //拉低数据线,准备Reset OneWire Bus;
72 1 DLY_us(125); //延时500us,Reset One-Wire Bus.
73 1 DLY_us(125);
74 1
75 1 SIO = 1; //提升数据线;
76 1 DLY_us(15); //延时35us;
77 1
78 1 while(SIO) //等待Slave 器件Ack 信号;
79 1 {
80 2 _nop_();
81 2 }
82 1 DLY_us(60); //延时125us;
83 1 SIO = 1; //提升数据线,准备数据传输;
84 1 }
85
86 /*******************************************************************************
87 *** 函 数 名: static void DS18B20_WR(U8 cmd)
88 *** 功能描述: 写一个字节;
89 *** 全局变量: NO !
90 *** 输 入: cmd:8bit;
91 *** 输 出: NO !
92 *** 函数说明: cmd主要有Rom操作指令和E2Ram操作指令两种;
93 /******************************************************************************/
94 void WR1820(U8 cmd)
95 {
96 1 U8 i;
97 1 for(i=0;i<8;i++)
98 1 {
99 2 if(cmd & 0x01) //低位在前;
100 2 {
101 3 SIO = 0; //结束Recovery time;
102 3 _nop_();
103 3 _nop_();
104 3 _nop_();
105 3 SIO = 1;
106 3 } //发送数据;
107 2 else
108 2 SIO = 0; //结束Rec time;
109 2 _nop_();
110 2 _nop_();
111 2 _nop_();
112 2 //SIO = 0; } //发送数据;
113 2 DLY_us(30); //等待Slave Device采样;
114 2 SIO = 1; //Recovery;
115 2 _nop_(); //Recovery Time Start;
116 2 cmd >>= 1;
117 2 }
C51 COMPILER V7.10 ZPFINAL 04/06/2008 13:32:56 PAGE 3
118 1 }
119
120 /*******************************************************************************
121 *** 函 数 名: U8 RD1820(void)
122 *** 功能描述: 读取一个字节;
123 *** 全局变量: NO !
124 *** 输 入: NO !
125 *** 输 出: 8bit data;*
126 *** 函数说明: 读之前必须首先写1;
127 /******************************************************************************/
128 U8 RD1820(void)
129 {
130 1 U8 i;
131 1 U8 tmp=0;
132 1 SIO = 1;
133 1 _nop_(); //准备读;
134 1 for(i=0;i<8;i++)
135 1 {
136 2 tmp >>= 1; //低位先发;
137 2 SIO = 0; //Read init;
138 2 _nop_(); //1us;
139 2 SIO = 1; //必须写1,否则读出来的将是不预期的数据;
140 2 DLY_us(2); //延时7us;
141 2 _nop_();
142 2 if(SIO) //在12us处读取数据;
143 2 tmp |= 0x80;
144 2 DLY_us(30); //延时55us;
145 2 SIO = 1;
146 2 _nop_(); //恢复One Wire Bus;
147 2 }
148 1 return tmp;
149 1 }
150
151 /*******************************************************************************
152 *** 函 数 名: U16 RD_T();
153 *** 功能描述: 读取温度;
154 *** 全局变量: NO !
155 *** 输 入: NO !
156 *** 输 出: 16bit data;
157 *** 函数说明: 读之前必须首先写1;
158 /******************************************************************************/
159 U16 RD_T()
160 {
161 1 U16 tp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -