📄 bat_ctrl24_ac.lst
字号:
C51 COMPILER V7.50 BAT_CTRL24_AC 08/21/2007 20:04:08 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE BAT_CTRL24_AC
OBJECT MODULE PLACED IN bat_ctrl24_ac.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bat_ctrl24_ac.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /****************************************************************/
2 /*功能:
3 /*版本:v1.0
4 /*设计人:ye_zhenfeng
5 /*编写日期:07-08-17
6 /*最后修改日期:
7 /*状态:in test
8 /****************************************************************/
9
10 /*头文件定义*/
11 #include <reg915.h>
12
13 /*特殊寄存器定义*/
14 sbit P00 = P0^0; //运行充电指示灯
15 sbit P01 = P0^1; //过充过放指示灯
16 sbit P04 = P0^4; //负荷
17 sbit P05 = P0^5; //交流充电开关
18 sbit P10 = P1^0; //模式选择位
19 sbit P11 = P1^1; //模式选择位
20 sbit P12 = P1^2; //模式选择位
21 sbit P13 = P1^3; //模式选择位
22 sbit P14 = P1^4; //太阳能充电控制端(PWM)
23
24 /*预定义部分*/
25 #define uchar unsigned char
26 #define uint unsigned int
27 //24v
28 #define TINGCHONG24 88*2 //14.8V*2/3.178V
29 #define GUOCHONG24 83*2 //14.0V*2
30 #define TINGAC24 80*2 //13.5V*2
31 #define YUNCHONG24 80*2 //13.4V*2
32 #define YUNFANG24 75*2 //12.4V*2
33 #define YUNAC24 68*2 //11.5V*2
34 #define GUOFANG24 65*2 //10.8V*2
35 #define OFFAC24 58*2 //10.0V*2
36 #define MIEDENG24 19*2 // 3.5V*2
37 #define LIANGDENG24 16*2 // 2.5V*2
38 #define NODELAY24 4*2 //0.7v*2
39
40 #define DELAY_MIN 1*8000 // 1.5min
41 /*全局变量定义*/
42 struct ad{
43 uchar index;
44 uchar BatAd[8];
45 uchar SunAd[8];
46 }AdValue;
47
48 uchar SunValue,BatValue; //光电池、蓄电池AD采样值
49 uchar Seconds,Minutes,Hours; //实时时钟计数变量
50 bit ClrFlag; //Hours清0允许位,'1'为允许
51 bit PowerFlag; //允许放电标志,‘1’为允许
52 bit CtrlFlag; //允许光板低电压打开负荷标志
53 bit StopFlag; //停允冲标志
54 bit enL2,enL3;
55 bit enPWM;
C51 COMPILER V7.50 BAT_CTRL24_AC 08/21/2007 20:04:08 PAGE 2
56 bit enDelay1,enDelay2;
57 uchar L2Delay,L3Delay; //用于L2、L3闪烁定时,计数50次,越0.5s
58 uint Delay4min1,Delay4min2; //用于延时4min计数,计数20000次
59
60 /*函数声明部分*/
61 void Init_Var(void);
62 void Init_IO(void);
63 void Init_AD(void);
64 void Init_Timer(void);
65 void Init_RTC(void);
66 void Init_WDT(void);
67 void Init_Interrupt(void);
68 void Init_All(void);
69 uchar Get_Mode(void);
70 void GetAd(void);
71 void Main_Logic24(uchar);
72 void Clr_Dog(void);
73 void Led_Ctrl(bit,uchar);
74 bit Delay_4min(bit);
75
76 /*中断服务函数*/
77 /*********************************************************************/
78 /*函数名:
79 /*功能:
80 /*输入参数:
81 /*返回值:
82 /*调用函数:
83 /*被调用函数:
84 /*编写日期:
85 /*最后修改日期:
86 /********************************************************************/
87 void T0_ISR() interrupt 1
88 {
89 1 TH0 = 0x80; //
90 1 TL0 = 0x00; //
91 1 if(enPWM)
92 1 {
93 2 P14 = ~P14;
94 2 }
95 1 L2Delay++;
96 1 L3Delay++;
97 1 if(L2Delay>=50)
98 1 {
99 2 L2Delay = 0;
100 2 if(enL2)
101 2 P01 = ~P01;
102 2 }
103 1 if(L3Delay>=50)
104 1 {
105 2 L3Delay = 0;
106 2 if(enL3)
107 2 P00 = ~P00;
108 2 }
109 1 }
110 /*********************************************************************/
111 /*函数名:
112 /*功能:
113 /*输入参数:
114 /*返回值:
115 /*调用函数:
116 /*被调用函数:
117 /*编写日期:
C51 COMPILER V7.50 BAT_CTRL24_AC 08/21/2007 20:04:08 PAGE 3
118 /*最后修改日期:
119 /********************************************************************/
120 void T1_ISR() interrupt 3
121 {
122 1 TH1 = 0x80; //
123 1 TL1 = 0x00; //
124 1 if(enDelay1)
125 1 Delay4min1++;
126 1 if(enDelay2)
127 1 Delay4min2++;
128 1 }
129 /*********************************************************************/
130 /*函数名:
131 /*功能:
132 /*输入参数:
133 /*返回值:
134 /*调用函数:
135 /*被调用函数:
136 /*编写日期:
137 /*最后修改日期:
138 /********************************************************************/
139 void RTC_ISR() interrupt 10
140 {
141 1 EA = 0;
142 1 if((RTCCON&0x80)==0x80)
143 1 {
144 2 RTCCON &= 0x63;
145 2 if(Minutes == 59)
146 2 {
147 3 if(Seconds == 59)
148 3 {
149 4 Seconds = 0;
150 4 Minutes = 0;
151 4 Hours ++;
152 4 }
153 3 else
154 3 {
155 4 Seconds ++;
156 4 }
157 3 }
158 2 else
159 2 {
160 3 if(Seconds == 59)
161 3 {
162 4 Seconds = 0;
163 4 Minutes ++;
164 4 }
165 3 else
166 3 {
167 4 Seconds ++;
168 4 }
169 3 }
170 2 EA = 1;
171 2 }
172 1 }
173 /*********************************************************************/
174 /*函数名:
175 /*功能:
176 /*输入参数:
177 /*返回值:
178 /*调用函数:
179 /*被调用函数:
C51 COMPILER V7.50 BAT_CTRL24_AC 08/21/2007 20:04:08 PAGE 4
180 /*编写日期:
181 /*最后修改日期:
182 /********************************************************************/
183 void AD_ISR() interrupt 14
184 {
185 1 ADCON1 &= 0xF7;
186 1
187 1 AdValue.BatAd[AdValue.index] = AD1DAT0;
188 1 AdValue.SunAd[AdValue.index] = AD1DAT1;
189 1 AdValue.index ++;
190 1 if(AdValue.index >= 8)
191 1 AdValue.index = 0;
192 1
193 1 }
194
195 /*主函数部分*/
196 /*********************************************************************/
197 /*函数名:main()
198 /*功能:主函数
199 /*输入参数:无
200 /*返回值:无
201 /*编写日期:
202 /*最后修改日期:
203 /********************************************************************/
204 void main()
205 {
206 1 uchar TimeMode;
207 1
208 1 Init_All();
209 1
210 1 while(1)
211 1 {
212 2 Clr_Dog();
213 2 TimeMode = Get_Mode();
214 2 GetAd();
215 2 Main_Logic24(TimeMode);
216 2 }
217 1 }
218
219 /*其他函数定义部分*/
220 /*********************************************************************/
221 /*函数名:
222 /*功能:
223 /*输入参数:
224 /*返回值:
225 /*调用函数:
226 /*被调用函数:
227 /*编写日期:
228 /*最后修改日期:
229 /********************************************************************/
230 void Init_Var()
231 {
232 1 Clr_Dog();
233 1
234 1 Seconds = 0;
235 1 Minutes = 0;
236 1 Hours = 0;
237 1 ClrFlag = 1; //允许时间清0
238 1 PowerFlag = 1; //允许放电
239 1 CtrlFlag = 1; //允许控制器打开负荷
240 1 StopFlag = 0; //允许充电
241 1 L2Delay = 0;
C51 COMPILER V7.50 BAT_CTRL24_AC 08/21/2007 20:04:08 PAGE 5
242 1 L3Delay = 0;
243 1 Delay4min1 = 0;
244 1 Delay4min2 = 0;
245 1 enL2 = 0;
246 1 enL3 = 0;
247 1 enPWM = 0;
248 1 enDelay1 = 0;
249 1 enDelay2 = 0;
250 1 }
251 /*********************************************************************/
252 /*函数名:
253 /*功能:
254 /*输入参数:
255 /*返回值:
256 /*调用函数:
257 /*被调用函数:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -