📄 加入串口的按键.lst
字号:
C51 COMPILER V8.05a 加入串口的按键 11/27/2008 14:30:42 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 加入串口的按键
OBJECT MODULE PLACED IN 加入串口的按键.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 加入串口的按键.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"reg51.h"
2 #include"absacc.h"
3 #include"stdio.h"
4 #include"string.h"
5 #define uchar unsigned char
6 #define unit unsigned int
7 //#define INBUF_LEN 1
8 unsigned char code dis[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0-9代码
9 unsigned char code shibie[8]={0x98,0x8c,0xb6,0x86,0xc6,0xc7,0x88,0x89};//符号q,p,三,E,【,L
10 uchar key_moshi=2; //模式按键
11 uchar key_up=2; //上调按键
12 uchar key_down=2; //下调按键
13 uchar key_queren=2; //确认按键
14 int queren_flag=0; //确认标志
15 int moshi_flag=0; // 模式标志
16 int key_first_flag=-1; //开机显示标志位
17 int moshi1[3],moshi2[3];
18 sbit ge=P2^4;
19 sbit shi=P2^5;
20 sbit bai=P2^6;
21 sbit fuhao=P2^7;
22
23 /******************************
24 串口发送接收函数
25 **********************************/
26 void init_serialcomm(void)
27 {
28 1 SCON=0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
29 1 TMOD=0x20; //TMOD: timer 1, mode 2, 8-bit reload
30 1 PCON=0x00; //SMOD=1;
31 1 TH1=253; //Baud:9600 fosc=12.0MHz
32 1 IE=0x90; //Enable Serial Interrupt
33 1 TR1=1; // timer 1 run
34 1 // TI=1;
35 1 }
36
37
38 /***************************
39 *******延时程序 ************
40 ***************************/
41 void delay1(int time)
42 { int j=0,i=0;
43 1 for(j=0;j<time;j++)
44 1 {for(i=0;i<10;i++);}
45 1 }
46
47
48 /*********************************************
49 *****读按键 *******************************
50 ***********************************************/
51 void read_key(void)
52 { if(P2&0X01!=0X01)
53 1 {delay1(153);
54 2 if(P2^0==0)
55 2 {
C51 COMPILER V8.05a 加入串口的按键 11/27/2008 14:30:42 PAGE 2
56 3 key_moshi=0;
57 3 }
58 2 }
59 1 if(P2&0X02!=0X02)
60 1 { delay1(153);
61 2 if(P2^1==0)
62 2 {key_up=0;}
63 2 }
64 1 if(P2&0X04!=0X04)
65 1 {delay1(153);
66 2 if(P2^2==0)
67 2 { key_down=0;}
68 2 }
69 1 if(P2&0X08!=0X08)
70 1 {delay1(153);
71 2 if(P2^3==0)
72 2 {
73 3
74 3 key_queren=0;}
75 2 }
76 1
77 1 }
78 /*******************************************
79 **************模式选择 ********************
80 ******************************************/
81 void moshi_set(void)
82 { SBUF=key_moshi;
83 1 SBUF=0XAA;
84 1 if(key_moshi==0)
85 1 { key_first_flag=1;
86 2 key_moshi=1;
87 2 delay1(153);
88 2 moshi_flag++;
89 2 if(moshi_flag>3)
90 2 {moshi_flag=0;}
91 2 }
92 1 }
93 /********************************************
94 ***********模式1设置, 增加,减少 ****************
95 **********************************************/
96 void key_up_moshi1(void)
97 {
98 1 if(key_up==0&&moshi_flag==1&&queren_flag==0) //上升
99 1 { key_up=0;
100 2 delay1(2);
101 2 moshi1[1]++;
102 2 if(moshi1[1]>=10)
103 2 { moshi1[1]=0;}
104 2 }
105 1 }
106
107 void key_down_moshi1(void)
108 {
109 1 if(key_down==0&&moshi_flag==1&&queren_flag==0) //下调
110 1 { key_down=1;
111 2 delay1(2);
112 2 moshi1[1]--;
113 2 if(moshi1[1]<0)
114 2 { moshi1[1]=9;}
115 2 }
116 1 }
117
C51 COMPILER V8.05a 加入串口的按键 11/27/2008 14:30:42 PAGE 3
118 /************************************U*
119 ************模式2设置,增加,减少 ******
120 ***********************************/
121 void key_up_moshi2(void)
122 {
123 1 if(key_up==0&&moshi_flag==2&&queren_flag==0) //上升
124 1 { key_up=0;
125 2 delay1(2);
126 2 moshi1[2]++;
127 2 if(moshi1[2]>=10)
128 2 { moshi1[2]=0;}
129 2 }
130 1 }
131
132 void key_down_moshi2(void)
133 {
134 1 if(key_down==0&&moshi_flag==2&&queren_flag==0) //下调
135 1 { key_down=1;
136 2 delay1(2);
137 2 moshi2[1]--;
138 2 if(moshi2[1]<0)
139 2 { moshi2[1]=9;}
140 2 }
141 1 }
142
143 /*************************************************
144 ***************确认按键 *****************************
145 *************************************************/
146 void key_queren_flag(void)
147 {
148 1 if(key_queren==0)
149 1 { delay1(5);
150 2 key_first_flag=1;
151 2 key_queren=1;
152 2 queren_flag++;
153 2 if(queren_flag>1)
154 2 {queren_flag=0;}
155 2 }
156 1 }
157
158 /*******************************************************
159 *********************显示 *******************************
160 ************************************************************/
161 void display()
162 {
163 1 /**********************
164 1 开机显示
165 1 ***************************/
166 1 if(key_first_flag==-1)
167 1 { P0=dis[2];
168 2 P2=0X7F;
169 2 delay1(5);
170 2 P2=0XFF;
171 2 P0=dis[3];
172 2 P2=0XBF;
173 2 delay1(5);
174 2 P2=0XFF;
175 2 P0=dis[4];
176 2 P2=0XDF;
177 2 delay1(5);
178 2 P2=0XFF;
179 2 P0=dis[5];
C51 COMPILER V8.05a 加入串口的按键 11/27/2008 14:30:42 PAGE 4
180 2 P2=0XEF;
181 2 delay1(5);
182 2 P2=0XFF;
183 2 }
184 1 /**************************************
185 1 模式1显示 符号显示 q
186 1 ****************************************/
187 1 if(moshi_flag==1)
188 1 {
189 2 P0=shibie[0];
190 2 P2=0X7F;
191 2 delay1(5);
192 2 P2=0XFF;
193 2 P0=dis[moshi1[1]];
194 2 P2=0XEF;
195 2 delay1(5);
196 2 P2=0XFF;
197 2 }
198 1
199 1 /*********************************
200 1 模式2显示 符号显示 E
201 1 ************************************/
202 1 if(moshi_flag==2)
203 1 {
204 2 P0=shibie[3];
205 2 P2=0X7F;
206 2 delay1(5);
207 2 P2=0XFF;
208 2 P0=dis[moshi2[1]];
209 2 P2=0XEF;
210 2 delay1(5);
211 2 P2=0XFF;
212 2 }
213 1 /**************************
214 1 正常状态显示 0123
215 1 ********************************/
216 1 if(moshi_flag==0&&key_first_flag!=-1)
217 1 {
218 2 P0=dis[0];
219 2 P2=0X7F;
220 2 delay1(5);
221 2 P2=0XFF;
222 2 P0=dis[1];
223 2 P2=0XEF;
224 2 delay1(5);
225 2 P2=0XFF;
226 2 P0=dis[2];
227 2 P2=0XDF;
228 2 delay1(5);
229 2 P2=0XFF;
230 2 P0=dis[3];
231 2 P2=0XBF;
232 2 delay1(5);
233 2 P2=0XFF;
234 2 }
235 1 }
236
237 /*********************************
238 主程序
239 ****************************************/
240 void main()
241 {
C51 COMPILER V8.05a 加入串口的按键 11/27/2008 14:30:42 PAGE 5
242 1 int mam=1;
243 1 P2 = 0XFF;
244 1 init_serialcomm(); //初始化串口
245 1
246 1 while(1)
247 1 {
248 2 read_key();
249 2
250 2 // SBUF=P2;
251 2
252 2 // if((P2&0X0F)!=0X0F)
253 2 // {SBUF=P2;}
254 2 moshi_set();
255 2 // SBUF=key_moshi;
256 2 /* switch(moshi_flag)
257 2 {
258 2 case 1:SBUF=1;break;
259 2 case 2:SBUF=2;break;
260 2 case 3:SBUF=3;break;
261 2 default :break;
262 2 } */
263 2 key_queren_flag();
264 2 key_up_moshi1();
265 2 key_down_moshi1();
266 2 key_up_moshi2();
267 2 key_down_moshi2();
268 2 display();
269 2 }
270 1
271 1 }
272
273
274
275
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 616 ----
CONSTANT SIZE = 18 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 22 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -