📄 main1.lst
字号:
C51 COMPILER V8.08 MAIN1 12/07/2008 16:13:54 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN1
OBJECT MODULE PLACED IN MAIN1.OBJ
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE MAIN1.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "AT89X51.h"
2
3 int delay();
4 void inti_lcd();
5 void show_lcd(int);
6 void cmd_wr();
7 void ShowState();
8 void clock(unsigned int Delay) ;
9 void DoSpeed(); //计算速度
10 //正转值
11 #define RIGHT_RUN 1
12 //反转值
13 #define LEFT_RUN 0
14 sbit RS=0xA0;
15 sbit RW=0xA1;
16 sbit E=0xA2;
17
18 char SpeedChar[]="SPEED(n/min):";
19 char StateChar[]="RUN STATE:";
20 char STATE_CW[]="CW";
21 char STATE_CCW[]="CCW";
22 char SPEED[3]="050";
23 unsigned int RunSpeed=50; //速度
24 unsigned char RunState=RIGHT_RUN; //运行状态
25 main()
26 {
27 1
28 1 /*定时器设置*/
29 1 TMOD=0x66; //定时器0,1都为计数方式;方式2;
30 1 EA=1; //开中断
31 1
32 1 TH0=0xff; //定时器0初值FFH;
33 1 TL0=0xff;
34 1 ET0=1;
35 1 TR0=1;
36 1
37 1 TH1=0xff; //定时器1初值FFH;
38 1 TL1=0xff;
39 1 ET1=1;
40 1 TR1=1;
41 1
42 1 IT0=1; //脉冲方式
43 1 EX0=1; //开外部中断0:加速
44 1 IT1=1; //脉冲方式
45 1 EX1=1; //开外部中断1:减速
46 1
47 1 inti_lcd();
48 1 DoSpeed();
49 1 ShowState();
50 1 while(1)
51 1 {
52 2 clock(RunSpeed);
53 2 P0_1=P0_1^0x01;
54 2 }
55 1
C51 COMPILER V8.08 MAIN1 12/07/2008 16:13:54 PAGE 2
56 1 }
57
58 //定时器0中断程序:正转
59 void t_0(void) interrupt 1
60 {
61 1 RunState=RIGHT_RUN;
62 1 P0_0=1;
63 1 P1=0x01;
64 1 cmd_wr();
65 1 ShowState();
66 1 }
67
68
69 //定时器1中断:反转
70 void t_1(void) interrupt 3
71 {
72 1 RunState=LEFT_RUN;
73 1 P0_0=0;
74 1 P1=0x01;
75 1 cmd_wr();
76 1 ShowState();
77 1
78 1 }
79
80 //中断0:加速程序
81 void SpeedUp() interrupt 0
82 {
83 1 if(RunSpeed>=12)
84 1 RunSpeed=RunSpeed-2;
85 1 DoSpeed();
86 1 P1=0x01;
87 1 cmd_wr();
88 1 ShowState();
89 1
90 1 }
91
92 //中断1:减速程序
93 void SpeedDowm() interrupt 2
94 {
95 1
96 1 if(RunSpeed<=100)
97 1 RunSpeed=RunSpeed+2;
98 1 DoSpeed();
99 1 P1=0x01;
100 1 cmd_wr();
101 1 ShowState();
102 1
103 1
104 1 }
105
106 int delay() //判断LCD是否忙
107 {
108 1 int a;
109 1 start:
110 1
111 1 RS=0;
112 1 RW=1;
113 1 E=0;
114 1 for(a=0;a<2;a++);
115 1 E=1;
116 1 P1=0xff;
117 1 if(P1_7==0)
C51 COMPILER V8.08 MAIN1 12/07/2008 16:13:54 PAGE 3
118 1 return 0;
119 1 else
120 1 goto start;
121 1
122 1 }
123
124 void inti_lcd() //设置LCD方式
125 {
126 1
127 1 P1=0x38;
128 1 cmd_wr();
129 1 delay();
130 1
131 1 P1=0x01; //清除
132 1 cmd_wr();
133 1 delay();
134 1
135 1 P1=0x0f;
136 1 cmd_wr();
137 1 delay();
138 1
139 1 P1=0x06;
140 1 cmd_wr();
141 1 delay();
142 1
143 1 P1=0x0c;
144 1 cmd_wr();
145 1 delay();
146 1 }
147
148 void cmd_wr() //写控制字
149 {
150 1 RS=0;
151 1 RW=0;
152 1 E=0;
153 1 E=1;
154 1 }
155
156 void show_lcd(int i) //LCD显示子程序
157 {
158 1 P1=i;
159 1 RS=1;
160 1 RW=0;
161 1 E=0;
162 1 E=1;
163 1
164 1 }
165
166 void ShowState() //显示状态与速度
167 {
168 1 int i=0;
169 1 while(SpeedChar[i]!='\0')
170 1 {
171 2 delay();
172 2 show_lcd(SpeedChar[i]);
173 2 i++;
174 2 }
175 1
176 1 delay();
177 1 P1=0x80 | 0x0d;
178 1 cmd_wr();
179 1
C51 COMPILER V8.08 MAIN1 12/07/2008 16:13:54 PAGE 4
180 1 i=0;
181 1 while(SPEED[i]!='\0')
182 1 {
183 2 delay();
184 2 show_lcd(SPEED[i]);
185 2 i++;
186 2 }
187 1
188 1 delay();
189 1 P1=0xC0;
190 1 cmd_wr();
191 1
192 1 i=0;
193 1 while(StateChar[i]!='\0')
194 1 {
195 2 delay();
196 2 show_lcd(StateChar[i]);
197 2 i++;
198 2 }
199 1
200 1 delay();
201 1 P1=0xC0 | 0x0A;
202 1 cmd_wr();
203 1
204 1 i=0;
205 1 if(RunState==RIGHT_RUN)
206 1 while(STATE_CW[i]!='\0')
207 1 {
208 2 delay();
209 2 show_lcd(STATE_CW[i]);
210 2 i++;
211 2 }
212 1 else
213 1 while(STATE_CCW[i]!='\0')
214 1 {
215 2 delay();
216 2 show_lcd(STATE_CCW[i]);
217 2 i++;
218 2 }
219 1
220 1 }
221 void clock(unsigned int Delay) //1ms延时程序
222 { unsigned int i;
223 1 for(;Delay>0;Delay--)
224 1 for(i=0;i<124;i++);
225 1
226 1 }
227
228 void DoSpeed()
229 {
230 1 SPEED[0]=(1000*6/RunSpeed/100)+48;
231 1 SPEED[1]=1000*6/RunSpeed%100/10+48;
232 1 SPEED[2]=1000*6/RunSpeed%10+48;
233 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 746 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 38 ----
C51 COMPILER V8.08 MAIN1 12/07/2008 16:13:54 PAGE 5
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 + -