📄 urm37_wr.lst
字号:
C51 COMPILER V7.06 URM37_WR 10/07/2005 20:45:27 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE URM37_WR
OBJECT MODULE PLACED IN URM37_WR.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE URM37_WR.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include"URM37_51demo.H"
2
3 extern void LCD_ClearLin2(void);
4 extern void LCD_WRITE_COMM(uchar);
5 extern void LCD_WRITE_DATA(uchar);
6 /********************************************************************
7 * 名称: Delay_us
8 * 说明:
9 * 功能: 延时量 = DelayTime(us) MAX = 65536MS
10 * 调用: 无
11 * 输入: DelayTime
12 * 返回值: 无
13 ***********************************************************************/
14 /*
15 void Delay_us(uint DelayTime)
16 {
17 uchar *p;
18 p = &DelayTime;
19 DelayTime = 65535-DelayTime;
20 TR0 = 0;
21 TF0 = 0;
22 TH0 = *p++;
23 TL0 = *p;
24 TR0 = 1;
25 while(TF0 == 0);
26 }
27 */
28 /********************************************************************
29 * 名称: HEX_TO_DEC
30 * 说明:
31 * 功能: 将一个16BIT的16进制数转换为10进制数
32 * 调用: 无
33 * 输入: uint source,uchar * object
34 * 返回值: 无
35 ***********************************************************************/
36 void HEX_TO_DEC(uint source,uchar * object)
37 {
38 1 uchar i;
39 1 source*=5;//source个半厘米,放大10倍
40 1 for(i=0;i<5;i++)
41 1 {
42 2 *(object+i) = source % 10;
43 2 source/=10;
44 2 }
45 1 return;
46 1 }
47 /********************************************************************
48 * 名称: IIC_START
49 * 说明:
50 * 功能: IIC启动信号
51 * 调用: Delay_us
52 * 输入: 无
53 * 返回值: 无
54 ***********************************************************************/
55 void IIC_START(void)//启动信号
C51 COMPILER V7.06 URM37_WR 10/07/2005 20:45:27 PAGE 2
56 {
57 1 uchar i;
58 1 IIC_SCL = 0;
59 1 for(i=0;i<7;i++);
60 1 IIC_SDA = 1;
61 1 for(i=0;i<7;i++);
62 1 IIC_SCL = 1;
63 1 for(i=0;i<7;i++);
64 1 IIC_SDA = 0;
65 1 for(i=0;i<7;i++);
66 1 IIC_SCL = 0;
67 1 }
68 /********************************************************************
69 * 名称: IIC_ACK
70 * 说明:
71 * 功能: 读取返回应答信号
72 * 调用: Delay_us
73 * 输入: 无
74 * 返回值: 操作标志
75 ***********************************************************************/
76 uchar IIC_ACK(void) //读取返回应答信号
77 {
78 1 uchar i;
79 1 TR0 = 0;
80 1 TF0 = 0;
81 1 TL0 = 0;
82 1 TH0 = 0;
83 1 TR0 = 1;
84 1
85 1
86 1 while(IIC_SDA)
87 1 {
88 2 if(TF0 == 1) return ERROR;
89 2 }
90 1 TR0 = 0;
91 1 TF0 = 0;
92 1 TL0 = 0;
93 1 TH0 = 0;
94 1 TR0 = 1;
95 1 while(IIC_SDA==0)
96 1 {
97 2 if(TF0 == 1) return ERROR;
98 2 }
99 1 for(i=0;i<7;i++);
100 1 return OK;
101 1
102 1 }
103 /********************************************************************
104 * 名称: SendByte
105 * 说明:
106 * 功能: 发送1 Byte 数据
107 * 调用: Delay_us
108 * 输入: uchar Byte
109 * 返回值: 无
110 ***********************************************************************/
111 void SendByte(uchar Byte) //发送1 Byte 数据
112 {
113 1 uchar i;
114 1 uchar j;
115 1 for(j=0;j<8;j++)
116 1 {
117 2 IIC_SCL = 0;
C51 COMPILER V7.06 URM37_WR 10/07/2005 20:45:27 PAGE 3
118 2 for(i=0;i<7;i++);
119 2 IIC_SDA = (bit)(Byte & 0x80);
120 2 Byte <<= 1;
121 2 for(i=0;i<7;i++);
122 2 IIC_SCL = 1;
123 2 for(i=0;i<7;i++);
124 2 }
125 1 IIC_SCL = 0;
126 1
127 1 }
128 /********************************************************************
129 * 名称: Send_BIT9RW
130 * 说明:
131 * 功能: 发送第9位的R/W_N
132 * 调用: Delay_us
133 * 输入: uchar RW
134 * 返回值: 无
135 ***********************************************************************/
136 void Send_BIT9RW(uchar RW) //发送第9位的R/W_N
137 {
138 1 uchar i;
139 1 IIC_SCL = 0;
140 1 for(i=0;i<7;i++);
141 1 if(RW == W)
142 1 IIC_SDA = W;
143 1 else
144 1 IIC_SDA = R;
145 1
146 1 for(i=0;i<7;i++);
147 1 IIC_SCL = 1;
148 1 for(i=0;i<7;i++);
149 1 IIC_SCL = 0;
150 1 IIC_SDA = 1;
151 1 for(i=0;i<7;i++);
152 1
153 1 }
154
155 /********************************************************************
156 * 名称: ReceiveTowByte
157 * 说明:
158 * 功能: 接收 2 Byte数据
159 * 调用: Delay_us
160 * 输入: uint *p
161 * 返回值: 无
162 ***********************************************************************/
163 void ReceiveTowByte(uint *p) //接收 2 Byte数据
164 {
165 1 uchar i;
166 1 uchar j;
167 1 uint TempInt;
168 1 *p = 0;
169 1 TempInt = 0x8000;
170 1 for(j=0;j<16;j++)
171 1 {
172 2 IIC_SCL = 1;
173 2 for(i=0;i<7;i++);
174 2 if(IIC_SDA == 1)
175 2 *p = *p + TempInt;
176 2 CY = 0;
177 2 TempInt = TempInt>>1;
178 2 for(i=0;i<7;i++);
179 2 IIC_SCL = 0;
C51 COMPILER V7.06 URM37_WR 10/07/2005 20:45:27 PAGE 4
180 2 for(i=0;i<7;i++);
181 2 }
182 1
183 1 }
184 /********************************************************************
185 * 名称: Read_Temper
186 * 说明:
187 * 功能: 读取温度的低层驱动模块
188 * 调用: IIC_START,SendByte,Send_BIT9RW,IIC_ACK,ReceiveTowByte
189 * 输入: uint *p
190 * 返回值: 操作标志
191 ***********************************************************************/
192 uchar Read_Temper(uint *p)
193 {
194 1 uchar Temp;
195 1
196 1 IIC_START(); //启动信号
197 1 SendByte(140);
198 1 Send_BIT9RW(R); //读
199 1 Temp = IIC_ACK();
200 1 if(Temp == OK)
201 1 {
202 2 ReceiveTowByte(p);
203 2 return OK;
204 2 }
205 1 else
206 1 return ERROR;
207 1 }
208
209 /********************************************************************
210 * 名称: Read_EEPROM
211 * 说明:
212 * 功能: 读模块内部的EEPROM
213 * 调用: IIC_START,SendByte,Send_BIT9RW,IIC_ACK,ReceiveTowByte
214 * 输入: uchar Addr,uchar *p
215 * 返回值: 操作标志
216 ***********************************************************************/
217 uchar Read_EEPROM(uchar Addr,uchar *p)//读EEPROM
218 {
219 1 uchar Temp;
220 1 uint DataInt;
221 1
222 1 IIC_START(); //启动信号
223 1 SendByte(Addr);
224 1 Send_BIT9RW(R); //读
225 1
226 1 Temp = IIC_ACK();
227 1 if(Temp == OK)
228 1 {
229 2 ReceiveTowByte(&DataInt);
230 2 *p = (uchar)(DataInt&0x00ff);
231 2 return OK;
232 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -