📄 control.lst
字号:
C51 COMPILER V8.02 CONTROL 09/17/2008 21:00:00 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE CONTROL
OBJECT MODULE PLACED IN control.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE control.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //////////////////////////////////////////////////////////////////////////////
2
3 //_________________________________//
4 // 0 1 2 3 4 5 6 7 8 9 a b c d e f //
5 /////////////////////////////////////
6 // O u t : 1 2 3 4 5 6 7 8 H z // disp_buf0[16]
7 // I n : 8 7 6 5 4 3 2 1 H z // disp_buf1[16]
8 /////////////////////////////////////
9
10 extern unsigned char disp_buf0[16];
11 extern unsigned char disp_buf1[16];
12 extern unsigned char code disp_error[16];
13 extern unsigned char code disp_init[16];
14 extern unsigned char word_buf[5];
15 extern unsigned char code disp_max[16];
16
17 extern unsigned char check_key(void);
18
19 extern void ad9851_init(void);
20 extern void send_word(unsigned char *fq_word);
21
22 extern void lcd_init(void);
23 extern void write_lcd(unsigned char select,unsigned char dat);
24 extern void display_line(unsigned char y, unsigned char *dat);
25
26 unsigned long code word_table[8] = {24,238,2386,23860,238609,2386092,23860929,238609294};//频率表
27
28 void delay_ms(unsigned char time) //长延时函数
29 {
30 1 unsigned char cnt;
31 1 while(time--)
32 1 for (cnt=17;cnt>0;--cnt);
33 1 }
34 void delay_s(unsigned int time) //短延时函数
35 {
36 1 unsigned int cnt;
37 1 while(time--)
38 1 for (cnt=1000;cnt>0;--cnt);
39 1 }
40
41 main()
42 {
43 1 char nbit = 0;
44 1 unsigned char key;
45 1 unsigned char frequent[8]; //用来查表的纯频率数组
46 1 unsigned char i;
47 1 unsigned long temp;
48 1
49 1 ad9851_init(); //各部件的初始化
50 1 lcd_init();
51 1
52 1 send_word(word_buf); //初始化频率
53 1 display_line(0,disp_buf0);
54 1 display_line(1,disp_init);
55 1 delay_s(200);
C51 COMPILER V8.02 CONTROL 09/17/2008 21:00:00 PAGE 2
56 1 display_line(1,disp_buf1);// 液晶默认显示
57 1
58 1 while(1)
59 1 {
60 2 key = check_key();
61 2 if(key == 10) //退格键
62 2 {
63 3 nbit--;
64 3 if (nbit < 0) // 记得加 上如果开机状态 输退格处理
65 3 nbit = 0;
66 3 frequent[nbit] = 0;
67 3 disp_buf1[5 + nbit] = ' ';
68 3 display_line(1,disp_buf1);
69 3 }
70 2 if(key == 11) //确认键
71 2 {
72 3 temp = 0;
73 3 for(i=0;i<nbit;i++) // 查表,读频率
74 3 {
75 4 temp += (word_table[nbit-i-1]*frequent[i]);
76 4 }
77 3 for(i=0;i<4;i++)
78 3 {
79 4 word_buf[4-i] = (unsigned char)(temp>>(8*i));
80 4 }
81 3 send_word(word_buf); //更新频率
82 3
83 3 if(nbit != 0)
84 3 for(i=0;i<8;i++)
85 3 disp_buf0[5+i] = ' '; //去掉上次显示
86 3
87 3 for(i=0;i<nbit;i++) //更新频率显示
88 3 {
89 4 disp_buf0[13-nbit+i] = frequent[i] + 0x30;
90 4 }
91 3 display_line(0,disp_buf0);
92 3 for (i=0;i<8;i++)
93 3 {
94 4 disp_buf1[5+i] = ' '; //清输入显示
95 4 frequent[i] = 0;
96 4 }
97 3
98 3 display_line(1,disp_buf1);
99 3 nbit = 0;
100 3 }
101 2 if(key <= 9 && key >= 0) //数字键
102 2 {
103 3 if(nbit > 7 || ((nbit == 7) && (frequent[0] > 7))) //超出最大范围
104 3 {
105 4 display_line(1,disp_error);
106 4 display_line(0,disp_max); //显示超范围错误
107 4 delay_s(200);
108 4 display_line(0,disp_buf0);
109 4 for(i=0;i<8;i++) //清屏幕
110 4 {
111 5 nbit = 0;
112 5 disp_buf1[5 + i] = ' ';
113 5 frequent[i] = 0;
114 5 }
115 4 display_line(1,disp_buf1);
116 4 }
117 3 else //数字键处理过程
C51 COMPILER V8.02 CONTROL 09/17/2008 21:00:00 PAGE 3
118 3 {
119 4 frequent[nbit] = key;
120 4 disp_buf1[5 + nbit] = key + 0x30;
121 4 display_line(1,disp_buf1);
122 4 nbit++;
123 4 }
124 3 }
125 2 }
126 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 591 ----
CONSTANT SIZE = 32 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 15
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 + -