📄 4x4.lst
字号:
C51 COMPILER V8.08 4X4 07/31/2008 00:39:25 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE 4X4
OBJECT MODULE PLACED IN 4X4.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 4X4.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include <intrins.h>
3
4 #define uchar unsigned char
5 #define uint unsigned int
6
7 uchar ledbit=0 ; //记录按键次数
8 uchar data leddata[8] ; //数组用于记录输入的数
9 uchar idata regment[8]={0,0,0,0,0,0,0,0}; //缓冲区数组
10
11 uchar code keytable[16]={0xEE,0xED,0xEB,0xE7, //0,1,2,3
12 0xDE,0xDD,0xDB,0xD7, //4,5,6,7
13 0xBE,0xBD,0xBB,0xB7, //8,9,.,H
14 0x7E,0x7D,0x7B,0x77}; //-,C,A,E (按键码表)
15
16 /*uchar code keytable[16]={0x7D,0xD7,0xBE,0xBD, //C,7,8,9
17 0x7B,0xDE,0xDD,0xDB, //A,4,5,6
18 0x77,0xED,0xEB,0xE7, //E,1,2,3
19 0x7E,0xEE,0xBB,0xB7}; //-,0,.,H (按键码表) */
20
21
22 uchar code ledtable[16]={ 0xC0,0xF9,0xA4,0xB0,0x99,
23 0x92,0x82,0xf8,0x80,0x90,
24 0x88,0x83,0xC6,0xA1,0x86,0x8E }; //(数码管显示码表)
25
26
27
28
29 /*uchar code ledtable[16]={0xed,0x81,0xf4,0xb5, //0,1,2,3
30 0x99,0x3d,0x7d,0x85, //4,5,6,7
31 0xfd,0xbd,0x02,0xd9, //8,9,.,h
32 0x10,0x6c,0xdd,0x7c}; //-,c,a,e (数码管显示码表)*/
33
34 /*uchar code ledtable[16]={0xbd,0x7d,0xb5,0xd9, //9,6,3,h
35 0xfd,0x3d,0xf4,0x02, //8,5,2,.
36 0x85,0x99,0x81,0xed, //7,4,1,0
37 0x6c,0xdd,0x7c,0x10}; //c,a,e,- (数码管显示码表)*/
38
39 //廷时函数
40 void delay()
41 {
42 1 uchar i;
43 1 for(i=0;i<=200;i++){;}
44 1 }
45
46 void main()
47 {
48 1 uchar input1,input2,dis_buf,i,j,k;
49 1 while(1)
50 1 {
51 2 P1=0x0f ;//扫描P1口的低位
52 2 if(P1!=0x0f)
53 2 {
54 3 input1=P1;
55 3 P1=0xf0 ;//扫描P1口的高位
C51 COMPILER V8.08 4X4 07/31/2008 00:39:25 PAGE 2
56 3 input2=P1;
57 3 dis_buf=input1+input2;//得到组合后的键码
58 3 for(i=0;i<16;i++)
59 3 {
60 4 if(dis_buf==keytable[i])//查表找到对应的按键值
61 4 {
62 5 if(ledbit==8) ledbit=0;//输入超过8位则位数回零
63 5 leddata[ledbit]=ledtable[i];//通过按键值找到数码管显示码,并将显示码保存在数组中
64 5 ledbit++ ;
65 5
66 5 if(dis_buf==0x7E)
67 5 {//sum();
68 6 for(j=0;j<8;j++)
69 6 {
70 7 regment[i]=ledtable[i];
71 7 }
72 6 for(j=0;k<8;j++)
73 6 {
74 7 // ledtable[i]=0x00;
75 7 }
76 6 P2=0x00;
77 6 }
78 5 break ;
79 5 }
80 4 }
81 3 P1=0xf0 ;
82 3 while(P1!=0xf0) ;//等待按键松开
83 3 }
84 2 //显示部份
85 2 for(i=0;i<ledbit;i++)
86 2 {
87 3 P2=_cror_(0x7f,i);//从P2.7开始循环左移
88 3 delay();
89 3
90 3 P0=leddata[ledbit-i-1];
91 3 delay();
92 3
93 3 }
94 2 P0=0x00;
95 2 }
96 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 163 ----
CONSTANT SIZE = 32 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 1
IDATA SIZE = 8 ----
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 + -