📄 key.lst
字号:
C51 COMPILER V7.07 KEY 09/16/2006 15:19:27 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "reg52.h"
2 #include<intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 bit FLAG0=0;
6 uchar ptr;
7 static const char tab[16]={0x01,0x02,0x03,0x0c, /*键盘码00,01,02,03,*/
8 0x04,0x05,0x06,0x0d, /*键盘码04,05,06,07,*/
9 0x07,0x08,0x09,0x0e, /*键盘码08,09,0a,0b,*/
10 0x0a,0x00,0x0b,0x0f};/*键盘码0c,0d,0e,0f*/
11 void delay (unsigned int value) /*延时副程式*/
12 {
13 1 while (value!=0) value--; /*10US延时*/
14 1 }
15
16 void scan(void) /*扫描键盘副程式*/
17 {
18 1 uchar a1=0xef,i,m; /*A1=0XF7列扫描初值,I行*/
19 1 FLAG0=0; /*设按键回应旗号为0,键盘扫描计数指标为0*/
20 1 for(i=0;i<4;i++) /*键盘4个扫描列*/
21 1 {
22 2 P2=a1; /*列扫描输出,读入P1存入M,以便侦测行与侦测按键是否放开*/
23 2 m=P2;
24 2 switch(m&0x0f) /*取行的高4位元,侦测那一行被按*/
25 2 {
26 3 case 0x07: ptr=i*4; /*第一行被按否?是则扫描指标=列X4*/
27 3 FLAG0=1; /*是则设FLAG0=1表有按键输入*/
28 3 break; /*跳出此循环*/
29 3 case 0x0b: ptr=i*4+1; /*第二行被按否?是则扫描指标=列X4+1*/
30 3 FLAG0=1; /*是则设FLAG0=1表有按键输入*/
31 3 break; /*跳出此循环*/
32 3 case 0x0d: ptr=i*4+2; /*第三行被按否?是则扫描指标=列X4+2*/
33 3 FLAG0=1; /*是则设FLAG0=1表有按键输入*/
34 3 break; /*跳出此循环*/
35 3 case 0x0e: ptr=i*4+3; /*第四行被按否?是则扫描指标=列X4+3*/
36 3 FLAG0=1; /*是则设FLAG0=1表有按键输入*/
37 3 default: break; /*跳出此循环*/
38 3 }
39 2 if(FLAG0==1)break; /*不为1,则扫描列右移,扫描下一列*/
40 2 a1=a1<<1|0x01; /*高位补1,由于P1.7~P1.4未接+5V,而是由指令加载高电平*/
41 2 }
42 1 }
43 void main(void)
44 {
45 1 TMOD=0x20; //T1工作方式2
46 1 TH1=0xfd; //串口波特率为9600
47 1 TCON=0x40; //启动T1
48 1 SCON=0x40; //串口工作与方式1并禁止接受
49 1 IE=0x00; //无中断
50 1 while(1)
51 1 {
52 2 scan(); //启动键盘扫描
53 2 if(FLAG0) //当FLAG0=1时,有键输入
54 2 {
55 3 SBUF=tab[ptr];
C51 COMPILER V7.07 KEY 09/16/2006 15:19:27 PAGE 2
56 3 while(TI==0);TI=0; //将键值送串口
57 3 FLAG0=0; //将标识位清零
58 3 delay(30000); //延时
59 3 }
60 2 }
61 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 134 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -