?? led.lst
字號:
C51 COMPILER V6.23a LED 09/08/2003 17:00:38 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN led.OBJ
COMPILER INVOKED BY: C:\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 V6.23a LED 09/08/2003 17:00:38 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 V6.23a LED 09/08/2003 17:00:38 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 + -