📄 bskz.lst
字号:
C51 COMPILER V7.50 BSKZ 06/14/2007 21:46:06 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE BSKZ
OBJECT MODULE PLACED IN bskz.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bskz.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #define uchar unsigned char
3 uchar sn=10; /*步数*/
4 uchar idata nowrate[2]={0x00,0x00}; /*匀速定时器初值*/
5 uchar idata *pp;
6 bit pf=1; /*中断标志*/
7
8 void contrl(direct,mode)
9 bit direct; /*方向*/
10 uchar mode; /*速度控制*/
11
12 {
13 1 uchar i;
14 1 uchar idata *cmode;
15 1 uchar idata rise[20]; /*加速*/
16 1 uchar idata fall[20]; /*减速*/
17 1 uchar idata plus[7]={0x01,0x03,0x02,0x06,0x04,0x05,0x00}; /*正转*/
18 1 uchar idata minu[7]={0x05,0x04,0x06,0x02,0x03,0x01,0x00}; /*反转*/
19 1
20 1 if(direct) cmode=plus;
21 1 else cmode=minu;
22 1 switch(mode)
23 1 {
24 2 case 1:pp=rise;break; /*pp指向定时器初值*/
25 2 case 2:pp=nowrate;break;
26 2 case 3:pp=fall;break;
27 2 default:pp=nowrate;break;
28 2 }
29 1
30 1 do
31 1 {
32 2 P1=cmode[i]; /*输出转动控制字*/
33 2 if(cmode[++i]==0x00)i=0;
34 2 while(pf); /*等待定时时间到*/
35 2 pf=1;
36 2 if((mode==1)||(mode==3))pp+=2; /*定时器初值变化*/
37 2 }
38 1 while(sn--);
39 1 }
40
41
42 void intt0(void) interrupt 1 /*T/C0中断服务*/
43 {
44 1 TL0=*pp;nowrate[0]=TL0; /*赋T/C0初值,记录当前定时器初值*/
45 1 TH0=*(pp+1);nowrate[1]=TH0;
46 1 pf=0;
47 1 }
48
49 void main (void)
50 {
51 1 TMOD=0X01;
52 1 TH0=0x00;
53 1 TL0=0X00;
54 1 TR0=1;
55 1 ET0=1;
C51 COMPILER V7.50 BSKZ 06/14/2007 21:46:06 PAGE 2
56 1 EA=1;
57 1 contrl(1,1);
58 1 sn=10;
59 1 contrl(1,2);
60 1 sn=10;
61 1 contrl(1,3);
62 1 }
63
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 205 ----
CONSTANT SIZE = 14 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 3
IDATA SIZE = 2 54
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -