?? bat_ctrl_12v_24v.lst
字號:
C51 COMPILER V7.50 BAT_CTRL_12V_24V 12/27/2008 14:12:22 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE BAT_CTRL_12V_24V
OBJECT MODULE PLACED IN bat_ctrl_12v_24v.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bat_ctrl_12v_24v.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /****************************************************************/
2 /*功能:12v/24v自適應太陽能板充電控制器,跳線選擇模式,無數碼管顯示。
3 /*版本:v1.0
4 /*設計人:ye_zhenfeng
5 /*編寫日期:07-07-30
6 /*最后修改日期:07-08-23
7 /*狀態:PASSED
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 AD_NUM 32
29 //24v
30 #define TINGCHONG24 87*2 //14.8V*2/3.178V
31 #define GUOCHONG24 83*2 //14.0V*2
32 #define YUNCHONG24 80*2 //13.4V*2
33 #define YUNFANG24 72*2 //12.0V*2
34 #define GUOFANG24 64*2 //10.8V*2
35 #define MIEDENG24 20*2 // 3.5V*2
36 #define LIANGDENG24 14*2 // 2.5V*2
37 #define NODELAY24 4*2 //0.7v*2
38 //邊界
39 #define EDGE 110 //18.5V
40 //12v
41 #define TINGCHONG12 87 //14.8V/3.178V
42 #define GUOCHONG12 83 //14.0V
43 #define YUNCHONG12 80 //13.4V
44 #define YUNFANG12 72 //12.0V
45 #define GUOFANG12 64 //10.8V
46 #define MIEDENG12 20 // 3.5V
47 #define LIANGDENG12 14 // 2.5V
48 #define NODELAY12 4 //0.7v
49
50 #define DELAY_MIN 1*8000 //1min
51 /*全局變量定義*/
52 struct ad{
53 uchar index;
54 uchar BatAd[AD_NUM];
55 uchar SunAd[AD_NUM];
C51 COMPILER V7.50 BAT_CTRL_12V_24V 12/27/2008 14:12:22 PAGE 2
56 }AdValue;
57
58 uchar SunValue,BatValue; //光電池、蓄電池AD采樣值
59 uchar Seconds,Minutes,Hours; //實時時鐘計數變量
60 bit ClrFlag; //Hours清0允許位,'1'為允許
61 bit PowerFlag; //允許放電標志,‘1’為允許
62 bit CtrlFlag; //允許光板低電壓打開負荷標志
63 bit StopFlag; //停允沖標志
64 bit enL2,enL3;
65 bit enPWM;
66 bit enDelay1,enDelay2;
67 uchar L2Delay,L3Delay; //用于L2、L3閃爍定時,計數50次,越0.5s
68 uint Delay4min1,Delay4min2; //用于延時4min計數,計數20000次
69
70 /*函數聲明部分*/
71 void Init_Var(void);
72 void Init_IO(void);
73 void Init_AD(void);
74 void Init_Timer(void);
75 void Init_RTC(void);
76 void Init_WDT(void);
77 void Init_Interrupt(void);
78 void Init_All(void);
79 uchar Get_Mode(void);
80 void GetAd(void);
81 void Main_Logic12(uchar);
82 void Main_Logic24(uchar);
83 void Clr_Dog(void);
84 void Led_Ctrl(bit,uchar);
85 bit Delay_4min(bit);
86
87 /*中斷服務函數*/
88 /*********************************************************************/
89 /*函數名:
90 /*功能:
91 /*輸入參數:
92 /*返回值:
93 /*調用函數:
94 /*被調用函數:
95 /*編寫日期:
96 /*最后修改日期:
97 /********************************************************************/
98 void T0_ISR() interrupt 1
99 {
100 1 TH0 = 0x80; //
101 1 TL0 = 0x00; //
102 1 if(enPWM)
103 1 {
104 2 P14 = ~P14;
105 2 }
106 1 L2Delay++;
107 1 L3Delay++;
108 1 if(L2Delay>=50)
109 1 {
110 2 L2Delay = 0;
111 2 if(enL2)
112 2 P01 = ~P01;
113 2 }
114 1 if(L3Delay>=50)
115 1 {
116 2 L3Delay = 0;
117 2 if(enL3)
C51 COMPILER V7.50 BAT_CTRL_12V_24V 12/27/2008 14:12:22 PAGE 3
118 2 P00 = ~P00;
119 2 }
120 1 }
121 /*********************************************************************/
122 /*函數名:
123 /*功能:
124 /*輸入參數:
125 /*返回值:
126 /*調用函數:
127 /*被調用函數:
128 /*編寫日期:
129 /*最后修改日期:
130 /********************************************************************/
131 void T1_ISR() interrupt 3
132 {
133 1 TH1 = 0x80; //
134 1 TL1 = 0x00; //
135 1 if(enDelay1)
136 1 Delay4min1++;
137 1 if(enDelay2)
138 1 Delay4min2++;
139 1 }
140 /*********************************************************************/
141 /*函數名:
142 /*功能:
143 /*輸入參數:
144 /*返回值:
145 /*調用函數:
146 /*被調用函數:
147 /*編寫日期:
148 /*最后修改日期:
149 /********************************************************************/
150 void RTC_ISR() interrupt 10
151 {
152 1 EA = 0;
153 1 if((RTCCON&0x80)==0x80)
154 1 {
155 2 RTCCON &= 0x63;
156 2 if(Minutes == 59)
157 2 {
158 3 if(Seconds == 59)
159 3 {
160 4 Seconds = 0;
161 4 Minutes = 0;
162 4 Hours ++;
163 4 }
164 3 else
165 3 {
166 4 Seconds ++;
167 4 }
168 3 }
169 2 else
170 2 {
171 3 if(Seconds == 59)
172 3 {
173 4 Seconds = 0;
174 4 Minutes ++;
175 4 }
176 3 else
177 3 {
178 4 Seconds ++;
179 4 }
C51 COMPILER V7.50 BAT_CTRL_12V_24V 12/27/2008 14:12:22 PAGE 4
180 3 }
181 2 EA = 1;
182 2 }
183 1 }
184 /*********************************************************************/
185 /*函數名:
186 /*功能:
187 /*輸入參數:
188 /*返回值:
189 /*調用函數:
190 /*被調用函數:
191 /*編寫日期:
192 /*最后修改日期:
193 /********************************************************************/
194 void AD_ISR() interrupt 14
195 {
196 1 ADCON1 &= 0xF7;
197 1
198 1 AdValue.BatAd[AdValue.index] = AD1DAT0;
199 1 AdValue.SunAd[AdValue.index] = AD1DAT1;
200 1 AdValue.index ++;
201 1 if(AdValue.index >= AD_NUM)
202 1 AdValue.index = 0;
203 1
204 1 }
205
206 /*主函數部分*/
207 /*********************************************************************/
208 /*函數名:main()
209 /*功能:主函數
210 /*輸入參數:無
211 /*返回值:無
212 /*編寫日期:
213 /*最后修改日期:
214 /********************************************************************/
215 void main()
216 {
217 1 uint i,j;
218 1 uchar TimeMode;
219 1 bit VoltFlag;
220 1
221 1 Init_All();
222 1 i = 10000;
223 1 j = 40;
224 1 while(i--)
225 1 while(j--)
226 1 Clr_Dog(); //延時等ad采樣穩定
227 1 GetAd();
228 1 if(BatValue > EDGE)
229 1 VoltFlag = 1;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -