📄 main.lst
字号:
C51 COMPILER V7.07 MAIN 08/22/2008 23:25:41 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 // Keil C
2 // AT89S52
3 // clock: external 11.0592Mhz
4
5 #include <reg52.h>
6 #include <string.h>
7 #include "tea5767.h"
8 #include "key.h"
9 #include "led.h"
10 #include "global.h"
11 #include "main.h"
12 #include "i2c.h"
13
14
15
16
17 //////////////////////////////////////////////////////////
18 //-----------------------------------------------------
19 void Init_special_interrupts(void)
20 {
21 1 EA = 1;
22 1 ES = 0;
23 1 ET1 = 0;
24 1 ET0 = 1;
25 1 EX1 = 0;
26 1 EX0 = 0;
27 1 }
28
29 //-------------------------------------------------
30 void Init_timer()
31 {
32 1 TMOD = 0x31; //T1为禁止,T0为8位自动重装计数器
33 1 TH0 = 0xFA; //T0定时扫描键盘,4ms×5
34 1 TL0 = 0x5F;
35 1
36 1 TR0 = 1;
37 1
38 1
39 1 }
40
41 //----------------------------------------------------
42 void Timer_0(void) interrupt 1 //中断方式0
43 {
44 1 unsigned char new_key; // 新键值
45 1
46 1
47 1 // TL0 = 256 - (T0INTERVAL*FOSC)/1024000L;
48 1 //--------------------------------------------
49 1 // 用户在下面添加周期性处理程序,如定时等
50 1 if (Dis_Flag)
51 1 {
52 2 Display_LED(DisBuffer);
53 2 }
54 1 //--------------------------------------------
55 1
C51 COMPILER V7.07 MAIN 08/22/2008 23:25:41 PAGE 2
56 1
57 1 // 读键盘示范---------------------------------
58 1 new_key = Read_Key();
59 1 if ((new_key & 0xF0) == 0x00)
60 1 {
61 2 if (new_key != old_key) // 有新的按键被按下
62 2 {
63 3 key_counter = 0; // 计时开始
64 3 Key_Process = FALSE;
65 3 }
66 2 else
67 2 {
68 3 if ((key_counter >= 30) && !Key_Process) // 按下键超过50ms且未处理
69 3 {
70 4 Key_Push_Flag = TRUE;
71 4 Key_Code = new_key;
72 4 }
73 3 else key_counter++; // 连续计数
74 3 }
75 2 }
76 1 old_key = new_key; // 保存键值
77 1
78 1 TH0 = 0xFA; //T0定时扫描键盘,4ms×5
79 1 TL0 = 0x5F;
80 1
81 1 }
82
83 //-------------------------------
84
85 void init(void)
86 {
87 1
88 1
89 1 P0 = 0xFF;
90 1 P1 = 0xFF;
91 1 P2 = 0xFF;
92 1 P3 = 0xFF;
93 1
94 1
95 1 delay_ms(100);
96 1
97 1 Init_special_interrupts();
98 1 Init_timer();
99 1
100 1 }
101
102 //////////////////////////////////////////////////////////////////
103 void main(void)
104 {
105 1 init();
106 1 /////////////////////////////////
107 1 temp = EEPROM_read( 2 );
108 1
109 1 if ((temp == Seltct_TURNING)||(temp == Seltct_FREQ))
110 1 {
111 2 Work_STAT = temp;
112 2 }
113 1 else Work_STAT = Seltct_TURNING;
114 1 Freq = Load_Freq();
115 1
116 1 Key_Push_Flag = FALSE;
117 1 Key_Process = FALSE;
C51 COMPILER V7.07 MAIN 08/22/2008 23:25:41 PAGE 3
118 1 Search_Flag = FALSE;
119 1 Dis_Flag = TRUE;
120 1
121 1
122 1 DisBuffer[4] = 0x0; //LED点亮,Seltct_TURNING
123 1 if ((Freq<87500)||(Freq>108000))
124 1 {
125 2 Freq = 87500;
126 2 Work_STAT = Seltct_TURNING;
127 2 }
128 1 else if (Work_STAT == Seltct_FREQ)
129 1 {
130 2 DisBuffer[4] = 0x0F; //LED关闭,Seltct_FREQ
131 2 }
132 1
133 1 Freq_2_Buffer(Freq,DisBuffer); //初始化显示频率值
134 1
135 1 Display_LED( DisBuffer );
136 1
137 1 Init_Tea5767( Freq );
138 1
139 1 Save_Freq( Freq );
140 1
141 1
142 1 delay_ms(10);
143 1
144 1
145 1 while(1)
146 1 {
147 2 if ( Key_Push_Flag )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -