📄 key.lst
字号:
C51 COMPILER V7.50 KEY 04/21/2007 21:54:09 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
line level source
1 //函数声明
2 #include <reg52.h>
3 #include <intrins.h>
4
5 #define uchar unsigned char///////定义无符号变量简写式
6 #define uint unsigned int////////
7 sfr KEY = 0xA0;////////////////////定义P2口为键盘接口
8 sfr LEDB = 0x80;
9 //静态显示与单片机的接口
10 sbit SDA=P1^1;
11 sbit CLK=P1^2;
12 sbit SETB=P1^0;
13 sbit P04=P0^4;
14
15 unsigned char code led[20]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8
-e,0xbf,0x89,0x8C};
16 /*-------------------------------------------
17 函数名: 毫秒级延时函数
18 程序功能: 空转延时
19 实现方法: 占用CPU的延时
20 CPU说明: MCS-51 外晶振12MHZ (非精确延时)
21 植入说明: 调用函数必须给延时函数一个0~255的延时值对应0MS到255MS.
22 -------------------------------------------*/
23 void Delay(unsigned char a)
24 {
25 1 unsigned char i;
26 1 while( --a != 0)
27 1 {
28 2 for(i = 0; i < 125; i++); //一个 ; 表示空语句,CPU空转。
29 2 } //i 从0加到125,CPU大概就耗时1 毫秒
30 1 }
31 void send(unsigned char a)
32 {
33 1 unsigned char i;
34 1 for(i=0;i<8;i++)
35 1 {
36 2 if(_crol_(a,i)&0x80)
37 2 SDA=1;
38 2 else
39 2 SDA=0;
40 2 CLK=0;
41 2 CLK=1;
42 2 }
43 1 }
44
45 //按键判断
46 Key ()////////////////////////////键盘处理函数
47 {
48 1 uchar a,b,c;//////////////////////定义3 个变量
49 1 KEY = 0x0f;///////////////////////键盘口置00001111
50 1 if (KEY != 0x0f)//////////////////查寻键盘口的值是否变化
51 1 {
52 2 Delay (20);////////////////////延时20毫秒
53 2 if (KEY != 0x0f)//////////////有键按下处理
54 2 {
C51 COMPILER V7.50 KEY 04/21/2007 21:54:09 PAGE 2
55 3 a = KEY;////////////////键值放入寄存器a
56 3 }
57 2 KEY = 0xf0;///////////////将键盘口置为11110000
58 2 c = KEY;//////////////////将第二次取得值放入寄存器c
59 2 a |= c;//////////////////将两个数据熔合
60 2 switch(a)//////////////////对比数据值
61 2 {
62 3 case 0xee: b = 0x00; break;///对比得到的键值给b一个应用数据
63 3 case 0xed: b = 0x01; break;
64 3 case 0xeb: b = 0x02; break;
65 3 case 0xe7: b = 0x03; break;
66 3 case 0xde: b = 0x04; break;
67 3 case 0xdd: b = 0x05; break;
68 3 case 0xdb: b = 0x06; break;
69 3 case 0xd7: b = 0x07; break;
70 3 case 0xbe: b = 0x08; break;
71 3 case 0xbd: b = 0x09; break;
72 3 case 0xbb: b = 0x0a; break;
73 3 case 0xb7: b = 0x0b; break;
74 3 case 0x7e: b = 0x0c; break;
75 3 case 0x7d: b = 0x0d; break;
76 3 case 0x7b: b = 0x0e; break;
77 3 case 0x77: b = 0x0f; break;
78 3 default: break;//////////////////键值错误处理
79 3 }
80 2 }
81 1 return (b);///////////////////////////////////将b作为返回值
82 1 }
83
84 void main()
85 {
86 1 unsigned char i;
87 1 SETB=1;
88 1 P04=0;//LEDB=0x00;
89 1 while(1)
90 1 {
91 2 i=Key();
92 2 send(led[i]);
93 2
94 2 }
95 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 243 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 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 + -