📄 ex.lst
字号:
C51 COMPILER V8.02 EX 10/16/2008 11:44:14 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE EX
OBJECT MODULE PLACED IN ex.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ex.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //****************Copyright (c)*************
2 // 成都麟鑫科技有限责任公司
3 // http://www.linxinpro.com
4 //******************************************
5 /*2007年11月19日
6 矩阵键盘试验及数码管移位显示试验
7 按键输入0~F的数据
8 数码管动态移位显示
9 通过改变time变量可以改变动态显示效果
10 采用逐行扫描法实现矩阵键盘输入
11 */
12 #include<reg51.h>
13 #define uint unsigned int
14 #define uchar unsigned char
15 uchar code tab1[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//0~
-F字形代码
16 uint data1=0,data2=0,data3=0,data4=0;time=100;//全局变量
17 sbit P1_0=P1^0;
18 sbit P1_1=P1^1;
19 sbit P1_2=P1^2;
20 sbit P1_3=P1^3;
21 void delay(uint tx);//延时程序
22 void keys(); //判断键值子程序
23 void skeys(); //扫描键盘子程序
24 void show(uint tx1,uint tx2,uint tx3,uint tx4);//数据显示子程序
25 void main () //主程序
26 {
27 1 uint i;
28 1 P1_3=1;//初始化数码管控制位
29 1 P1_2=1;
30 1 P1_1=1;
31 1 P1_0=1;
32 1 while(1)
33 1 {
34 2 skeys();//扫描键盘
35 2 show(data1,data2,data3,data4);//显示数据
36 2 }
37 1 }
*** WARNING C280 IN LINE 27 OF EX.C: 'i': unreferenced local variable
38 /*判断键值*/
39 void keys()
40 {
41 1 P0=0xef; //判断是否为第一行按键按下
42 1 if(P0<0xef)
43 1 {
44 2 data4=data3;//数据移位操作
45 2 data3=data2;
46 2 data2=data1;
47 2 if(P0==0Xee)
48 2 data1=0;
49 2 if(P0==0xed)
50 2 data1=1;
51 2 if(P0==0xeb)
52 2 data1=2;
53 2 if(P0==0xe7)
C51 COMPILER V8.02 EX 10/16/2008 11:44:14 PAGE 2
54 2 data1=3;
55 2 while(P0!=0xef)
56 2 show(data1,data2,data3,data4);//等待按键断开
57 2 }
58 1 P0=0xdf; //判断是否为第二行按键按下
59 1 if(P0<0xdf)
60 1 {
61 2 data4=data3;//数据移位操作
62 2 data3=data2;
63 2 data2=data1;
64 2 if(P0==0Xde)
65 2 data1=4;
66 2 if(P0==0xdd)
67 2 data1=5;
68 2 if(P0==0xdb)
69 2 data1=6;
70 2 if(P0==0xd7)
71 2 data1=7;
72 2 while (P0!=0xdf)
73 2 show(data1,data2,data3,data4);//等待按键断开
74 2 }
75 1 P0=0xbf; //判断是否为第三行按键按下
76 1 if(P0<0xbf)
77 1 {
78 2 data4=data3;//数据移位操作
79 2 data3=data2;
80 2 data2=data1;
81 2 if(P0==0Xbe)
82 2 data1=8;
83 2 if(P0==0xbd)
84 2 data1=9;
85 2 if(P0==0xbb)
86 2 data1=10;
87 2 if(P0==0xb7)
88 2 data1=11;
89 2 while (P0!=0xbf)
90 2 show(data1,data2,data3,data4);//等待按键断开
91 2 }
92 1 P0=0x7f; //判断是否为第四行按键按下
93 1 if(P0<0x7f)
94 1 {
95 2 data4=data3;//数据移位操作
96 2 data3=data2;
97 2 data2=data1;
98 2 if(P0==0X7e)
99 2 data1=12;
100 2 if(P0==0x7d)
101 2 data1=13;
102 2 if(P0==0x7b)
103 2 data1=14;
104 2 if(P0==0x77)
105 2 data1=15;
106 2 while (P0!=0x7f)
107 2 show(data1,data2,data3,data4);//等待按键断开
108 2 }
109 1 }
110 /*扫描矩阵键盘*/
111 void skeys()
112 {
113 1 uint j=0;
114 1 P0=0x0f;
115 1 if(P0<0x0f)
C51 COMPILER V8.02 EX 10/16/2008 11:44:14 PAGE 3
116 1 {
117 2 for(j=0;j<20;j++)
118 2 show(data1,data2,data3,data4);//软件消除抖动
119 2 if(P0<0x0f)
120 2 keys();
121 2 }
122 1 }
123 /*延时子程序*/
124 void delay(uint tx)
125 {
126 1 uint x=tx;
127 1 do
128 1 x--;
129 1 while(x>1);
130 1 }
131 /*显示按键键值*/
132 void show(uint tx1,uint tx2,uint tx3,uint tx4)
133 {
134 1 P2=tab1[tx1];
135 1 P1_0=0;
136 1 delay(time);
137 1 P1_0=1;
138 1 P2=tab1[tx2];
139 1 P1_1=0;
140 1 delay(time);
141 1 P1_1=1;
142 1 P2=tab1[tx3];
143 1 P1_2=0;
144 1 delay(time);
145 1 P1_2=1;
146 1 P2=tab1[tx4];
147 1 P1_3=0;
148 1 delay(time);
149 1 P1_3=1;
150 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 485 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 12
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -