📄 key4x4.lst
字号:
C51 COMPILER V7.06 KEY4X4 12/07/2007 01:02:52 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEY4X4
OBJECT MODULE PLACED IN key4X4.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key4X4.c LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2
3 sfr P4=0xe8;
4 sbit P42=P4^2;
5 sbit P43=P4^3;
6
7 #define DELAYTIME 40
8
9 sbit a=P0^0;
10 sbit b=P0^1;
11 sbit c=P0^2;
12 sbit d=P0^3;
13
14 char test[4]={0x7f,0xbf,0xdf,0xef};
15
16 void delay(unsigned long time)
17 {
18 1 while(time--);
19 1 }
20
21 unsigned char code code_table[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
22 #define WEISHU 8 //修改该处可以做到不同位数的动态显示,本程序可以做到最多8个
23
24 /*************************
25 硬件描述
26 **************************/
27 #define WEI_LE P43
28 #define DUAN_LE P42
29 /*************************
30 全局变量
31 **************************/
32 unsigned char xdata DISP[8];
33
34
35 /****************************************************************
36 * 将int型转换为4位BCD码
37 ****************************************************************/
38 void bianhuan(unsigned long x)//
39 {
40 1 unsigned long temp=x;
41 1 DISP[0]=code_table[temp/10000000];temp=x%10000000;
42 1 DISP[1]=code_table[temp/1000000] ;temp=x%1000000 ;
43 1 DISP[2]=code_table[temp/100000] ;temp=x%100000 ;
44 1 DISP[3]=code_table[temp/10000] ;temp=x%10000 ;
45 1 DISP[4]=code_table[temp/1000] ;temp=x%1000 ;
46 1 DISP[5]=code_table[temp/100] ;temp=x%100 ;
47 1 DISP[6]=code_table[temp/10] ;temp=x%10 ;
48 1 DISP[7]=code_table[temp/1] ;temp=x%1 ;
49 1 }
50
51 /*************************
52 Timer 0 定时中断处理
53 **************************/ //timer init
54 void initTimer(void)
55 {
C51 COMPILER V7.06 KEY4X4 12/07/2007 01:02:52 PAGE 2
56 1 TMOD=0x01;
57 1 TH0=0xef;
58 1 TL0=0x80;
59 1 TR0=1;
60 1 ET0=1;
61 1 EA=1;
62 1 } //timer0/counter0 interrupt
63
64 void timer0(void) interrupt 1
65 {
66 1 static unsigned char wei=0;
67 1 unsigned char weixuan=0x80;
68 1 TH0=0xef;
69 1 TL0=0x80;
70 1 P1=DISP[wei];
71 1 DUAN_LE=1;
72 1 DUAN_LE=0;
73 1 P1=(~(weixuan>>wei));
74 1 WEI_LE=1;
75 1 WEI_LE=0;
76 1 wei++;
77 1 if(wei>=WEISHU)
78 1 wei=0;
79 1 }
80
81
82 void LED_Disp(unsigned long dat)
83 {
84 1 WEI_LE=0;
85 1 DUAN_LE=0;//锁存复位
86 1 EA=0;
87 1 bianhuan(dat);
88 1 EA=1;
89 1 }
90
91 void main()
92 {
93 1 int i=0;
94 1
95 1 P0=0xff;
96 1 delay(400);
97 1 initTimer();
98 1 LED_Disp(0);
99 1 while(1)
100 1 {
101 2 P0=0xff;
102 2 for(i=0;i<4;i++)
103 2 {
104 3 P0=0xff;
105 3 P0=P0&test[i];
106 3 delay(DELAYTIME);
107 3 if(a!=1)
108 3 {
109 4 delay(DELAYTIME);
110 4 if(a!=1)
111 4 {
112 5 LED_Disp((3-i)*4+1);
113 5 }
114 4 }
115 3 if(b!=1)
116 3 {
117 4 delay(DELAYTIME);
C51 COMPILER V7.06 KEY4X4 12/07/2007 01:02:52 PAGE 3
118 4 if(b!=1)
119 4 {
120 5 LED_Disp((3-i)*4+2);
121 5 }
122 4 }
123 3 if(c!=1)
124 3 {
125 4 delay(DELAYTIME);
126 4 if(c!=1)
127 4 {
128 5 LED_Disp((3-i)*4+3);
129 5 }
130 4 }
131 3 if(d!=1)
132 3 {
133 4 delay(DELAYTIME);
134 4 if(d!=1)
135 4 {
136 5 LED_Disp((3-i)*4+4);
137 5 }
138 4 }
139 3 }
140 2 }
141 1
142 1 while(1);
143 1 }
144
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 868 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = 13 10
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
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 + -