📄 1.lst
字号:
C51 COMPILER V7.10 1 05/24/2006 17:19:53 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE 1
OBJECT MODULE PLACED IN 1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\Bin\c51.exe 1.c DB SB OE ROM(COMPACT) SMALL OT(6,SPEED) WL(2) RB(0)
line level source
1
2 #include <reg52.h>
3 #include <intrins.h>
4 #include <absacc.h>
5 #define uchar unsigned char
6 #define uint unsigned int
7 sbit p2_4=P2^4;
8 sbit p1_1=P1^1;
9 sbit p1_2=P1^2;
10 sbit p2_7=P2^7;
11 sbit p2_5=P2^5;
12 sbit p2_6=P2^6;
13 sbit p3_3=P3^3;
14 sbit p3_4=P3^4;
15 sbit p3_5=P3^5;
16 sbit scl=P3^6;
17 sbit sda=P3^7;
18 sbit le=P2^3; //锁存器控制位;
19
20
21 uint idata AcH;
22 uint idata ArH;
23 uint idata jpn=0; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
24 uchar idata clocknum0;/*200~1000HZ输出变量*/
25 uchar idata clocknum1;
26 uchar idata buffer[3];
27 bit idata flag; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
28
29
30 void outmeasure(void) interrupt 3 //内中断2,输出200~1000HZ频率
31 {
32 1 uchar i=100; //固定时间
33 1 TH1=clocknum0;/*125ms*/
34 1 TL1=clocknum1;
35 1 p1_2=1;
36 1 while(i>0)
37 1 {
38 2 i--;
39 2 }
40 1 p1_2=0;
41 1 }
42
43
44 void delay() //延时n毫秒
45 {
46 1 static uchar k;
47 1 for(k=0;k<100;k++)
48 1 {}
49 1 }
50 void display0(uchar *p) //显示//p
51 {
52 1 uchar code codeled[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳极0~9
53 1 p2_5 = 0;
54 1 P0=codeled[*p];
55 1 delay();
C51 COMPILER V7.10 1 05/24/2006 17:19:53 PAGE 2
56 1 p++;
57 1 p2_5=1;
58 1 p2_6= 0;
59 1 P0=codeled[*p];
60 1 delay();
61 1 p++;
62 1 p2_6=1;
63 1 p2_7=0;
64 1 P0=codeled[*p];
65 1 delay();
66 1 p2_7=1;
67 1 }
68 void comput2(float s)
69 {
70 1 float y0;
71 1 uint y1;
72 1 y0=s*200+200; //0%~4%CH4对应200~1000
73 1 y1=65536-250000/y0;
74 1 clocknum0=(y1&0xff);/*200HZ输出定时初值*/
75 1 clocknum1=y1>>8;
76 1 }
77 void delay0(void) //时间不知道是否合适
78 {
79 1 _nop_();
80 1 _nop_();
81 1 }
82
83 void DelayX1ms(uint s)
84 {
85 1 uint j,k;
86 1 for(j=0;j<s;j++)
87 1 for(k=0;k<60;k++)
88 1 {};
89 1 }
90 void I2cStart(void) //iic bus 起始信号
91 {
92 1 sda=1;
93 1 scl=1;
94 1 delay0();
95 1 sda=0;
96 1 delay0();
97 1 scl=0;
98 1 }
99 void I2cStop(void) //iic bus 停止信号
100 {
101 1 sda=0;
102 1 delay0();
103 1 scl=1;
104 1 delay0();
105 1 sda=1;
106 1 }
107 bit I2cSendChar(uchar bytedata) //传送一个char数据到I2c上
108 {
109 1 static uchar i;
110 1 bit ack;
111 1 for(i=0;i<8;i++)
112 1 {
113 2 if(bytedata&0x80)
114 2 sda=1;
115 2 else
116 2 sda=0;
117 2 bytedata<<=1;
C51 COMPILER V7.10 1 05/24/2006 17:19:53 PAGE 3
118 2 delay0();
119 2 scl=1;
120 2 delay0();
121 2 scl=0;
122 2 delay0();
123 2 }
124 1 sda=1;
125 1 delay0();
126 1 scl=1;
127 1 delay0();
128 1 ack=sda;
129 1 scl=0;
130 1 delay0();
131 1 return ack;
132 1 }
133 uchar I2cReceiveChar(void) //从I2c上读一数据
134 {
135 1 static uchar i;
136 1 static uchar bytedata=0;
137 1 for(i=0;i<8;i++)
138 1 {
139 2 scl=1;
140 2 delay0();
141 2 bytedata<<=1;
142 2 if(sda)
143 2 bytedata|=0x01;
144 2 scl=0;
145 2 delay0();
146 2 }
147 1 return bytedata;
148 1 }
149 void SendAcknowledge(bit ack) //传送确认信号
150 {
151 1 sda=ack;
152 1 scl=1;
153 1 delay0();
154 1 scl=0;
155 1 }
156
157 void EEprom24c02Write(uchar address,uchar bytedata) //向 24c02写数据
158 {
159 1 I2cStart();
160 1 I2cSendChar(0xa0);
161 1 I2cSendChar(address);
162 1 I2cSendChar(bytedata);
163 1 I2cStop();
164 1 DelayX1ms(10);
165 1
166 1 }
167 uchar EEprom24c02Read(uchar address) //从24c02读数据
168 {
169 1 uchar bytedata;
170 1 I2cStart();
171 1 I2cSendChar(0xa0);
172 1 I2cSendChar(address);
173 1 I2cStart();
174 1 I2cSendChar(0xa1);
175 1 bytedata=I2cReceiveChar();
176 1 SendAcknowledge(1);
177 1 I2cStop();
178 1 return bytedata;
179 1 }
C51 COMPILER V7.10 1 05/24/2006 17:19:53 PAGE 4
180 //--------------------------------------------------------------------------//
181 void WriteK0(float s)
182 {
183 1 uchar i,addr=0x13,m;
184 1 uint y[4];
185 1 y[0]=s;
186 1 y[1]=s*10-y[0]*10;
187 1 y[2]=s*100-y[0]*100-y[1]*10;
188 1 y[3]=s*1000-y[0]*1000-y[1]*100-y[2]*10;
189 1 for(i=0;i<4;i++)
190 1 {
191 2 m=y[i];
192 2 EEprom24c02Write(addr,m);
193 2 addr++;
194 2 }
195 1 }
196
197
198 //-----------------------------------------------------------------//
199
200 void oldbjz (void) //显示存储的报警值
201 {
202 1 uchar add=0x10;//#10h,#11h存报警值
203 1 uchar i; //p
204 1 uint j=200;
205 1 uchar *q=buffer; //p
206 1 for(i=0;i<3;i++) //读出报警值
207 1 {
208 2 buffer[i]=EEprom24c02Read(add);//二进制数需转换成bcd,送显示
209 2 add+=1;
210 2 }
211 1
212 1 while(j)
213 1 {
214 2 display0(q);
215 2 j--;
216 2 }
217 1
218 1 }
219 //----------------------------------------------------------------------------//
220
221 void shuzi(uint count)
222 {
223 1
224 1 bit j=1;
225 1 uchar a;
226 1 uchar *p;
227 1 uint num;
228 1 uchar code codeled[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳极0~9
229 1 while(j)
230 1 {
231 2 if(p3_5==0)
232 2 {
233 3 j=0;
234 3 if(num>9)
235 3 num=0;
236 3 p=buffer+count;
237 3 DelayX1ms(100);
238 3 a=num;
239 3 le=1;
240 3 num++;
241 3 if(count==0)
C51 COMPILER V7.10 1 05/24/2006 17:19:53 PAGE 5
242 3 {
243 4 p2_4 = 0;
244 4 buffer[0]=a;
245 4 P0=codeled[*p];
246 4 DelayX1ms(10);
247 4 p2_4 = 1;
248 4 }
249 3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -