📄 main.lst
字号:
C51 COMPILER V7.20 MAIN 06/13/2011 11:04:05 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg2051.h>
2 #include <intrins.h>
3
4 typedef unsigned char uchar;
5 typedef unsigned int uint;
6
7 sbit Dig1 = P3^2;
8 sbit Dig2 = P3^3;
9 sbit Dig3 = P3^4;
10 sbit Dig4 = P3^7;
11 sbit RE = P3^5;
12 sbit Dot = P1^7;
13 uint Timer = 0; //0.5ms闪烁控制标志
14 uchar Receive_Buffer[5]; //接收主机发来的数据
15 uchar Display_Buffer[5]; //显示缓冲区
16 uchar Display_Flag = 0; //是否显示标志
17 uchar Number_Buffer[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
18 //uchar Number_Buffer_Dot[10] = {0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xDF};
19
20 void Delay(unsigned char time) //延时函数单位1的时候3ms
21 {
22 1 unsigned char i;
23 1 unsigned int j;
24 1 for(i=time;i>0;i--)
25 1 {
26 2 for(j=40;j>0;j--);
27 2 }
28 1 }
29
30
31 void uart(void) interrupt 4
32 {
33 1
34 1 unsigned char temp;
35 1
36 1 if (RI)
37 1 {
38 2 RI=0;
39 2
40 2 temp =SBUF ;
41 2 Receive_Buffer[temp>>4] = temp&0x0F;
42 2 }
43 1 }
44
45 void timer0(void) interrupt 1 //3ms一次
46 {
47 1 TH0=0xf0;
48 1 TL0=0x60;
49 1 //add your code here.
50 1 Timer++;
51 1 Display_Buffer[0]++;
52 1 if (Timer >= 650)
53 1 {
54 2 Timer = 0;
55 2 }
C51 COMPILER V7.20 MAIN 06/13/2011 11:04:05 PAGE 2
56 1 if (Display_Buffer[0] > 4)
57 1 {
58 2 Display_Buffer[0] = 1;
59 2 }
60 1 }
61
62 void initTimer(void)
63 {
64 1 TMOD=0x1;
65 1 TH0=0xF0;
66 1 TL0=0x60;
67 1 }
68
69 void initUart(void)
70 {
71 1 TMOD|=0x20;
72 1 SCON=0x50;
73 1 TH1=0xfd;
74 1 TL1=0xfd;
75 1 TR1=1;
76 1 ES=1;
77 1 }
78
79 void main(void)
80 {
81 1 EA = 1;
82 1 TR0=1;
83 1 ET0=1;
84 1 RE = 0;
85 1 initTimer();
86 1 initUart();
87 1
88 1 Receive_Buffer[0] = 0;
89 1 Display_Buffer[0] = 0;
90 1 Display_Flag = 0;
91 1
92 1 while (1)
93 1 {
94 2 //EA = 0;
95 2 ES = 0;
96 2 if (Receive_Buffer[4] == 0)
97 2 {
98 3 switch (Display_Buffer[0])
99 3 {
100 4 case 1:
101 4 Dig2 = 0;
102 4 Dig3 = 0;
103 4 Dig4 = 0;
104 4 Dig1 = 1;
105 4 P1 = Number_Buffer[Receive_Buffer[0]];
106 4
107 4 if (Timer >= 0 && Timer <= 200) //当TIMER在0到100范围内时 点是亮的状态
108 4 {
109 5 Dot = 1;
110 5
111 5 }
112 4 else //当TIMER在100到200范围内 点是灭的状态
113 4 {
114 5 Dot = 0;
115 5
116 5 }
117 4 Delay(1);
C51 COMPILER V7.20 MAIN 06/13/2011 11:04:05 PAGE 3
118 4 break;
119 4
120 4 case 2:
121 4 Dig1 = 0;
122 4 Dig3 = 0;
123 4 Dig4 = 0;
124 4 Dig2 = 1;
125 4 P1 = Number_Buffer[Receive_Buffer[1]];
126 4 Delay(1);
127 4 break;
128 4
129 4 case 3:
130 4 Dig1 = 0;
131 4 Dig2 = 0;
132 4 Dig4 = 0;
133 4 Dig3 = 1;
134 4 P1 = Number_Buffer[Receive_Buffer[2]];
135 4 Delay(1);
136 4 break;
137 4
138 4 case 4:
139 4 Dig1 = 0;
140 4 Dig2 = 0;
141 4 Dig3 = 0;
142 4 Dig4 = 1;
143 4 P1 = Number_Buffer[Receive_Buffer[3]];
144 4 Delay(1);
145 4 break;
146 4
147 4 default: break;
148 4 }
149 3 }
150 2 else if (Receive_Buffer[4] == 1)
151 2 {
152 3 if (Timer >= 0 && Timer <= 400)
153 3 {
154 4 switch (Display_Buffer[0])
155 4 {
156 5 case 1:
157 5 Dig2 = 0;
158 5 Dig3 = 0;
159 5 Dig4 = 0;
160 5 Dig1 = 1;
161 5 P1 = Number_Buffer[Receive_Buffer[0]];
162 5 Delay(1);
163 5 break;
164 5 case 2:
165 5 Dig2 = 1;
166 5 Dig3 = 0;
167 5 Dig4 = 0;
168 5 Dig1 = 0;
169 5 P1 = Number_Buffer[Receive_Buffer[1]];
170 5 Delay(1);
171 5 break;
172 5 case 3:
173 5 Dig2 = 0;
174 5 Dig3 = 1;
175 5 Dig4 = 0;
176 5 Dig1 = 0;
177 5 P1 = Number_Buffer[Receive_Buffer[2]];
178 5 Delay(1);
179 5 break;
C51 COMPILER V7.20 MAIN 06/13/2011 11:04:05 PAGE 4
180 5 case 4:
181 5 Dig2 = 0;
182 5 Dig3 = 0;
183 5 Dig4 = 1;
184 5 Dig1 = 0;
185 5 P1 = Number_Buffer[Receive_Buffer[3]];
186 5 Delay(1);
187 5 break;
188 5 }
189 4 }
190 3 else
191 3 {
192 4 Dig1 = 0;
193 4 Dig2 = 0;
194 4 Dig3 = 0;
195 4 Dig4 = 0;
196 4 }
197 3 }
198 2 ES = 1;
199 2
200 2 }
201 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 414 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 23 ----
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 + -