📄 3 single key.lst
字号:
C51 COMPILER V8.08 3_SINGLE_KEY 10/27/2008 19:15:55 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE 3_SINGLE_KEY
OBJECT MODULE PLACED IN 3 SINGLE KEY.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 3 SINGLE KEY.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 sbit BY1=P3^4; //定义按键的输入端 S2 键
3 unsigned char count; //按键计数,每按一下,count 加 1
4 unsigned char temp;
5 unsigned char a,b;
6
7 void delay10ms(void) //延时程序
8 {
9 1 unsigned char i,j;
10 1 for(i=20;i>0;i--)
11 1 for(j=248;j>0;j--);
12 1 }
13
14 key() //按键判断程序
15 {
16 1 if(BY1==0) //判断是否按下键盘,当单片机上电时所有 IO 口为高电平,
17 1 //S2 键一端接地另一端接 P3.4,所以当键被按下时 P3.4 口直接接地,此时检测
18 1 //P3.4 肯定为低电平。
19 1 {
20 2 delay10ms(); //延时,软件去抖动干扰
21 2 if(BY1==0) //再次检测确认按键按下
22 2 {
23 3 count++; //按键计数加 1
24 3 if(count==8) //计 8 次重新计数
25 3 {
26 4 count=0; //将 count 清零
27 4 }
28 3 }
29 2 while(BY1==0);//等待按键释放,如果键未释放则一直在此等待。
30 2 }
31 1 }
32
33 move() //广告灯向下移动移动函数
34 {
35 1 a=temp<<count; // 这三句为一个循环移位,相当于前面提到的
36 1 b=temp>>(8-count);// _crol_()函数,这里是自己写的过程,大家可对比
37 1 P1=a|b; //下。
38 1 }
39
40 main()
41 {
42 1 count=0; //初始化参数设置
43 1 temp=0xfe;
44 1 P1=0xff;
45 1 P1=temp;
46 1 while(1) //永远循环,扫描判断按键是否按下
47 1 {
48 2 key(); //调用按键识别函数
49 2 move(); //调用广告灯移动函数
50 2 }
51 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 91 ----
C51 COMPILER V8.08 3_SINGLE_KEY 10/27/2008 19:15:55 PAGE 2
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
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 + -