📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 08/08/2007 21:14:39 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "LCM12864.h"
2 #include "AD7008.h"
3
4 #define ZLG7290_Key 0x01 //键值寄存器地址
5
6 volatile bit Key_INT = 0;
7 volatile bit SIN_F = 0;
8 volatile bit AM_F = 0;
9 volatile bit FM_F = 0;
10 volatile bit PSK_F = 0;
11 volatile bit ASK_F = 0;
12 unsigned char KeyValue;
13 unsigned char Key_disp[8];
14 unsigned char n;
15 unsigned char m1=0,m2=0;
16 unsigned long FW;
17 unsigned char i;
18
19 bit fb = 0;
20
21 code char STR2[]="载波频率(Hz):";
22 code char clr[]= " " ;
23 code char STR3[]="通信工程系 ";
24 code unsigned char sinam[]={
25 127, 152, 176, 198, 217, 233, 244, 252, 255, 252, 244, 233, 217, 198, 176,
26 152, 127, 102, 78, 56, 37, 21, 10, 2, 0, 2, 10, 21, 37, 56,
27 78, 102};
28 code unsigned char sintab[]={
29 0x0, 0x0, 0x6C, 0x80, 0x0, 0x0, 0x81, 0x56, 0x0, 0x0, 0x95, 0x7E, 0x0, 0x0, 0xA9, 0xCF, 0x0, 0x0, 0xBA
-, 0x9B,
30 0x0, 0x0, 0xC7, 0x0B, 0x0, 0x0, 0xD0, 0x48, 0x0, 0x0, 0xD6, 0x29, 0x0, 0x0, 0xD7, 0x00, 0x0, 0x0, 0xD4
-, 0xA4,
31 0x0, 0x0, 0xCC, 0x15, 0x0, 0x0, 0xC0, 0x53, 0x0, 0x0, 0xB1, 0x35, 0x0, 0x0, 0xA0, 0x92, 0x0, 0x0, 0x8B
-, 0x6A,
32 0x0, 0x0, 0x76, 0x6B, 0x0, 0x0, 0x61, 0x95, 0x0, 0x0, 0x4C, 0x96, 0x0, 0x0, 0x37, 0x6E, 0x0, 0x0, 0x26
-, 0xCB,
33 0x0, 0x0, 0x17, 0xAD, 0x0, 0x0, 0x0B, 0xEB, 0x0, 0x0, 0x03, 0x5C, 0x0, 0x0, 0x00, 0x00, 0x0, 0x0, 0x00
-, 0xD7,
34 0x0, 0x0, 0x07, 0xB8, 0x0, 0x0, 0x10, 0xF5, 0x0, 0x0, 0x1D, 0x65, 0x0, 0x0, 0x2E, 0x31, 0x0, 0x0, 0x42
-, 0x82,
35 0x0, 0x0, 0x56, 0xAA, 0x0, 0x0, 0x6C, 0x80};
36 void Delayns()
37 {
38 1 unsigned char ii = 30;
39 1 do
40 1 {
41 2 ii--;
42 2 }while (ii!=0);
43 1 }
44 void INT_E0() interrupt 0 using 1
45 {
46 1 Key_INT = 1;
47 1 }
48 unsigned long BCDtoHEX(unsigned char *bcd)
49 {
C51 COMPILER V7.50 MAIN 08/08/2007 21:14:39 PAGE 2
50 1 unsigned long k;
51 1 unsigned char i;
52 1 i = 0;
53 1 k = 0;
54 1 while(i<n)
55 1 {
56 2 k = k * 10;
57 2 k += bcd[i];
58 2 i++;
59 2 }
60 1 return k;
61 1 }
62 void HEXtoBCD(unsigned long hex, unsigned char *bcd)
63 {
64 1 char i;
65 1 for (i=7; i>=0; i--)
66 1 {
67 2 bcd[i] = hex % 10;
68 2 hex = hex / 10;
69 2 }
70 1 }
71 void main()
72 {
73 1 unsigned char jj;
74 1 unsigned char h=0;
75 1 unsigned long k1;
76 1 unsigned char f1,f2,f3,f4;
77 1 I2C_Init();
78 1 Init_LCM();
79 1 CLEAR();
80 1 Init_AD7008();
81 1 FW = 1000;
82 1 Display(STR2,0x80); // 上面一行显示一个预定字符串
83 1 Display(STR3,0x98);
84 1 Delayus(200);
85 1 Write_command(0x90,0);
86 1 Write_command(0x0f,0); //光标处反白闪烁
87 1 IT0 = 1; //负边沿触发中断
88 1 EX0 = 1; //允许外部中断
89 1 EA = 1;
90 1 while(1)
91 1 {
92 2 if(Key_INT == 1)
93 2 {
94 3 Key_INT = 0;
95 3 ZLG7290_ReadReg(ZLG7290_Key, &KeyValue);
96 3 switch (KeyValue)
97 3 {
98 4 case 1: //数字键
99 4 case 2:
100 4 case 3:
101 4 case 4:
102 4 case 5:
103 4 case 6:
104 4 case 7:
105 4 case 8:
106 4 case 9:
107 4 case 10:
108 4 {
109 5 if(n == 0) //清除显示
110 5 {
111 6 Display(clr, 0x90);
C51 COMPILER V7.50 MAIN 08/08/2007 21:14:39 PAGE 3
112 6 Write_command(0x90,0);
113 6 Write_command(0x0f,0); //光标处反白闪烁
114 6 }
115 5 if(n>7) break;
116 5 if(KeyValue == 10) KeyValue = 0;
117 5 Key_disp[n] = KeyValue;
118 5 Write_data(Key_disp[n] + 0x30);
119 5 n++;
120 5 break;
121 5 }
122 4 case 11: //确认
123 4 {
124 5 FSELECT = 0;
125 5 if(n > 0)
126 5 {
127 6 FW = BCDtoHEX(Key_disp);
128 6 Write_command(0x0c,0);
129 6 n = 0;
130 6 SendFW(FW,0); //发送频率控制字到:FREQ0
131 6 }
132 5 break;
133 5 }
134 4 case 12: //步进100Hz
135 4 {
136 5 FW = FW + 100;
137 5 SendFW(FW,0); //发送频率控制字到:FREQ0
138 5 HEXtoBCD(FW,Key_disp);
139 5 Display(clr, 0x90);
140 5 Write_command(0x90,0);
141 5 h = 0;
142 5 for(jj=0;jj<8;jj++) //LCD显示,去除高位的0
143 5 {
144 6 if(Key_disp[jj] != 0 || h == 1)
145 6 {
146 7 h = 1;
147 7 Write_data(Key_disp[jj] + 0x30);
148 7 }
149 6 }
150 5 break;
151 5 }
152 4 case 13: //减小100Hz
153 4 {
154 5 FW = FW - 100;
155 5 SendFW(FW,0); //发送频率控制字到:FREQ0
156 5 HEXtoBCD(FW,Key_disp);
157 5 Display(clr, 0x90);
158 5 Write_command(0x90,0);
159 5 h = 0;
160 5 for(jj=0;jj<8;jj++)
161 5 {
162 6 if(Key_disp[jj] != 0 || h == 1)
163 6 {
164 7 h = 1;
165 7 Write_data(Key_disp[jj] + 0x30);
166 7 }
167 6 }
168 5 break;
169 5 }
170 4 case 14: //ASK 幅移键控
171 4 {
172 5 SendIQMOD(0x00);
173 5 while(!Key_INT)
C51 COMPILER V7.50 MAIN 08/08/2007 21:14:39 PAGE 4
174 5 {
175 6 if(fb == 0) {SendCM(0x04);fb = 1;Delayns();}
176 6 else {SendCM(0x00);fb = 0;Delayns();}
177 6 }
178 5 SendCM(0x00);
179 5 break;
180 5 }
181 4 case 19: //PSK 相移键控
182 4 {
183 5 while(!Key_INT)
184 5 {
185 6 if(fb == 0) {SendPW(2048);fb = 1;Delayns();}
186 6 else {SendPW(0);fb = 0;Delayns();}
187 6 }
188 5 SendPW(0);
189 5 break;
190 5 }
191 4 case 16: //FM 调频
192 4 {
193 5 i=0;
194 5 FSELECT = 0;
195 5 k1=FW * FW_1Hz;
196 5 f4=k1/0x1000000;
197 5 f3=k1%0x1000000/0x10000;
198 5 f2=k1%0x10000/0x100;
199 5 f1=k1%0x100;
200 5 while(!Key_INT)
201 5 {
202 6 write(f4+sintab[i++]);
203 6 write(f3+sintab[i++]);
204 6 write(f2+sintab[i++]);
205 6 write(f1+sintab[i++]);
206 6 load(FREQ0);
207 6 i &= 0x7f;
208 6 }
209 5 SendFW(FW,0);
210 5 break;
211 5 }
212 4 case 15: //AM 调幅
213 4 {
214 5 i = 0;
215 5 SendCM(0x04);
216 5 if(m1 == 0xf0)
217 5 {
218 6 m1 = 0;
219 6 if(m2 > 0x03) m2 = 0;
220 6 else m2++;
221 6 }
222 5 else m1 = m1 + 0x3c;
223 5 while(!Key_INT)
224 5 {
225 6 write(m2);
226 6 write(m1);
227 6 write(sinam[i]);
228 6 load(IQMOD);
229 6 i++;
230 6 i &= 0x1f;
231 6 }
232 5 SendCM(0x00);
233 5 break;
234 5 }
235 4 case 18: //FSK
C51 COMPILER V7.50 MAIN 08/08/2007 21:14:39 PAGE 5
236 4 {
237 5 SendFW(10000,1);
238 5 while(!Key_INT)
239 5 {
240 6 if(fb == 0) {FSELECT = 0;fb = 1;Delayus(5);}
241 6 else {FSELECT = 1;fb = 0;Delayus(5);}
242 6 }
243 5 FSELECT = 0;
244 5 break;
245 5 }
246 4 default: break;
247 4 }
248 3 }
249 2 }
250 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1095 ----
CONSTANT SIZE = 197 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 26
IDATA SIZE = ---- ----
BIT SIZE = 7 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -