📄 led.lst
字号:
C51 COMPILER V7.00 LED 04/01/2004 16:51:58 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN led.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE led.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <stdio.h>
2 #include <reg51.h>
3
4
5 #define TRUE 1
6 #define FALSE 0
7
8 #define DELAY_VALVE 3
9
10
11
12
13 #define PinDrvKey1 P1_0
14 #define PinDrvKey2 P1_1
15 #define PinDrvKey3 P1_2
16 #define PinDrvKey4 P1_3
17 //键盘扫描的驱动线
18
19
20 #define PinScanKey1 P1_4
21 #define PinScanKey2 P1_5
22 #define PinScanKey3 P1_6
23 #define PinScanKey4 P1_7
24 //键盘扫描的信号获取线
25
26 #define PinSegA P2_0
27 #define PinSegB P2_1
28 #define PinSegC P2_2
29 #define PinSegD P2_3
30 //七段码的数据线
31
32 #define PinSelectA P2_4
33 #define PinSelectB P2_5
34 #define PinSelectC P2_6
35 //选择器的数据位
36
37 #define PinSelectCS P2_4
38 //选择器的片选位
39
40 #define LedSelect0 0x80
41 #define LedSelect1 0x90
42 #define LedSelect2 0xa0
43 #define LedSelect3 0xb0
44 #define LedSelect4 0xc0
45 #define LedSelect5 0xd0
46
47 #define PinLamp P0_0
48 //指示灯驱动管脚
49 #define PinSpeaker P0_1
50 //蜂鸣器驱动管脚
51
52 sbit P0_0=P0^0;
53 sbit P0_1=P0^1;
54 sbit P0_2=P0^2;
55 sbit P0_3=P0^3;
C51 COMPILER V7.00 LED 04/01/2004 16:51:58 PAGE 2
56 sbit P0_4=P0^4;
57 sbit P0_5=P0^5;
58 sbit P0_6=P0^6;
59 sbit P0_7=P0^7;
60
61 sbit P1_0=P1^0;
62 sbit P1_1=P1^1;
63 sbit P1_2=P1^2;
64 sbit P1_3=P1^3;
65 sbit P1_4=P1^4;
66 sbit P1_5=P1^5;
67 sbit P1_6=P1^6;
68 sbit P1_7=P1^7;
69
70 sbit P2_0=P2^0;
71 sbit P2_1=P2^1;
72 sbit P2_2=P2^2;
73 sbit P2_3=P2^3;
74 sbit P2_4=P2^4;
75 sbit P2_5=P2^5;
76 sbit P2_6=P2^6;
77 sbit P2_7=P2^7;
78
79
80 void initial(void);
81 //初始化子程序
82 void delay(short i);
83 //延时子程序
84 void display(unsigned char i,unsigned char num);
85 //显示子程序,其中变量i,num含义为在第i个数码管显示数字num.
86
87 void main(void)
88 {
89 1 unsigned char i;
90 1 initial();
91 1 //键盘驱动信号,发光二极管,以及蜂鸣器都设在无效状态
92 1 while(1)
93 1 {
94 2 for(i=0;i<=5;i++)
95 2 {
96 3 display(i,1);
97 3 delay(DELAY_VALVE);
98 3 display(i,8);
99 3 //所有数码管显示都为8,只有数字1在各个数码管之间循环闪动
100 3 }
101 2
102 2 }
103 1
104 1 }
105
106 void initial(void)
107 {
108 1 P1_0=FALSE;
109 1 P1_1=FALSE;
110 1 P1_2=FALSE;
111 1 P1_3=FALSE;
112 1 //键盘驱动信号都设为低,避免干扰。
113 1 P0_0=TRUE;
114 1 //发光二极管设为不亮
115 1 P0_1=TRUE;
116 1 //蜂鸣器不响
117 1 }
C51 COMPILER V7.00 LED 04/01/2004 16:51:58 PAGE 3
118
119 void delay(short i)
120 {
121 1 int j=0;
122 1 int k=0;
123 1 k=i*DELAY_VALVE;
124 1 while (j<k)j++;
125 1 }
126
127 void display(unsigned char i,unsigned char num)
128 {
129 1 if(num >= 0 && num <=9)
130 1 {switch(i)
131 2 { case 0:P2= LedSelect0 | num;
132 3 //LedSelect0的高四位为选择第0个数码管的逻辑,低四位则为数码管显示的数字。
133 3 break;
134 3 case 1:P2= LedSelect1 | num;
135 3 //LedSelect1的高四位为选择第1个数码管的逻辑,低四位则为数码管显示的数字。
136 3 break;
137 3 case 2:P2= LedSelect2 | num;
138 3 //LedSelect2的高四位为选择第2个数码管的逻辑,低四位则为数码管显示的数字。
139 3 break;
140 3 case 3:P2= LedSelect3 | num;
141 3 //LedSelect3的高四位为选择第3个数码管的逻辑,低四位则为数码管显示的数字。
142 3 break;
143 3 case 4:P2= LedSelect4 | num;
144 3 //LedSelect4的高四位为选择第4个数码管的逻辑,低四位则为数码管显示的数字。
145 3 break;
146 3 case 5:P2= LedSelect5 | num;
147 3 //LedSelect5的高四位为选择第5个数码管的逻辑,低四位则为数码管显示的数字。
148 3 break;
149 3 default:break;
150 3 }
151 2 }
152 1 }
153
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 153 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 1
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 + -