?? chengxu.lst
字號:
C51 COMPILER V7.06 CHENGXU 06/06/2012 17:35:29 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE CHENGXU
OBJECT MODULE PLACED IN chengxu.OBJ
COMPILER INVOKED BY: D:\keil2\C51\BIN\C51.EXE chengxu.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /********************************************************************
2 匯誠科技
3
4 實現功能:此版配套測試程序
5 使用芯片:STC12C2052AD
6 晶振:11.0592MHZ
7 波特率:9600
8 編譯環境:Keil
9 作者:yang
10 QQ:790244909
11 淘寶店:匯誠科技 http://shop36330473.taobao.com
12 【聲明】此程序僅用于學習與參考,引用請注明版權和作者信息!
13 /********************************************************************
14 采樣AD的電壓值作為繼電器的延時吸合時間 最大調節數為255秒最小調節單位是秒
15 或者最大調節時間為分,最大調節數為255,最小調節單位為分
16 ********************************************************************/
17 #include<STC12C5A60S2.H> //庫文件
18 #include <intrins.h>
19 #include<eprom.h>
20 #define uchar unsigned char//宏定義無符號字符型
21 #define uint unsigned int //宏定義無符號整型
22 #define DUAN P2 //P0口控制段
23 #define WEI P1 //P2口控制位
24 /********************************************************************
25 初始定義
26 *********************************************************************/
27 //數碼管顯示段碼
28 code uchar seg7code[11]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0XBF};
29 //數碼管顯示位碼
30 sbit wei1=P1^0; //位的控制端
31 sbit wei2=P1^1;
32 sbit wei3=P1^2;
33 sbit wei4=P1^3;
34
35 uchar numb[4]; //定義字符串用于數值轉換
36 sbit jdq=P3^7; //繼電器控制端口
37 //按鍵
38 sbit key1=P3^2;
39 sbit key2=P3^3;
40 sbit key3=P3^4;
41 //輸入控制端
42 sbit IN0=P1^6;
43 sbit IN1=P1^7;
44 //全局變量和標著位變量
45 uchar timesnum;
46 uchar setnum=1;
47 bit flag=0;
48 /********************************************************************
49 延時函數
50 *********************************************************************/
51 void delay(uchar x) //延時程序 0.002秒
52 {
53 1 uchar m,n,s;
54 1 for(m=x;m>0;m--)
55 1 for(n=20;n>0;n--)
C51 COMPILER V7.06 CHENGXU 06/06/2012 17:35:29 PAGE 2
56 1 for(s=248;s>0;s--);
57 1 }
58 /********************************************************************
59 求值函數
60 *********************************************************************/
61 void t_to_dis()
62 {
63 1 numb[0]=0; //顯示千位
64 1 numb[1]=setnum/100; //顯示百位
65 1 numb[2]=setnum%100/10; //顯示十位
66 1 numb[3]=setnum%10; //顯示個位
67 1 }
68
69 /********************************************************************
70 顯示函數
71 *********************************************************************/
72 void display() //顯示函數
73 {
74 1 WEI&=0XF0;
75 1 DUAN=seg7code[numb[0]];
76 1 wei1=1;
77 1 delay(2);
78 1
79 1 WEI&=0XF0;
80 1 DUAN=seg7code[numb[1]];
81 1 wei2=1;
82 1 delay(2);
83 1
84 1 WEI&=0XF0;
85 1 DUAN=seg7code[numb[2]];
86 1 wei3=1;
87 1 delay(2);
88 1
89 1 WEI&=0XF0;
90 1 DUAN=seg7code[numb[3]];
91 1 wei4=1;
92 1 delay(2);
93 1 WEI&=0XF0;
94 1 }
95 /********************************************************************
96 IO口初始化函數
97 *********************************************************************/
98 void init_all(void)
99 {
100 1 P2M1=0;
101 1 P2M0=0xff;
102 1 P1M1=0;
103 1 P1M0=0x0f;
104 1 P3M1&=0x7f;
105 1 P3M0|=0x80;
106 1 }
107 /********************************************************************
108 按鍵掃描函數
109 *********************************************************************/
110 void key_scan(void)
111 {
112 1 if(key1==0) //增加次數
113 1 {
114 2 delay(5);
115 2 if(key1==0)
116 2 {
117 3 while(!key1);
C51 COMPILER V7.06 CHENGXU 06/06/2012 17:35:29 PAGE 3
118 3 setnum++; //keynum=0為模式0,繼電器吸合300ms ,keynum=1繼電器吸合12s
119 3 if(setnum>=100)
120 3 setnum=100;
121 3 IapEraseSector(0); //擦除扇區
122 3 IapProgramByte(5,setnum);
123 3 }
124 2 }
125 1
126 1 if(key2==0) //按鍵掃描,key2按下模式變化一次
127 1 {
128 2 delay(5);
129 2 if(key2==0)
130 2 {
131 3 while(!key2);
132 3 setnum--; //減小次數
133 3 if(setnum==0||setnum>=120)
134 3 setnum=0;
135 3 IapEraseSector(0); //擦除扇區
136 3 IapProgramByte(5,setnum);
137 3 }
138 2 }
139 1 }
140 /********************************************************************
141 定時器T0初始化
142 *********************************************************************/
143 void timer0init(void)
144 {
145 1 TMOD=0X01; //定義定時器工作方式
146 1 TH0=(65536-25000)/256;
147 1 TL0=(65536-25000)%256;
148 1 ET0=1;
149 1 TR0=1;
150 1 EA=1;
151 1 }
152 /********************************************************************
153 主函數
154 *********************************************************************/
155 void main()
156 {
157 1 init_all(); //初始化IO
158 1 timer0init();
159 1 IN0=IN1=1;
160 1 jdq=0;
161 1 setnum=IapReadByte(5);
162 1 while(1)
163 1 {
164 2 t_to_dis(); //數值變換
165 2 key_scan(); //鍵盤掃描
166 2 if(IN1==0&&flag==0) //按鍵掃描,key2按下模式變化一次
167 2 {
168 3 delay(10);
169 3 if(IN1==0)
170 3 {
171 4 delay(2);
172 4 //while(!IN1);
173 4 jdq=!jdq;
174 4 flag=1;
175 4 }
176 3 }
177 2 if(flag==1&&IN0==0)
178 2 {
179 3 delay(5);
C51 COMPILER V7.06 CHENGXU 06/06/2012 17:35:29 PAGE 4
180 3 if(IN0==0)
181 3 {
182 4 delay(5);
183 4 while(!IN0);
184 4 timesnum++;
185 4 if(timesnum>=(setnum+1))
186 4 {
187 5 delay(60);
188 5 timesnum=0;
189 5 jdq=!jdq;
190 5 }
191 4 }
192 3 }
193 2 }
194 1 }
195 /********************************************************************
196 定時器T1中斷函數
197 *********************************************************************/
198 void timer0(void)interrupt 1 using 1
199 {
200 1 TH0=(65536-25000)/256;
201 1 TL0=(65536-25000)%256;
202 1 display(); //顯示函數
203 1
204 1 }
205 /********************************************************************
206 結束
207 *********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 445 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -