⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 motor.src

📁 一款步进电机程序,已通过调试,欢迎大家下载..
💻 SRC
字号:
; .\motor.SRC generated from: motor.c
; COMPILER INVOKED BY:
;        C:\Keil\C51\BIN\C51.EXE motor.c BROWSE DEBUG OBJECTEXTEND SRC(.\motor.SRC)

$NOMOD51

NAME	MOTOR

P0	DATA	080H
P1	DATA	090H
P2	DATA	0A0H
P3	DATA	0B0H
T0	BIT	0B0H.4
AC	BIT	0D0H.6
T1	BIT	0B0H.5
T2	BIT	090H.0
EA	BIT	0A8H.7
IE	DATA	0A8H
EXF2	BIT	0C8H.6
RD	BIT	0B0H.7
ES	BIT	0A8H.4
IP	DATA	0B8H
RI	BIT	098H.0
INT0	BIT	0B0H.2
CY	BIT	0D0H.7
TI	BIT	098H.1
INT1	BIT	0B0H.3
RCAP2H	DATA	0CBH
PS	BIT	0B8H.4
SP	DATA	081H
T2EX	BIT	090H.1
OV	BIT	0D0H.2
RCAP2L	DATA	0CAH
C_T2	BIT	0C8H.1
WR	BIT	0B0H.6
RCLK	BIT	0C8H.5
TCLK	BIT	0C8H.4
SBUF	DATA	099H
PCON	DATA	087H
SCON	DATA	098H
TMOD	DATA	089H
TCON	DATA	088H
IE0	BIT	088H.1
IE1	BIT	088H.3
B	DATA	0F0H
CP_RL2	BIT	0C8H.0
ACC	DATA	0E0H
ET0	BIT	0A8H.1
ET1	BIT	0A8H.3
TF0	BIT	088H.5
ET2	BIT	0A8H.5
TF1	BIT	088H.7
TF2	BIT	0C8H.7
RB8	BIT	098H.2
TH0	DATA	08CH
addr0	BIT	090H.4
EX0	BIT	0A8H.0
IT0	BIT	088H.0
TH1	DATA	08DH
addr1	BIT	090H.5
TB8	BIT	098H.3
EX1	BIT	0A8H.2
IT1	BIT	088H.2
TH2	DATA	0CDH
addr2	BIT	090H.6
P	BIT	0D0H.0
addr3	BIT	090H.7
SM0	BIT	098H.7
TL0	DATA	08AH
SM1	BIT	098H.6
TL1	DATA	08BH
SM2	BIT	098H.5
TL2	DATA	0CCH
PT0	BIT	0B8H.1
PT1	BIT	0B8H.3
RS0	BIT	0D0H.3
PT2	BIT	0B8H.5
TR0	BIT	088H.4
RS1	BIT	0D0H.4
TR1	BIT	088H.6
TR2	BIT	0C8H.2
PX0	BIT	0B8H.0
PX1	BIT	0B8H.2
DPH	DATA	083H
DPL	DATA	082H
EXEN2	BIT	0C8H.3
REN	BIT	098H.4
T2CON	DATA	0C8H
RXD	BIT	0B0H.0
TXD	BIT	0B0H.1
F0	BIT	0D0H.5
PSW	DATA	0D0H
?PR?delay?MOTOR      SEGMENT CODE 
?PR?_delay2?MOTOR    SEGMENT CODE 
?PR?motor_ffw?MOTOR  SEGMENT CODE 
?PR?motor_rev?MOTOR  SEGMENT CODE 
?PR?motor_turn?MOTOR SEGMENT CODE 
?PR?main?MOTOR       SEGMENT CODE 
?CO?MOTOR            SEGMENT CODE 
?DT?MOTOR            SEGMENT DATA 
	EXTRN	CODE (?C_STARTUP)
	PUBLIC	rate
	PUBLIC	REV
	PUBLIC	FFW
	PUBLIC	main
	PUBLIC	motor_turn
	PUBLIC	motor_rev
	PUBLIC	motor_ffw
	PUBLIC	_delay2
	PUBLIC	delay

	RSEG  ?DT?MOTOR
           rate:   DS   1

	RSEG  ?CO?MOTOR
FFW:
	DB	00EH
	DB	00CH
	DB	00DH
	DB	009H
	DB	00BH
	DB	003H
	DB	007H
	DB	006H

REV:
	DB	006H
	DB	007H
	DB	003H
	DB	00BH
	DB	009H
	DB	00DH
	DB	00CH
	DB	00EH

; /******************************************************************/
; /*****************************************************************/ 
; /*                                                                                                                               
; /*                 步进电机加减速运行程序                                                                                                                                                                            
; /*               步进电机启动时,转速由慢到快逐步加速。                                                                      
; /*               步进电机匀速运行                                                                                                       
; /*               步进电机由快到慢逐步减速到停止 
; /*                                                                                                                                                                                                                                                    
; /******************************************************************/
;     
; #include <reg52.h>       
; #include <string.h>    
; 
; #define uchar unsigned char
; #define uint  unsigned int
; 
; sbit  addr0 = P1^4;
; sbit  addr1 = P1^5;
; sbit  addr2 = P1^6;
; sbit  addr3 = P1^7;
; 
; uchar code FFW[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06};//正转数组
; uchar code REV[8]={0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x0e};//反转数组
; uchar rate ;        
; /********************************************************/
; /*                                                  
; /* 延时
; /* 11.0592MHz时钟,                                    
; /*                                                      
; /********************************************************/
; void delay()

	RSEG  ?PR?delay?MOTOR
L?0043:
	USING	0
	MOV  	A,R6
	MOVC 	A,@A+DPTR
	MOV  	P0,A
	SETB 	addr0
	CLR  	addr1
	SETB 	addr2
	SETB 	addr3
	CLR  	addr3
delay:
	USING	0
			; SOURCE LINE # 31
;  {                           
			; SOURCE LINE # 32
;    uchar k;
;    uint s;
;    k = rate;
			; SOURCE LINE # 35
;---- Variable 'k?040' assigned to Register 'R7' ----
	MOV  	R7,rate
?C0003:
;    do
;     {
			; SOURCE LINE # 37
;        for(s = 0 ; s <400 ; s++) ;  
			; SOURCE LINE # 38
;---- Variable 's?041' assigned to Register 'R4/R5' ----
	CLR  	A
	MOV  	R5,A
	MOV  	R4,A
?C0004:
	INC  	R5
	CJNE 	R5,#00H,?C0042
	INC  	R4
?C0042:
	CJNE 	R4,#01H,?C0004
	CJNE 	R5,#090H,?C0004
;     }while(--k);
			; SOURCE LINE # 39
?C0001:
	DJNZ 	R7,?C0003
;  }
			; SOURCE LINE # 40
	RET  	
; END OF delay

; 
; 
; void delay2(uchar k)

	RSEG  ?PR?_delay2?MOTOR
_delay2:
	USING	0
			; SOURCE LINE # 43
;---- Variable 'k?142' assigned to Register 'R7' ----
;  {  
			; SOURCE LINE # 44
;                          
;    uchar s;
;    for(s = 0 ; s <k ; s++) ;  
			; SOURCE LINE # 47
;---- Variable 's?143' assigned to Register 'R6' ----
	CLR  	A
	MOV  	R6,A
?C0008:
	MOV  	A,R6
	CLR  	C
	SUBB 	A,R7
	JNC  	?C0011
	INC  	R6
	SJMP 	?C0008
; 
;    }
			; SOURCE LINE # 49
?C0011:
	RET  	
; END OF _delay2

; 
; /********************************************************/
; /*
; /*步进电机正转
; /*
; /********************************************************/
; void  motor_ffw()

	RSEG  ?PR?motor_ffw?MOTOR
motor_ffw:
	USING	0
			; SOURCE LINE # 56
; { 
			; SOURCE LINE # 57
;    uchar i;
;  
;     for (i=0; i<8; i++)      //一个周期转30度
			; SOURCE LINE # 60
;---- Variable 'i?244' assigned to Register 'R6' ----
	CLR  	A
	MOV  	R6,A
?C0012:
;     {  
			; SOURCE LINE # 61
;        P0 = FFW[i];//取数据
			; SOURCE LINE # 62
	MOV  	DPTR,#FFW
;        addr0 = 1;
			; SOURCE LINE # 63
;        addr1 = 0;
			; SOURCE LINE # 64
;        addr2 = 1;
			; SOURCE LINE # 65
;        addr3 = 1;
			; SOURCE LINE # 66
;        addr3 = 0;
			; SOURCE LINE # 67
;        delay();                 //调节转速
			; SOURCE LINE # 68
	LCALL	L?0043
;     }
			; SOURCE LINE # 69
	INC  	R6
	CJNE 	R6,#08H,?C0012
; }
			; SOURCE LINE # 70
?C0015:
	RET  	
; END OF motor_ffw

; 
; /********************************************************/
; /*
; /*步进电机反转
; /*
; /********************************************************/
; void  motor_rev()

	RSEG  ?PR?motor_rev?MOTOR
motor_rev:
	USING	0
			; SOURCE LINE # 77
; { 
			; SOURCE LINE # 78
;    uchar i;
;  
;     for (i=0; i<8; i++)      //一个周期转30度
			; SOURCE LINE # 81
;---- Variable 'i?345' assigned to Register 'R6' ----
	CLR  	A
	MOV  	R6,A
?C0016:
;     {  
			; SOURCE LINE # 82
;        P0 = REV[i]; //取数据
			; SOURCE LINE # 83
	MOV  	DPTR,#REV
;        addr0 = 1;
			; SOURCE LINE # 84
;        addr1 = 0;
			; SOURCE LINE # 85
;        addr2 = 1;
			; SOURCE LINE # 86
;        addr3 = 1;
			; SOURCE LINE # 87
;        addr3 = 0;
			; SOURCE LINE # 88
;        delay();                 //调节转速
			; SOURCE LINE # 89
	LCALL	L?0043
;     }
			; SOURCE LINE # 90
	INC  	R6
	CJNE 	R6,#08H,?C0016
; }
			; SOURCE LINE # 91
?C0019:
	RET  	
; END OF motor_rev

; 
; /********************************************************
; *                                                       
; *步进电机运行                                               
; *                                                      
; *********************************************************/
; void  motor_turn()

	RSEG  ?PR?motor_turn?MOTOR
motor_turn:
	USING	0
			; SOURCE LINE # 98
; { 
			; SOURCE LINE # 99
;    uchar x;
;    rate=0x30;
			; SOURCE LINE # 101
	MOV  	rate,#030H
;    x=0xf0;
			; SOURCE LINE # 102
;---- Variable 'x?446' assigned to Register 'R3' ----
	MOV  	R3,#0F0H
?C0022:
;    do
;      {
			; SOURCE LINE # 104
;         motor_ffw();               //正转加速
			; SOURCE LINE # 105
	LCALL	motor_ffw
;         rate--;
			; SOURCE LINE # 106
	DEC  	rate
;      }while(rate!=0x0a);
			; SOURCE LINE # 107
	MOV  	A,rate
	CJNE 	A,#0AH,?C0022
?C0025:
; 
;    do
;      {     
			; SOURCE LINE # 110
;         motor_ffw();               //正转匀速
			; SOURCE LINE # 111
	LCALL	motor_ffw
;        x--;
			; SOURCE LINE # 112
	DEC  	R3
;      }while(x!=0x01);
			; SOURCE LINE # 113
	CJNE 	R3,#01H,?C0025
?C0028:
;   
;    do
;      {
			; SOURCE LINE # 116
;         motor_ffw();              //正转减速 
			; SOURCE LINE # 117
	LCALL	motor_ffw
;         rate++;
			; SOURCE LINE # 118
	INC  	rate
;      }while(rate!=0x30);    
			; SOURCE LINE # 119
	MOV  	A,rate
	CJNE 	A,#030H,?C0028
?C0031:
;    do
;      {
			; SOURCE LINE # 121
;         motor_rev();               //反转加速
			; SOURCE LINE # 122
	LCALL	motor_rev
;         rate--;
			; SOURCE LINE # 123
	DEC  	rate
;      }while(rate!=0x0a);
			; SOURCE LINE # 124
	MOV  	A,rate
	CJNE 	A,#0AH,?C0031
?C0034:
; 
;    do
;      {     
			; SOURCE LINE # 127
;         motor_rev();               //反转匀速
			; SOURCE LINE # 128
	LCALL	motor_rev
;        x--;
			; SOURCE LINE # 129
	DEC  	R3
;      }while(x!=0x01);
			; SOURCE LINE # 130
	CJNE 	R3,#01H,?C0034
?C0037:
;   
;    do
;      {
			; SOURCE LINE # 133
;         motor_rev();               //反转减速 
			; SOURCE LINE # 134
	LCALL	motor_rev
;         rate++;
			; SOURCE LINE # 135
	INC  	rate
;      }while(rate!=0x30);    
			; SOURCE LINE # 136
	MOV  	A,rate
	CJNE 	A,#030H,?C0037
; }
			; SOURCE LINE # 137
	RET  	
; END OF motor_turn

; 
; /********************************************************
; *                                                       
; *  主程序                                               
; *                                                      
; *********************************************************/
; main()

	RSEG  ?PR?main?MOTOR
main:
	USING	0
			; SOURCE LINE # 144
; {     
			; SOURCE LINE # 145
;    
;    P1=0xf0; 
			; SOURCE LINE # 147
	MOV  	P1,#0F0H
?C0039:
; 
;    while(1)
			; SOURCE LINE # 149
;   {
			; SOURCE LINE # 150
;        P0 = 0x00;//ULN2003输出高电平
			; SOURCE LINE # 151
	CLR  	A
	MOV  	P0,A
;        addr0 = 1;
			; SOURCE LINE # 152
	SETB 	addr0
;        addr1 = 0;
			; SOURCE LINE # 153
	CLR  	addr1
;        addr2 = 1;
			; SOURCE LINE # 154
	SETB 	addr2
;        addr3 = 1;
			; SOURCE LINE # 155
	SETB 	addr3
;        addr3 = 0;
			; SOURCE LINE # 156
	CLR  	addr3
;        delay2(255);
			; SOURCE LINE # 157
	MOV  	R7,#0FFH
	LCALL	_delay2
; 
;        motor_turn();
			; SOURCE LINE # 159
	LCALL	motor_turn
; 
;   } 
			; SOURCE LINE # 161
	SJMP 	?C0039
; END OF main

	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -