📄 text1.lst
字号:
C51 COMPILER V7.09 TEXT1 08/17/2005 12:59:46 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<math.h>
3 static const char tab[16]={0x01,0x02,0x03,0x0c, /*键盘码00,01,02,03,*/
4 0x04,0x05,0x06,0x0d, /*键盘码04,05,06,07,*/
5 0x07,0x08,0x09,0x0e, /*键盘码08,09,0a,0b,*/
6 0x0a,0x00,0x0b,0x0f};/*键盘码0c,0d,0e,0f*/
7
8
9 void delay1ms();
10
11 void main()
12 {
13 1 unsigned char data a1 ,a2 ; //k as a flag of num end
14 1 unsigned int i;
15 1
16 1 /* a1=4;
17 1 a2=a1;
18 1 a1=2;
19 1 //a1=0xf7;
20 1
21 1 a1=0x40;
22 1 m=0x00;
23 1
24 1
25 1 P0=0x22;
26 1 P0=0x33;
27 1 P0=0x44;
28 1 P0=0x55;
29 1
30 1 */
31 1
32 1 while(1){
33 2 a1=scan();
*** WARNING C206 IN LINE 33 OF TEXT1.C: 'scan': missing function-prototype
34 2 a2=a1;
35 2 }
36 1
37 1 }
*** WARNING C280 IN LINE 14 OF TEXT1.C: 'i': unreferenced local variable
38
39 unsigned char scan(void) /*扫描键盘副程式*/
40 {
*** ERROR C231 IN LINE 40 OF TEXT1.C: 'scan': redefinition
41 1 unsigned char data a1,i; /*A1=0XF7列扫描初值,I行*/
42 1 unsigned char data m;
43 1 unsigned char FLAG0; /*设按键回应旗号为0,键盘扫描计数指标为0*/
44 1 unsigned char data ptr;
45 1 a1=0x0f ;
46 1 FLAG0=0;
47 1 ptr=0;
48 1 m=0x0f ;
49 1 while(m==0x0f)
50 1 {
51 2 P1=0xff;
52 2 a1=0x0f;
C51 COMPILER V7.09 TEXT1 08/17/2005 12:59:46 PAGE 2
53 2 P1=a1; /*列扫描输出,读入P1存入M,以便侦测行与侦测按键是否放开*/
54 2 m=P1;
55 2 }
56 1 for(i=0;i<4;i++)
57 1 delay1ms();
58 1 a1=0x0f;
59 1 m=0x0f ;
60 1 while(m==0x0f)
61 1 {
62 2 P1=0xff;
63 2 a1=0x0f;
64 2 P1=a1; /*列扫描输出,读入P1存入M,以便侦测行与侦测按键是否放开*/
65 2 m=P1;
66 2 }
67 1 a1=0x7f;
68 1 for(i=0;i<4;i++) /*键盘4个扫描列*/
69 1 {
70 2 P1=a1; /*列扫描输出,读入P1存入M,以便侦测行与侦测按键是否放开*/
71 2 m=P1;
72 2 switch(m&0x0f) /*取行的高4位元,侦测那一行被按*/
73 2 {
74 3 case 0x07: ptr=i; /*第一行被按否?是则扫描指标=列X4*/
75 3 FLAG0=1; /*是则设FLAG0=1表有按键输入*/
76 3 break; /*跳出此循环*/
77 3 case 0x0b: ptr=i+4; /*第二行被按否?是则扫描指标=列X4+1*/
78 3 FLAG0=1; /*是则设FLAG0=1表有按键输入*/
79 3 break; /*跳出此循环*/
80 3 case 0x0d: ptr=i+8; /*第三行被按否?是则扫描指标=列X4+2*/
81 3 FLAG0=1; /*是则设FLAG0=1表有按键输入*/
82 3 break; /*跳出此循环*/
83 3 case 0x0e: ptr=i+12; /*第四行被按否?是则扫描指标=列X4+3*/
84 3 FLAG0=1; /*是则设FLAG0=1表有按键输入*/
85 3 default: break; /*跳出此循环*/
86 3 }
87 2 if(FLAG0==1)break; /*不为1,则扫描列右移,扫描下一列*/
88 2 a1=a1>>1|0x80;
89 2 /*高位补1,由于P1.7~P1.4未接+5V,而是由指令加载高电平*/
90 2 }
91 1 a1=0x0f;
92 1 while(m!=0x0f)
93 1 {
94 2 P1 =0xff;
95 2 a1=0x0f;
96 2 P1=a1; /*列扫描输出,读入P1存入M,以便侦测行与侦测按键是否放开*/
97 2 m=P1;
98 2 }
99 1
100 1 if(FLAG0==1)
101 1 return ptr;
102 1 else return 0x40;
103 1 } /*返回主程式*/
*** ERROR C231 IN LINE 103 OF TEXT1.C: 'scan': redefinition
104 void delay1ms()
105 {
106 1 IE=00;
107 1 TMOD=0x10;
108 1 TH1=0xfc;
109 1 TL1=0x23;
110 1 TR1=1;
111 1
112 1 while(!TF1);
113 1 TF1=0;
C51 COMPILER V7.09 TEXT1 08/17/2005 12:59:46 PAGE 3
114 1 }
C51 COMPILATION COMPLETE. 2 WARNING(S), 2 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -