?? main.lst
字號(hào):
C51 COMPILER V9.00 MAIN 05/08/2013 17:51:18 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 匯誠科技
3
4 實(shí)現(xiàn)功能:繼電器循環(huán)通斷控制程序(eeprom)
5 使用芯片:STC12C5204AD
6 晶振:11.0592MHZ
7 編譯環(huán)境:Keil
8 硬件環(huán)境:四位數(shù)顯兩路輸入三按鍵
9 作者:yang
10 QQ:790244909
11 網(wǎng)站:www.ourhc.cn
12 物聯(lián)網(wǎng)測試網(wǎng)站:http://hualongelectron.eicp.net/
13 日期:2013-04-02
14 淘寶店:
15 華龍電子直銷:http://hlelectrony.taobao.com
16 電子開發(fā)直銷:http://shop63233873.taobao.com
17 匯誠科技網(wǎng)路購物:http://shop36330473.taobao.com
18 【聲明】此程序僅用于學(xué)習(xí)與參考,引用請(qǐng)注明版權(quán)和作者信息!
19 /********************************************************************
20 /********************************************************************
21 功能說明:繼電器循環(huán)通斷控制程序
22 繼電器通、斷時(shí)間可調(diào),
23 key1功能鍵:調(diào)節(jié)模式與實(shí)時(shí)顯示模式轉(zhuǎn)換
24 key2、key3調(diào)節(jié)按鍵用于調(diào)節(jié)通斷時(shí)間(通、斷時(shí)間相等,即一個(gè)參數(shù)),掉電記憶設(shè)定值
25 上電時(shí),繼電器吸合,數(shù)顯開始計(jì)時(shí),到達(dá)設(shè)定閉合時(shí)間后斷開;
26 數(shù)顯清零,數(shù)顯開始計(jì)時(shí),到設(shè)定時(shí)間,繼電器閉合,數(shù)顯清零。。。循環(huán)下去。。
27
28 設(shè)定最大時(shí)間是99分60秒
29 ********************************************************************/
30 #include<STC12C5A60S2.H> //庫文件
31 #include <intrins.h>
32 #include"eprom.h"
33 #define uchar unsigned char//宏定義無符號(hào)字符型
34 #define uint unsigned int //宏定義無符號(hào)整型
35
36 #define DUAN P2 //P0口控制段
37 #define WEI P1 //P2口控制位
38 sbit jdq= P3^7;
39 sbit key1=P3^2; //功能按鍵
40 sbit key2=P3^3; //增加
41 sbit key3=P3^4; //減小
42 /********************************************************************
43 初始定義
44 *********************************************************************/
45 code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //顯示段碼 數(shù)碼管字跟
46 uchar wei[4]={0X01,0X02,0X04,0X08}; //位的控制端
47 uchar numb[4]; //定義字符串
48 uchar cnt,keynum;
49 uchar setfen,setmiao;
50 uchar miao,fen;
51 void IapEraseSector(uint addr);
52 void IapProgramByte(uint addr,uchar dat);
53 uchar IapReadByte(uint addr);
54 /********************************************************************
55 延時(shí)函數(shù)
C51 COMPILER V9.00 MAIN 05/08/2013 17:51:18 PAGE 2
56 *********************************************************************/
57 void delay(uchar x) //延時(shí)程序 0.1秒
58 {
59 1 uchar m,n,s;
60 1 for(m=x;m>0;m--)
61 1 for(n=20;n>0;n--)
62 1 for(s=248;s>0;s--);
63 1 }
64 /********************************************************************
65 顯示函數(shù)
66 *********************************************************************/
67 void display(uchar a ,uchar b) //顯示函數(shù)
68 {
69 1 WEI&=0XF0;
70 1 DUAN=seg7code[a/10];
71 1 WEI=wei[0];
72 1 delay(2);
73 1
74 1 WEI&=0XF0;
75 1 DUAN=seg7code[a%10]&0x7f;
76 1 WEI=wei[1];
77 1 delay(2);
78 1
79 1 WEI&=0XF0;
80 1 DUAN=seg7code[b/10];
81 1 WEI=wei[2];
82 1 delay(2);
83 1
84 1 WEI&=0XF0;
85 1 DUAN=seg7code[b%10];
86 1 WEI=wei[3];
87 1 delay(2);
88 1
89 1 WEI&=0XF0;
90 1 }
91 void keyscan(void)
92 {
93 1 if(key1==0)
94 1 { delay(1);
95 2 if(key1==0)
96 2 {
97 3 while(!key1);
98 3 keynum++;
99 3 if(keynum>=3)
100 3 {
101 4 keynum=0;
102 4 miao=fen=0;
103 4 //jdq=0;
104 4 }
105 3 }
106 2 }
107 1
108 1 switch(keynum)
109 1 {
110 2 case 1: if(key2==0)
111 2 {
112 3 delay(5);
113 3 if(key2==0)
114 3 {
115 4 while(!key2);
116 4 setmiao++;
117 4 if(setmiao>59)
C51 COMPILER V9.00 MAIN 05/08/2013 17:51:18 PAGE 3
118 4 setmiao=59;
119 4 IapEraseSector(0);
120 4 IapProgramByte(0,setmiao); //寫入函數(shù)
121 4 }
122 3 }
123 2 if(key3==0)
124 2 {
125 3 delay(5);
126 3 if(key3==0)
127 3 {
128 4 while(!key3);
129 4 setmiao--;
130 4 if(setmiao==0||setmiao>=250)
131 4 setmiao=0;
132 4 IapEraseSector(0);
133 4 IapProgramByte(0,setmiao); //寫入函數(shù)
134 4 }
135 3 }
136 2 display(setfen,setmiao);
137 2 break;
138 2 case 2: if(key2==0)
139 2 {
140 3 delay(5);
141 3 if(key2==0)
142 3 {
143 4 while(!key2);
144 4 setfen++;
145 4 if(setfen>99)
146 4 setfen=99;
147 4 IapEraseSector(512);
148 4 IapProgramByte(512,setfen); //寫入函數(shù)
149 4 }
150 3 }
151 2 if(key3==0)
152 2 {
153 3 delay(5);
154 3 if(key3==0)
155 3 {
156 4 while(!key3);
157 4 setfen--;
158 4 if(setfen==0||setfen>=250)
159 4 setfen=0;
160 4 IapEraseSector(512);
161 4 IapProgramByte(512,setfen); //寫入函數(shù)
162 4 }
163 3 }
164 2 display(setfen,setmiao);
165 2 break;
166 2 default : break;
167 2 }
168 1 }
169 /********************************************************************
170 定時(shí)器T0初始化
171 *********************************************************************/
172 void cshh()
173 {
174 1 TMOD|=0X01; //定義定時(shí)器工作方式
175 1 TH0=0Xa6;
176 1 TL0=0X01;
177 1 ET0=1;
178 1 TR0=1; //開定時(shí)器
179 1 EA=1; //開中斷
C51 COMPILER V9.00 MAIN 05/08/2013 17:51:18 PAGE 4
180 1 }
181 /********************************************************************
182 初始化函數(shù)
183 *********************************************************************/
184 void init_all(void)
185 {
186 1 P2M1=0;
187 1 P2M0=0xff;
188 1 P1M1=0;
189 1 P1M0=0x0f;
190 1 P3M1&=0x7f;
191 1 P3M0|=0x80;
192 1 P3=0xff;
193 1 }
194 /********************************************************************
195 主函數(shù)
196 *********************************************************************/
197 void main()
198 {
199 1 init_all();
200 1 setfen=IapReadByte(512); //讀取函數(shù)
201 1 setmiao=IapReadByte(0);
202 1 cshh(); //定時(shí)器初始化
203 1 while(1)
204 1 {
205 2 if(keynum==0)
206 2 {
207 3 display(fen,miao);
208 3 }
209 2 keyscan();
210 2 }
211 1 }
212 /********************************************************************
213 定時(shí)器中斷函數(shù)
214 *********************************************************************/
215 void timer1(void)interrupt 1
216 {
217 1 TH0=0Xa6; //定時(shí)初值
218 1 TL0=0X01; //定時(shí)初值
219 1 cnt++;
220 1 if(cnt>=40)
221 1 {
222 2 cnt=0;
223 2 miao++;
224 2 if(miao>=60)
225 2 {
226 3 miao=0;
227 3 fen++;
228 3 }
229 2 }
230 1 if((fen>=setfen)&&(miao>=setmiao))
231 1 {
232 2 jdq=!jdq;
233 2 miao=0;
234 2 fen=0;
235 2 }
236 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 529 ----
CONSTANT SIZE = 10 ----
C51 COMPILER V9.00 MAIN 05/08/2013 17:51:18 PAGE 5
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -