?? 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 + -