?? bat_ctrl.lst
字號:
C51 COMPILER V7.50 BAT_CTRL 07/22/2007 15:43:54 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE BAT_CTRL
OBJECT MODULE PLACED IN bat_ctrl.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bat_ctrl.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /****************************************************************/
2 /*功能:
3 /*版本:v1.0
4 /*設計人:ye_zhenfeng
5 /*編寫日期:07-07-05
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 //14.8V/3.178V
29 #define GUOCHONG 83 //14.0V
30 #define YUNCHONG 80 //13.4V
31 #define YUNFANG 74 //12.4V
32 #define GUOFANG 65 //10.8V
33 #define MIEDENG 22 //3.5V
34 #define LIANGDENG 16 //2.5V
35 #define NODELAY 4 //0.7v
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_CTRL 07/22/2007 15:43:54 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_CTRL 07/22/2007 15:43:54 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_CTRL 07/22/2007 15:43:54 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 + -