key1.lst
来自「单片及c语言轻松入门的随书光盘」· LST 代码 · 共 106 行
LST
106 行
C51 COMPILER V7.06 KEY1 11/01/2005 16:42:07 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEY1
OBJECT MODULE PLACED IN key1.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE key1\key1.c BROWSE DEBUG OBJECTEXTEND PRINT(.\key1.lst) OBJECT(key1.obj)
stmt level source
1 /**************************************************
2 ;键控流水灯程序
3 **************************************************/
4 #include "reg51.h"
5 #include "intrins.h"
6 #define uchar unsigned char
7 #define uint unsigned int
8
9 uchar LampCode1=0x01;
10
11 bit UpDown=0; //上下流动标志
12 bit StartEnd=0; //起动及停止标志
13 /*延时程序
14 由Delay参数确定延迟时间
15 */
16 void mDelay(unsigned int Delay)
17 { unsigned int i;
18 1 for(;Delay>0;Delay--)
19 1 { for(i=0;i<124;i++)
20 2 {;}
21 2 }
22 1 }
23 void KProce(uchar KValue) //键值处理
24 { if((KValue&0x04)==0)
25 1 StartEnd=1;
26 1 if((KValue&0x08)==0)
27 1 StartEnd=0;
28 1 if((KValue&0x10)==0)
29 1 UpDown=1;
30 1 if((KValue&0x20)==0)
31 1 UpDown=0;
32 1 }
33 uchar Key()
34 { uchar KValue;
35 1 uchar tmp;
36 1 P3|=0x3c; //将P3口的接键盘的中间四位置1
37 1 KValue=P3;
38 1 KValue|=0xc3; //将未接键的4位置1
39 1 if(KValue==0xff) //中间4位均为1,无键按下
40 1 return(0); //返回
41 1 mDelay(10); //延时10ms,去键抖
42 1 KValue=P3;
43 1 KValue|=0xc3; //将未接键的4位置1
44 1 if(KValue==0xff) //中间4位均为1,无键按下
45 1 return(0); //返回
46 1 //如尚未返回,说明一定有1或更多位被按下
47 1 for(;;)
48 1 { tmp=P3;
49 2 if((tmp|0xc3)==0xff)
50 2 break; //等待按键释放
51 2 }
52 1 return(KValue);
53 1 }
54
55 void main()
C51 COMPILER V7.06 KEY1 11/01/2005 16:42:07 PAGE 2
56 { uchar KValue; //存放键值
57 1 uchar LampCode; //存放流动的数据代码
58 1 P1=0xff; //关闭所有灯
59 1 LampCode=0xfe;
60 1 for(;;)
61 1 { KValue=Key(); //调用键盘程序并获得键值
62 2 if(KValue) //如果该值不等于0
63 2 { KProce(KValue); //调用键盘处理程序
64 3 }
65 2 if(StartEnd) //要求流动显示
66 2 {
67 3 P1=LampCode;
68 3 if(UpDown) //要求由上向下
69 3 { LampCode=_cror_(LampCode,1);
70 4 }
71 3 else //否则要求由下向上
72 3 { LampCode=_crol_(LampCode,1);
73 4 }
74 3 mDelay(2500);
75 3 }
76 2 else //关闭所有显示
77 2 { P1=0xff;
78 3 }
79 2 }
80 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 160 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?