📄 key.lst
字号:
C51 COMPILER V7.50 KEY 05/12/2009 22:59:45 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c LARGE OPTIMIZE(7,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "reg51.h"
2 #define uchar unsigned char
3 #define uint unsigend int
4 xdata uchar delay_1s=0; //连按时间存放
5 xdata uchar have_down=0; //有下降按件按下
6 xdata uchar key=0;
7 xdata uchar oldkey=0; //上次按件号
8 xdata uchar newkey=0; //本次按件号
9 xdata uchar eq_time=0;
10 xdata uchar eq_key_lab=0; //连按标志
11 xdata uchar inputtime=0;
12 xdata uchar input_sttime=0;
13 xdata uchar inputtime_lab=0;
14 xdata uchar input_sttime_lab=0;
15 sbit key_16 =P1^7;
16 sbit key_15 =P1^6;
17 sbit key_14 =P1^5;
18 sbit key_13 =P1^4;
19 sbit ds_1302=P1^5;
20 extern uchar input_frq_lab;
21 extern uchar input_sti_lab;
22 extern uchar frq_wei;
23 uchar flash=0;
24 uchar sti_flash=0;
25 extern void display_char(uchar char_[18],uchar f_cl,uchar b_cl,uchar x,uchar y);
26 /********************************************************************
27
28 函 数 名:ini_int()
29 功 能: 定时器 和中断初始化
30 说 明:
31 调 用: main()
32 入口参数:无
33 返 回 值:无
34 设 计:志博51 AVR PIC 开发板 日 期:2007年11月13日
35 变 更 日 期:
36 变 更 备 注:
37 ***********************************************************************/
38 void ini_int(void)
39 {
40 1 EA=0;
41 1 EX0=0;
42 1 ET1=0;
43 1 EX1=0;
44 1 ET0=1;
45 1 PT1=0;
46 1 PT0=1;
47 1 PX1=1;
48 1 PX0=0;
49 1 IT0=1;
50 1 TMOD=0X01;
51 1 TH0=0X00;
52 1 TL0=0X01;
53 1 TR0=1;
54 1 EA=1;
55 1 }
C51 COMPILER V7.50 KEY 05/12/2009 22:59:45 PAGE 2
56
57 /********************************************************************
58
59 函 数 名:time_int()
60 功 能:系统定时和按件处理
61 说 明:
62 调 用:
63 入口参数:无
64 返 回 值:无
65 设 计:志博51 AVR PIC 开发板 日 期:2007年11月13日
66 变 更 日 期:
67 变 更 备 注:
68 ***********************************************************************/
69 void time_int()interrupt 1
70 {
71 1 uchar a=0;
72 1 uchar b=0;
73 1 uchar c=0;
74 1 uchar d=0;
75 1 uchar e=0;
76 1 uchar f=0;
77 1 uchar j=0;
78 1 uchar k=0;
79 1 uchar m=0;
80 1 TH0=0X00;
81 1 TL0=0X00;
82 1 P1=0XFF;
83 1 if(input_frq_lab)
84 1 {
85 2 if(inputtime<20)
86 2 inputtime++;
87 2 else
88 2 {
89 3 inputtime=0;
90 3 if(inputtime_lab==0)
91 3 inputtime_lab=1;
92 3 else
93 3 inputtime_lab=0;
94 3 if(inputtime_lab)
95 3 {
96 4 flash=0;
97 4 }
98 3 else
99 3 flash=1;
100 3 }
101 2 }
102 1 if(input_sti_lab)
103 1 {
104 2 if(input_sttime<20)
105 2 input_sttime++;
106 2 else
107 2 {
108 3 input_sttime=0;
109 3 if(input_sttime_lab==0)
110 3 input_sttime_lab=1;
111 3 else
112 3 input_sttime_lab=0;
113 3 if(input_sttime_lab)
114 3 {
115 4 sti_flash=0;
116 4 }
117 3 else
C51 COMPILER V7.50 KEY 05/12/2009 22:59:45 PAGE 3
118 3 sti_flash=1;
119 3 }
120 2 }
121 1 if(!key_13)
122 1 {
123 2 key=13;
124 2 goto test_eq;
125 2 }
126 1 if(!key_14)
127 1 {
128 2 key=14;
129 2 goto test_eq;
130 2 }
131 1 if(!key_15)
132 1 {
133 2 key=15;
134 2 goto test_eq;
135 2 }
136 1 if(!key_16)
137 1 {
138 2 key=16;
139 2 goto test_eq;
140 2 }
141 1 P1=0XF8;
142 1 a=(0x01);
143 1 m=P1;
144 1 for(c=0;c<3;c++)
145 1 {
146 2 k=~a;
147 2 b=(0xff&k);
148 2 P1=(b|0x02);
149 2 d=(P1>>4);
150 2 a=(a<<1);
151 2 if(d!=0x0f)
152 2 for(e=0;e<4;e++)
153 2 {
154 3 d=d>>e;
155 3 if(!(d&0x01))
156 3 {
157 4 key=(c*4)+e+1;
158 4 goto test_eq;
159 4 }
160 3 else
161 3 key=0;
162 3 }
163 2 }
164 1 test_eq:
165 1 if((key!=0))
166 1 {
167 2 oldkey=key;
168 2 key=0;
169 2 if(eq_time<60)
170 2 eq_time++;
171 2 else
172 2 {
173 3 eq_time=70;
174 3 eq_key_lab=0xff;
175 3 }
176 2 }
177 1 else if((oldkey!=0)&&(key==0))
178 1 {
179 2 newkey=oldkey;
C51 COMPILER V7.50 KEY 05/12/2009 22:59:45 PAGE 4
180 2 eq_time=0;
181 2 oldkey=0;
182 2 eq_key_lab=0x00;
183 2 }//以上语句为按件处理 单次按下 和连按分析
184 1 ds_1302=0;
185 1
186 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 421 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 13 3
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -