📄 adc0808.lst
字号:
C51 COMPILER V8.05a ADC0808 08/04/2008 21:44:04 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE ADC0808
OBJECT MODULE PLACED IN adc0808.OBJ
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE adc0808.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <at89x51.h>
2 char code str[] = "welcome! Designer:SHN \n\r";
3 unsigned char x[]={'0','1','2','3','4','5','6','7','8','9','.','\n','V'};
4 unsigned char y=0,z=0,w=0,m=0;
5 float re1,result=0,q;
6
7 int ner=0;
8 //unsigned int tem=0;
9 sbit sda=P1^5;
10 sbit scl=P1^4;
11 sbit add_a=P1^0;
12 sbit add_b=P1^1;
13 sbit add_c=P1^2;
14 sbit ale=P1^3;
15 sbit open=P3^6;
16 sbit oe=P3^4;
17 sbit eoc=P3^5;
18 sbit clock=P3^3;
19 void delay_50us(unsigned int t)
20 {
21 1 unsigned char j;
22 1 for(;t>0;t--)
23 1 for(j=19;j>0;j--);
24 1 }
25 /*
26 bit errorbit;
27 unsigned char dat[3]={0x30,0x20,0x10};
28 unsigned char receive[3]={0x00,0x00,0x00};
29 void start(void)
30 {
31 sda=1; //SCL
32 delay_50us(20);
33 scl=1;
34 delay_50us(20);
35 sda=0;
36 delay_50us(20);
37 scl=0;
38 delay_50us(20);
39 }
40 void stop(void)
41 {
42 sda=0;
43 delay_50us(20);
44 scl=1;
45 delay_50us(20);
46 sda=1;
47 delay_50us(20);
48 }
49 void test_report(void)
50 {
51 sda=1;
52 delay_50us(20);
53 scl=1;
54 delay_50us(20);
55 errorbit=0;
C51 COMPILER V8.05a ADC0808 08/04/2008 21:44:04 PAGE 2
56 if (sda==0) errorbit=0;
57 scl=0;
58 delay_50us(20);
59 }
60 void no_report(void)
61 {
62 scl=0;
63 delay_50us(20);
64 sda=1;
65 delay_50us(20);
66 scl=1;
67 delay_50us(20);
68 scl=0;
69 delay_50us(20);
70 }
71 void write_8bit(unsigned char input)
72 {
73 unsigned char i;
74 for (i=0;i<8;i++)
75 {
76 if ((input&0x80)!=0x00) sda=1;
77 else sda=0;
78 delay_50us(20);
79 scl=1;
80 delay_50us(20);
81 scl=0;
82 delay_50us(20);
83 input=input<<1;
84 }
85 }
86 unsigned char read_8bit(void)
87 {
88 unsigned char i,temp=0x00;
89 for (i=0;i<8;i++)
90 {
91 temp=temp<<1;
92 scl=1;
93 delay_50us(20);
94 if (sda==1) temp=temp|0x01;
95 scl=0;
96 delay_50us(20);
97 }
98 return (temp);
99 }
100 void send(unsigned char *pp,unsigned char address)
101 {
102 do
103 {
104 start();
105 write_8bit(0xa0);
106 test_report();
107 write_8bit(address);
108 test_report();
109 write_8bit(*pp);
110 test_report();
111 delay_50us(20);
112 address++;
113 pp++;
114 stop();
115 }while(*pp!='\0');
116 }
117 unsigned char read(unsigned char address)
C51 COMPILER V8.05a ADC0808 08/04/2008 21:44:04 PAGE 3
118 {
119 unsigned temp1=0x00;
120 start();
121 write_8bit(0xa0);
122 test_report();
123 write_8bit(address);
124 test_report();
125 start();
126 write_8bit(0xa1);
127 test_report();
128 temp1=read_8bit();
129 no_report();
130 delay_50us(20);
131 stop();
132 return (temp1);
133 }*/
134 void timer0_stop(void) interrupt 1 using 1
135 {
136 1 clock=~clock;
137 1 }
138 void read_ad0808(void)
139 {
140 1
141 1 ale=1;
142 1 open=1;
143 1 ale=0;
144 1 open=0;
145 1
146 1 while(!eoc);
147 1
148 1 }
149 void send_str()
150 {
151 1 unsigned char i = 0;
152 1 while(str[i] != '\0')
153 1 {
154 2 SBUF = str[i];
155 2 while(!TI);
156 2 TI = 0;
157 2 i++;
158 2 }
159 1 }
160 void send_char(unsigned char *p)
161
162 {
163 1 SBUF = *p;
164 1 while(!TI);
165 1 TI = 0;
166 1 }
167 void main(void)
168 {
169 1 TH1 = 0xF3; // 波特率9600
170 1 TL1 = 0xF3;
171 1 SCON = 0x50; // 设定串行口工作方式
172 1 PCON = 0x00; // 波特率不倍增
173 1
174 1 open=0;
175 1 oe=0;
176 1 ale=0;
177 1 add_a=0;
178 1 add_b=0;
179 1 add_c=0;
C51 COMPILER V8.05a ADC0808 08/04/2008 21:44:04 PAGE 4
180 1 TMOD=0x12;
181 1 TH0=255;
182 1 TL0=255;
183 1 ET0=1;
184 1 EA=1;
185 1 TR0=1;
186 1
187 1
188 1 do
189 1 {
190 2
191 2 read_ad0808();
192 2 if (eoc==1)
193 2 {
194 3 oe=1;
195 3 q=P2;
196 3 oe=0;
197 3 P3_7=0;
198 3 P0=q;
199 3 ner=150;
200 3 TR0=0;
201 3 TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
202 3
203 3 result=q/256*5*100;
204 3
205 3 y=result/100;
206 3 z=(result-y*100)/10;
207 3 w=result-y*100-z*10;
208 3 TR1 = 1;
209 3
210 3 send_char(&x[y]); // 回传接收到的数据
211 3 send_char(&x[10]);
212 3 send_char(&x[z]);
213 3 send_char(&x[w]);
214 3 send_char(&x[12]);
215 3 send_char(&x[11]);
216 3
217 3 TR1=0;
218 3 TR0=1;
219 3 delay_50us(200);
220 3 }
221 2
222 2 /*if (P3_7==0)
223 2 {
224 2 send(&y,0x00);
225 2 while(!P3_7);
226 2 } */
227 2 }while(1);
228 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 404 ----
CONSTANT SIZE = 25 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 31 ----
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 + -