📄 text1.lst
字号:
C51 COMPILER V7.10 TEXT1 06/05/2008 14:34:59 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: D:\程序\keil51\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND TABS(6)
line level source
1 #include"reg51.h"
2 #define uchar unsigned char
3 #include"intrins.h"
4 uchar code zmtab[]={0xc0,0xf9,0xa4,0xb0,
5 0x99,0x92,0x82,0xf8,
6 0x80,0x90,0x88,0x83,
7 0xc6,0xa1,0x86,0x8e,0xff};
8 void delay(uchar del);
9 void init();
10 void ajcl(uchar jz);
11 uchar temp ,x,hz,lz,jz;
12 void init(void);
13 //*************************************************************
14 main()
15 {
16 1 init();
17 1 while(1)
18 1 {
19 2 jz=key();
*** WARNING C206 IN LINE 19 OF TEXT1.C: 'key': missing function-prototype
20 2 P2=jz;
21 2 SBUF=P2;
22 2 while(TI==0);
23 2 TI=0;
24 2 ajcl(jz);
25 2 }
26 1 }
27 //*************************************************************
28 key()
29 {P2=0XF0;
30 1 if((P2&0xf0)!=0xf0)
31 1 { delay(10);
32 2 if((P2&0xf0)!=0xf0)
33 2 {hz=0xfe;
34 3 while(1)
35 3 {
36 4 P2=hz;
37 4 if ((P2&hz)!=hz)
38 4 {return(~P2);
39 5 break;
40 5 }
41 4 else
42 4 {hz=_crol_(hz,1);}
43 4 }
44 3 }
45 2 }
46 1 else
47 1 return 0;
48 1 }
49
50 //*************************************************************
51 void ajcl(uchar jz)
52 {
53 1 if(jz==0x11) P1=zmtab[0];
54 1 if(jz==0x21) P1=zmtab[1];
C51 COMPILER V7.10 TEXT1 06/05/2008 14:34:59 PAGE 2
55 1 if(jz==0x41) P1=zmtab[2];
56 1 if(jz==0x81) P1=zmtab[3];
57 1 if(jz==0x12) P1=zmtab[4];
58 1 if(jz==0x22) P1=zmtab[5];
59 1 if(jz==0x42) P1=zmtab[6];
60 1 if(jz==0x82) P1=zmtab[7];
61 1 if(jz==0x14) P1=zmtab[8];
62 1 if(jz==0x24) P1=zmtab[9];
63 1 if(jz==0x44) P1=zmtab[10];
64 1 if(jz==0x84) P1=zmtab[11];
65 1 if(jz==0x18) P1=zmtab[12];
66 1 if(jz==0x28) P1=zmtab[13];
67 1 if(jz==0x48) P1=zmtab[14];
68 1 if(jz==0x88) P1=zmtab[15];
69 1 }
70 //*************************************************************
71 void delay(uchar del)
72 {
73 1 uchar i;
74 1 for(;del>0;del--)
75 1 for(i=0;i<125;i++)
76 1 {;}
77 1 }
78
79 //*************************************************************
80
81 void init(void)
82 {
83 1 TMOD=0x20;
84 1 SCON=0x40;
85 1 TH1=0xFD;
86 1 TL1=0xFD;
87 1 TR1=1;
88 1 }
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 /*
105 uchar hz,lz;
106 P2=0xf0; //置所有行为低电平,行扫描,列线输入(此时)
107 if((P2&0xf0)!=0xf0) //判断是否有有键按下(读取列的真实状态,若第4列有键按下则P1的值会变成0111
-0000),有往下执行
108 {
109 delay(10); //延时去抖动(10ms)
110 if((P2&0xf0)!=0xf0) //再次判断列中是否是干扰信号,不是则向下执行
111 {
112 hz=0xfe; //逐行扫描初值(即先扫描第1行)
113 while((hz&0x10)!=0) //行扫描完成时(即4行已经全部扫描完成)sccode为1110 1111 停止while程序
-
114 {
C51 COMPILER V7.10 TEXT1 06/05/2008 14:34:59 PAGE 3
115 P2=hz; //输出行扫描码
116 if ((P2&hz)!=hz) //***(P2&0xf0)!=0xf0***也可这样 本行有键按下(即P1(真实的状态)的高四位不全
-为1)
117 {
118 lz=(P2&0xf0)|0x0f; //列
119 while(P2&0xf0!=0xf0);
120 return((~hz)|(~lz)); //返回行和列
121 break; //有按键返回 提前退出循环
122 }
123 else //所扫描的行没有键按下,则扫描下一行,直到4行都扫描,此时sccode值为1110 1111
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -