📄 led.lst
字号:
C51 COMPILER V6.10 LED 09/16/2005 10:13:25 PAGE 1
C51 COMPILER V6.10, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN .\led.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\led.c DEBUG OBJECTEXTEND
stmt level source
1
2 #include "led.h"
3
4 bit flag_9833=0;
5 unsigned char key_timer,count,led_sel,show_sel,key_in,key_hiter,key_undeal,key_buf[4],timer_counter;
6 unsigned char sel_9833,deal_counter,deal_buf[6],deal_device,point_loc,error_no,preset_ok;
7 unsigned char show_buf[6],seri_buf[8];
8 unsigned char step,ask,psk;
9
10 unsigned long f_in,fa,f1;
11 unsigned int add,f_buf[10];
12 //unsigned char code para_avl[4]="有效";
13
14 unsigned int code freq_regs[2] ={0x0051,0x3ae1};//100KHz
15
16
17 unsigned char code led_code[28][2]={{'0',0x3f},{'1',0x06},{'2',0x5b},{'3',0x4f},{'4',0x66},
18 {'5',0x6d},{'6',0x7d},{'7',0x07},{'8',0x7f},{'9',0x6f},
19 {'A',0x77},{'B',0x7C},{'C',0x39},{'D',0x5E},{'E',0x79},
20 {'F',0x71},{'H',0x76},{'L',0x38},{'O',0x5C},{'P',0x73},
21 {'U',0x3E},{'R',0x50},{'Y',0x6E},{'.',0x80},{'-',0x40},
22 {'=',0x48},{0X00,0X00},{0Xff,0Xff}};
23
24 extern void Initial9833(void);
25 /***********************************************************************/
26 void init_timer()
27 {
28 1
29 1 TH0=0xcf;
30 1 TL0=0X00;
31 1 TR0=1;
32 1 ET0=1;
33 1 timer_counter=0;
34 1 }
35 /**********************************************************************/
36
37 void init_8155()
38 {
39 1
40 1 Order_state=0x03;
41 1 led_contrl=0;
42 1 show_sel=0xfe;
43 1 led_sel=0x00;
44 1 key_timer=0;
45 1 key_hiter=0x0f;
46 1 key_in=0xff;
47 1 key_undeal=0;
48 1 key_buf[0]= key_buf[1]= key_buf[2]= key_buf[3]=0;
49 1 }
50 /**********************************************************************/
51 void get_show(unsigned long f)
52 {
53 1 unsigned char i;
54 1 if(f<100000){
55 2 show_buf[5]=0x00;
C51 COMPILER V6.10 LED 09/16/2005 10:13:25 PAGE 2
56 2 }
57 1 else { i=f/100000;
58 2 show_buf[5]=led_code[i][1]; f=f%100000;}
59 1 if(f<10000){ show_buf[4]=f_in<10000?0x0:led_code[0][1];}
60 1 else { i=f/10000;
61 2 show_buf[4]=led_code[i][1]; f=f%10000;}
62 1 if(f<1000)
63 1 { show_buf[3]=f_in<1000?0x0:led_code[0][1];}
64 1 else { i=f/1000; show_buf[3]=led_code[i][1]; f=f%1000;}
65 1 if(f<100){ show_buf[2]=f_in<100?0x0:led_code[0][1];}
66 1 else { i=f/100; show_buf[2]=led_code[i][1]; f=f%100;}
67 1 if(f<10){i=f/10; show_buf[1]=led_code[i][1]|0x80;}
68 1 else { i=f/10; show_buf[1]=(led_code[i][1]| 0x80); i=f%10;}
69 1 show_buf[0]=led_code[i][1];
70 1 }
71 /*********************************************************************/
72
73 void Initial9833()
74 {
75 1 f_buf[0]=freq_regs[1]; //f0_low
76 1 f_buf[1]=freq_regs[0]; //f0_high
77 1 f_buf[2]=0; //f1_low
78 1 f_buf[3]=0; //f1_high
79 1 f_buf[4]=0; //p0
80 1 f_buf[5]=2048; //p1
81 1 control=0; b28=1;//fsel=1;
82 1 Control_9833();
83 1
84 1 ask=0;psk=0;step=1;
85 1 f_in=1000;
86 1 get_show(f_in);
87 1
88 1 }
89
90
91
92 void time0() interrupt 1
93 {
94 1 TH0=0xff;
95 1 TL0=0xce; //定时器0中断十个us //此处应改为5us,如10KHz应改为50us
96 1 timer_counter++;
97 1 if(timer_counter>20)
98 1 { //此处也许应改为200
99 2 timer_counter=0;
100 2 key_timer=1;
101 2 }
102 1 sk_signal=~sk_signal;
103 1 if(ask){
104 2 if(sk_signal)Write9833(control);
105 2 else Write9833(control | 0x0800);
106 2 }
107 1
108 1 else if(psk){
109 2 if(sk_signal)Write9833(control);
110 2 else Write9833(control | 0x0400);
111 2 }
112 1
113 1
114 1 }
115
116
117 /******************************调整X9C102********************************/
C51 COMPILER V6.10 LED 09/16/2005 10:13:25 PAGE 3
118
119 void POT(bit updown)
120 {
121 1 AGC_CTL = 0;
122 1 UP=updown;
123 1 while(step--){
124 2 INC=1;_nop_();_nop_();_nop_();_nop_();_nop_();
125 2 INC=0;}
126 1 INC=1;
127 1 AGC_CTL = 1;
128 1 }
129 /*********************************************************************/
130 void main(void)
131 {
132 1 init_8155();
133 1 init_timer();
134 1 Initial9833();
135 1 EA=1;
136 1 while(1) {
137 2 FEED_DOG;
138 2 if(key_timer){
139 3 key_timer=0;
140 3 if(led_sel>0 && led_sel <5 ){
141 4 if(key_hiter != 0x0f && led_sel <5 ){ //有键按下
142 5 key_in=(port_c & 0x0f ); //读键
143 5 if(key_in != 0x0f ){ //键有效
144 6 if( key_in != key_buf[led_sel-1]){ //新键
145 7 key_undeal=1; key_buf[led_sel-1] = key_in;
146 7 switch(key_in){
147 8 case 0x0e:
148 8 key_in=16-led_sel;
149 8 break;
150 8 case 0x0d:
151 8 key_in=12-led_sel;
152 8 break;
153 8 case 0x0b:
154 8 key_in=8-led_sel;
155 8 break;
156 8 case 0x07:
157 8 key_in=4-led_sel;
158 8 break;
159 8 default:
160 8 key_buf[led_sel-1] = key_in=0x0f; key_undeal=0;
161 8 break; }}}
162 5
163 5 else {key_buf[led_sel-1] = 0x0f;}} //键无效
164 4 else{key_buf[led_sel-1] = 0x0f; }} //键释放
165 3
166 3 port_b=0xff;
167 3 port_a=show_buf[led_sel];
168 3 port_b=show_sel;
169 3 led_sel++;
170 3 show_sel=(show_sel<<1)+1;
171 3 if(led_sel>5){
172 4 led_sel=0;
173 4 show_sel=0xfe;}
174 3 key_hiter= (port_c & 0x0f); } //检测按键
175 2 if(key_undeal){
176 3 key_undeal=0;
177 3 deal_counter=0;
178 3 switch(key_in){
179 4 case 0x00: //↑
C51 COMPILER V6.10 LED 09/16/2005 10:13:25 PAGE 4
180 4 case 0x01: //↓
181 4 case 0x02: //←
182 4 case 0x03: //→
183 4 if(key_in==0x0) { f_in=f_in+1000;if(f_in>100000)f_in=100000;}
184 4 if(key_in==0x1) { f_in=f_in-1000;if(f_in<10)f_in=10;}
185 4 if(key_in==0x2) { f_in++;if(f_in>100000)f_in=100000;}
186 4 if(key_in==0x3) { f_in--;if(f_in<10)f_in=10;}
187 4
188 4 fa=f_in<<12; //*2**27/10**8
189 4 if((fa%25)>12) fa=fa/25+1;
190 4 else fa=fa/25;
191 4 fa=fa<<5;
192 4 if((fa%25)>12) fa=fa/25+1;
193 4 else fa=fa/25;
194 4 fa=fa<<5;
195 4 if((fa%5)>2) fa=fa/5+1;
196 4 else fa=fa/5;
197 4 f_buf[0]=(unsigned int )(fa & 0x03fff);
198 4 f_buf[1]=(unsigned int )(fa >>14);
199 4 add = f0write;
200 4 Write9833(0x2000);
201 4 Write9833(f_buf[0] | add);
202 4 Write9833(f_buf[1] | add);
203 4 Write9833(control );
204 4 get_show(f_in);
205 4 break;
206 4
207 4 case 0x04: //
208 4 case 0x05: // 三角波;
209 4 case 0x06: // 方波/2;
210 4 case 0x07: // 方波;
211 4 control=0;
212 4 if(key_in==0x05){mode=1; ask=0; psk=0;}// 三角波
213 4 if(key_in==0x06){opb=1; ask=0; psk=0;} // 方波/2;
214 4 if(key_in==0x07){opb=1; div2=1; ask=0; psk=0;}// 方波;
215 4 Write9833(control);
216 4 break;
217 4 case 0x08: // ask;
218 4 case 0x09: // psk;
219 4 if(key_in==8){ask=1; psk=0;}// ask;
220 4 else if(key_in==9){psk=1; ask=0;}// psk
221 4 control=0;
222 4 f_buf[0]=freq_regs[1]; //f0_low
223 4 f_buf[1]=freq_regs[0]; //f0_high
224 4 add = f0write;
225 4 Write9833(0x2000);
226 4 Write9833(f_buf[0] | add);
227 4 Write9833(f_buf[1] | add);
228 4 break;
229 4 case 0x0e: //减小
230 4 step=1;
231 4 POT(0);
232 4 break;
233 4 case 0x0f: //增大
234 4 step=1;
235 4 POT(1);
236 4 break;
237 4
238 4 default:
239 4 break;}
240 3 }
241 2
C51 COMPILER V6.10 LED 09/16/2005 10:13:25 PAGE 5
242 2
243 2 }
244 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1981 ----
CONSTANT SIZE = 60 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 75 5
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -