📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 10/18/2005 14:20:32 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 DEBUG OBJECTEXTEND
line level source
1 #define Variable_GLOBE
2
3 //#define test_ir_value
4
5 #include "reg52.h"
6 #include "intrins.h"
7 #include "globedef.h"
8 #include "keydef.h"
9 #include "keyproc.h"
10 #include "main.h"
11 #include "intctrl.h"
12 #include "delay.h"
13 #include "m62429.h"
14 #include "i2c.h"
15 #include "Lcd.h"
16 #include "pcf8563.h"
17
18 unsigned char minute;
19 unsigned char hour;
20
21 void MCU_Init(void);
22 void State_Init(void);
23
24 extern unsigned char sector_erase(unsigned int sector_addr);
25 extern unsigned char byte_program(unsigned int byte_addr, unsigned char original_data);
26 extern unsigned char byte_read(unsigned int byte_addr);
27
28
29 void main(void)
30 {
31 1 unsigned char second = 0;
32 1 unsigned char second_save = 0;
33 1 unsigned char read_count = 0;
34 1
35 1 AV_MUTE = 1; //防止通电发生砰声,必须最先
36 1 MCU_Init();
37 1 init_pcf8563();
38 1 lcd_init();
39 1 State_Init();
40 1 while(1)
41 1 {
42 2 read_count++;
43 2 if(read_count == 255)
44 2 {
45 3 read_count = 0;
46 3 second = get_pcf8563(0x02);
47 3
48 3 if(second != second_save)
49 3 {
50 4 display_counter = 0;
51 4 display_maohao();
52 4
53 4 minute = get_pcf8563(0x03) & 0x7f;//分
54 4 minute = (minute >> 4) * 10 + (minute & 0x0f);//bcd 码调整到10进制
55 4 if(minute >= 60)//防止出错
C51 COMPILER V7.50 MAIN 10/18/2005 14:20:32 PAGE 2
56 4 minute = 0;
57 4 display_38(minute / 10);
58 4 display_48(minute % 10);
59 4
60 4 hour = get_pcf8563(0x04) & 0x3f;//时
61 4 hour = (hour >> 4) * 10 + (hour & 0x0f);//bcd 码调整到10进制
62 4 if(hour >= 24)//防止出错
63 4 hour = 0;
64 4 if(hour >= 13) //12小时制调整
65 4 hour = hour - 12;
66 4 if(hour == 0)
67 4 hour = 12;
68 4 display_18(hour / 10);
69 4 display_28(hour % 10);
70 4 }
71 3 else
72 3 {
73 4 if(display_counter >= 200) //200*3ms
74 4 display_unmaohao();
75 4 }
76 3 second_save = second;
77 3 }
78 2
79 2 if(ReadKey_Timer == 5)
80 2 {
81 3 Panel_SearchKey();
82 3 ReadKey_Timer = 0;
83 3 if(Volume_Need_Record == 1)
84 3 {
85 4 _nop_();
86 4 //I2C_PutByte(A24C02_WRITE, 0, Current_Volume);
87 4 /* 扇区擦除 */
88 4 sector_erase(0x2000);
89 4 /* 字节编程 */
90 4 byte_program(0x2000, Current_Volume);
91 4 Volume_Need_Record = 0;
92 4 }
93 3 }
94 2 KEY_Proc();
95 2
96 2 //检测到耳机插入静音功率放大器
97 2 if(POWER_Status == off)
98 2 {
99 3 // MUTE_DETECT1 = 1;
100 3 MUTE_DETECT2 = 1;//写1准备读
101 3 if(/*(MUTE_DETECT1 == 0) ||*/(MUTE_DETECT2 == 0))
102 3 AV_MUTE = 1; //检测到耳机信号,静音
103 3 else
104 3 AV_MUTE =(bit) mute_flag;
105 3 }
106 2
107 2 #ifdef test_ir_value
//测遥控码
SBUF = Remote_value;
while(TI == 0);
TI = 0;
DelayX1ms(255);DelayX1ms(255);DelayX1ms(255);
#endif
114 2
115 2 //MUTE_DETECT1 = 1;
116 2 MUTE_DETECT2 = 1;//写1准备读
117 2 P3 |= 0xf0;
C51 COMPILER V7.50 MAIN 10/18/2005 14:20:32 PAGE 3
118 2 /*开机状态,并且没插耳机进入静音*/
119 2 if( (POWER_Status == off)&&(MUTE_DETECT2 != 0)/*&&(MUTE_DETECT1 != 0)*/&&(( P3 & 0xf0 ) == 0xc0) )
120 2 {
121 3 AV_MUTE = 1;
122 3 mute_flag =(unsigned char)AV_MUTE;
123 3 if(AV_MUTE == 1)
124 3 display_mute(lcd_mute);
125 3 else
126 3 display_mute(lcd_unmute);
127 3 // DelayX1ms(125);
128 3 }
129 2 }
130 1 }
131
132
133 void MCU_Init(void)
134 {
135 1 EA = 0;
136 1 ES = 0;
137 1 ET1 = 0;
138 1 EX1 = 0;
139 1 ET0 = 1;
140 1 EX0 = 1;
141 1 #ifdef OSCFREQ110592
142 1 Timer2_CntL = 0x32;
143 1 Timer2_CntH = 0xF5;
144 1 #else
Timer2_CntL = 0x47;
Timer2_CntH = 0xF4;
#endif
148 1 RCAP2L = Timer2_CntL;
149 1 RCAP2H = Timer2_CntH;
150 1 ET2 = 1;
151 1 TF2 = 0;
152 1 EXF2 = 0;
153 1 RCLK = 0;
154 1 TCLK = 0;
155 1 EXEN2 = 0;
156 1 C_T2 = 0;
157 1 CP_RL2 = 0;
158 1 P0 = 0xFF;
159 1 P1 = 0xFF;
160 1 P2 = 0xFF;
161 1 P3 = 0xFF;
162 1 TMOD = 0x21; //TIMER1为常数自动装入8位方式,TIMER0为16位方式
163 1 TH1 = 0xFD;
164 1 TL1 = 0xFD;
165 1 PCON = 0x00;
166 1 SCON = 0x50;
167 1 TR0 = 0;
168 1 TR1 = 1;
169 1 TR2 = 1;
170 1 IT1 = 1;
171 1 IT0 = 1; //中断0下将沿触发
172 1 EA=1;
173 1 }
174
175 void State_Init(void)
176 {
177 1 Power_Pin = 0;
178 1 LED_G = 1;
179 1 Current_Key = NO_KEY;
C51 COMPILER V7.50 MAIN 10/18/2005 14:20:32 PAGE 4
180 1 ReadKey_Timer = 0;
181 1 POWER_Status = 0;
182 1 Remote_value = NO_KEY;
183 1 Remote_Key = NO_KEY;
184 1 IR_KeyAct = 0;
185 1 Panel_Enable = 0;
186 1 Current_Remote_In = 0;
187 1 Volume_Need_Record = 0;
188 1 Panel_KeyAct = 0;
189 1 Key_Rebound = 0;
190 1 Save_Key = NO_KEY;
191 1 Key_LongTimer = 0;
192 1 Key_ShortTimer = 0;
193 1 Keypointer = NULL;
194 1 FF_FB_Active = 0;
195 1 Need_Button_up = 0;
196 1 CLEAR_M62429_CLK2;
197 1 CLEAR_M62429_DATA;
198 1
199 1 Channel_Select = 1;//开机默认主通道
200 1 Volume_Tune(0);
201 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 452 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 36 3
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 + -