📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 04/17/2008 20:57:57 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*由键盘输入八个四位整数,排序后由LED依次显示出,间隔2.5秒*/
2 #include<reg52.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 uint block[8],tt=0;
6 uchar num,temp;
7 uchar keyscan();
8 void delay(uint z);
9 void input(uchar n);
10 void display(uint shu);
11 void display1(uint shu);
12 void paixu();
13 //******************************************************************************************************
14 //主函数
15 void main()
16 { uchar m;
17 1 while(1)
18 1 { for(m=0;m<8;m++)
19 2 {
20 3 input(m);
21 3 }
22 2 paixu();
23 2 for (m=0;m<8;m++)
24 2 {
25 3 display1(block[m]);
26 3
27 3 }
28 2 P0=0xFF;
29 2 }
30 1 }
31
32 //******************************************************************************************************
33 //子函数集
34
35
36 //*****************************************
37 //键盘输入子程序
38 uchar keyscan()
39 {
40 1 while(1)
41 1 //********************************
42 1 { P2=0xfe; //初始化P2口,并且动态扫描第一行
43 2 temp=P2;
44 2 temp=temp&0xf0; //屏蔽低位
45 2 while(temp!=0xf0) //判断是否有按键
46 2 {
47 3 delay(10); //利用延时子程序,软件消抖
48 3 temp=P2;
49 3 temp=temp&0xf0;
50 3 while(temp!=0xf0)
51 3 {
52 4 temp=P2;
53 4 switch(temp) //判断按键,并赋值
54 4 {
55 5 case 0xee:num=1;
C51 COMPILER V7.06 MAIN 04/17/2008 20:57:57 PAGE 2
56 5 break;
57 5 case 0xde:num=2;
58 5 break;
59 5 case 0xbe:num=3;
60 5 break;
61 5 case 0x7e:num=4;
62 5 break;
63 5 }
64 4 while(temp!=0xf0) //利用延时子程序,软件消抖
65 4 {
66 5 temp=P2;
67 5 temp=temp&0xf0;
68 5 }
69 4 }
70 3 P2=0xf0; //使P2口的值为无按键状态,为进入display()准备
71 3 return num;
72 3 }
73 2 //***************************
74 2 P2=0xfd; //初始化P2口,并且动态扫描第二行
75 2 temp=P2;
76 2 temp=temp&0xf0;
77 2 while(temp!=0xf0)
78 2 {
79 3 delay(10);
80 3 temp=P2;
81 3 temp=temp&0xf0;
82 3 while(temp!=0xf0)
83 3 {
84 4 temp=P2;
85 4 switch(temp)
86 4 {
87 5 case 0xed:num=5;
88 5 break;
89 5 case 0xdd:num=6;
90 5 break;
91 5 case 0xbd:num=7;
92 5 break;
93 5 case 0x7d:num=8;
94 5 break;
95 5 }
96 4 while(temp!=0xf0)
97 4 {
98 5 temp=P2;
99 5 temp=temp&0xf0;
100 5 }
101 4 }
102 3 P2=temp;
103 3 return num;
104 3 }
105 2
106 2 //************************************
107 2 P2=0xfb; //初始化P2口,并且动态扫描第三行
108 2 temp=P2;
109 2 temp=temp&0xf0;
110 2 while(temp!=0xf0)
111 2 {
112 3 delay(10);
113 3 temp=P2;
114 3 temp=temp&0xf0;
115 3 while(temp!=0xf0)
116 3 {
117 4 temp=P2;
C51 COMPILER V7.06 MAIN 04/17/2008 20:57:57 PAGE 3
118 4 switch(temp)
119 4 {
120 5 case 0xeb:num=9;
121 5 break;
122 5 case 0xdb:num=0;
123 5 break;
124 5 case 0xbb:num=11; //返回此值时要先判断,是否为11
125 5 break; //11--确认输入,进行下一次输入
126 5
127 5 }
128 4 while(temp!=0xf0)
129 4 {
130 5 temp=P2;
131 5 temp=temp&0xf0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -