?? 發射.lst
字號:
C51 COMPILER V9.00 發蒧 05/18/2012 11:40:23 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE 發蒧
OBJECT MODULE PLACED IN 發射.OBJ
COMPILER INVOKED BY: D:\專業軟件\Qc\C51\BIN\C51.EXE 發射.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <stc89.h>
2
3 //13.37589
4
5 #define uchar unsigned char
6 #define uint unsigned int
7 sbit led=P3^7;
8 sbit out=P3^6;
9 #define port P2
10
11 //定義地址碼
12 #define addr0 0x01
13 #define addr1 0x02
14
15
16 bit key_bit; //按鍵重復標記
17 bit hw;
18 bit over;
19 bit ss;
20
21 uchar time;
22
23
24 void delay();
25 void InitTimer0(void);
26 void InitUART(void);
27 void send(uchar c);
28 uchar key();
29 void send_star();
30 void send_char(uchar c);
31 void send_hw(uchar c);
32
33 void delay1s(void) //誤差 -0.000000000003us
34 {
35 1 unsigned char a,b,c;
36 1 for(c=45;c>0;c--)
37 1 for(b=132;b>0;b--)
38 1 for(a=167;a>0;a--);
39 1 }
40
41
42 void delay() //1ms 誤差 -0.651041666667us
43 {
44 1 unsigned char a,b;
45 1
46 1 for(b=102;b>0;b--)
47 1 for(a=3;a>0;a--);
48 1 }
49
50 void InitTimer0(void)
51 {
52 1 TMOD = 0x22;
53 1 TH0 = 0xe6;
54 1 TL0 = 0xe6;
55 1 EA = 1;
C51 COMPILER V9.00 發蒧 05/18/2012 11:40:23 PAGE 2
56 1 ET0 = 1;
57 1 TR0 = 1;
58 1 } //13us
59
60 void InitUART(void) //4800
61 {
62 1 // TMOD = 0x20;
63 1 SCON = 0x50;
64 1 TH1 = 0xF3;
65 1 TL1 = TH1;
66 1 PCON = 0x00;
67 1 ES = 1;
68 1 TR1 = 1;
69 1 }
70 void send(uchar c)
71 {
72 1 SBUF = c;
73 1 while(!TI);
74 1 TI = 0;
75 1 }
76
77
78 uchar key()
79 {
80 1 uchar a;
81 1 a=0;
82 1 port=0x0f;
83 1 a=port;
84 1
85 1 if(a==0x0f)
86 1 {
87 2 key_bit=1;
88 2 delay();
89 2 return 0;
90 2 }
91 1 if(!key_bit) return 0;
92 1 delay();
93 1 if(port==a)
94 1 {
95 2 port=0xf0;
96 2 a|=port;
97 2 a=~a;
98 2 }
99 1 else return 0;
100 1 if(a)
101 1 {
102 2 key_bit=0;
103 2 switch(a)
104 2 {
105 3 case 0x11: return 1;
106 3 case 0x12: return 2;
107 3 case 0x14: return 3;
108 3 case 0x18: return 4;
109 3 case 0x21: return 5;
110 3 case 0x22: return 6;
111 3 case 0x24: return 7;
112 3 case 0x28: return 8;
113 3 case 0x41: return 9;
114 3 case 0x42: return 10;
115 3 case 0x44: return 11;
116 3 case 0x48: return 12;
117 3 case 0x81: return 13;
C51 COMPILER V9.00 發蒧 05/18/2012 11:40:23 PAGE 3
118 3 case 0x82: return 14;
119 3 case 0x84: return 15;
120 3 case 0x88: return 16;
121 3 default: return 0;
122 3 }
123 2 }// if(a)
124 1 }
125
126 void main(void)
127 {
128 1 uchar c;
129 1 InitTimer0();
130 1 InitUART();
131 1 led=0;
132 1 send(0xaa);
133 1 while(1)
134 1 {
135 2 c=key();
136 2 if(c)
137 2 {
138 3 send(c);
139 3 send_hw(c);
140 3 }
141 2
142 2
143 2 }
144 1 }
145
146 void send_star()
147 {
148 1 uchar i;
149 1 i=8;
150 1 while(i--)
151 1 {
152 2 time=173; //9ms
153 2 hw=1; //發射
154 2 while(!over);
155 2 }
156 1
157 1 i=4;
158 1 while(i--) //4.5ms
159 1 {
160 2 time=173;
161 2 hw=0;
162 2 while(!over);
163 2 }
164 1 }
165
166 void send_char(uchar c)
167 {
168 1 uchar i;
169 1 for(i=0;i<8;i++)
170 1 {
171 2 time=45;
172 2 hw=1;
173 2 while(!over);
174 2
175 2 if(c&0x80) time=126;
176 2 else time=45;
177 2 hw=0;
178 2 c=c<<1;
179 2 while(!over);
C51 COMPILER V9.00 發蒧 05/18/2012 11:40:23 PAGE 4
180 2 time=45;
181 2 hw=1;
182 2
183 2 }
184 1 }
185
186 void send_hw(uchar c)
187 {
188 1 key_bit=0;
189 1 send_star();
190 1 send_char(addr0);
191 1 send_char(addr1);
192 1 send_char(c);
193 1 send_char(~c);
194 1
195 1 }
196
197 void Timer0Interrupt(void) interrupt 1
198 {
199 1 if(time) time--,over=0;
200 1 else over=1,hw=0;
201 1 if(hw) out=~out;
202 1 else out=1;
203 1 }
204
205 void UARTInterrupt(void) interrupt 4
206 {
207 1 uchar c;
208 1 if(RI)
209 1 {
210 2 RI = 0;
211 2 /* c=SBUF;
212 2 if(c==0xaa) ya
213 2 {
214 2 delay1s();
215 2 ISP_CONTR=0x60;
216 2 } 為了方便下載*/
217 2 }
218 1 else
219 1 TI = 0;
220 1 }
*** WARNING C280 IN LINE 207 OF 發射.C: 'c': unreferenced local variable
221
*** WARNING C291 IN LINE 124 OF 發射.C: not every exit path returns a value
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 394 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 2
IDATA SIZE = ---- ----
BIT SIZE = 4 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -