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