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