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

📄 实验.asm

📁 8051开发的电机侍服控制程序.控制电机走到长度
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	MOVWF	FSR
WADIN2	BCF	PORTA,0		;AD_CS
	NOP
	NOP
	MOVLW	08H
	MOVWF	COUNT		;一字节8位
INBY2	CALL	ADSK
	BTFSS	PORTA,5		;AD_Dout
	BCF	STATUS,0
	BTFSC	PORTA,5
	BSF	STATUS,0
	RLF	7AH
	DECFSZ	COUNT
	GOTO	INBY2
	MOVF	7AH,W
	MOVWF	INDF
	INCF	FSR
	NOP
	NOP
	BSF	PORTA,0		;AD_CS
	NOP
	NOP
	MOVF	FSR,W
	SUBLW	46H
	BTFSS	STATUS,2
	GOTO	WADIN2
	NOP
	RETURN
;-------------发送AD命令字------------------------------
OUTBYT	MOVLW	8		;LOOP=COMMAND CODE 8 BIT
	MOVWF	COUNT
	BCF	PORTA,0
	NOP
	NOP
COMTXL	
	BTFSC	ADCOM,7		;COMMAND.7=0 D=0
	GOTO	COMTX1
	BCF	PORTA,3		;AD_Din
	GOTO	COMTX0		;D=0
COMTX1	BSF	PORTA,3		;D=1
	NOP
COMTX0	CALL	ADSK
	RLF	ADCOM
	DECFSZ	COUNT
	GOTO	COMTXL
	NOP
	NOP
	NOP
	BSF	PORTA,0
	NOP	
	RETURN
;----------时钟-----------------------------------------
ADSK	BCF	PORTA,2		;AD_SCK
	NOP
	NOP
	BSF	PORTA,2		;AD_SCK
	NOP
	NOP
	RETURN	
;---------------初始化PORT-------------------------------------
INITPORTS			;INIT I/O
	BCF	STATUS,RP0
	MOVLW	B'00000000'
	MOVWF	PORTB
	BSF	STATUS,RP0	;BANK1
	MOVLW	B'00000111'
	MOVWF	ADCON1
	BCF	TRISA,0		;AD_CS
	BSF	TRISA,1		;AD_DRDY
	BCF	TRISA,2		;AD_SCK
	BCF	TRISA,3		;AD_DIN
	BSF	TRISA,5		;AD_DOUT
	MOVLW	B'11111111'
	MOVWF	TRISB		;SET RB TO I/O ALL INPUT
	MOVLW	B'10110000'	   
	MOVWF	TRISC		;SET RC7,5,4 INPUT,RC6,3,2,1,0 OUTPUT  
	BCF	STATUS,RP0
	MOVLW	0H
	MOVWF	PORTC
	RETURN
;------------------初始化TIME1--------------------------------------------------
INITTIMERS			;INT TMR1
	BSF	STATUS,RP0	;BANK1
	MOVLW	B'10001111'	;WDT 1/128  576msX4
	MOVWF	OPTION_REG
	BSF	PIE1,0		;TMR1 INT ON
	BCF	STATUS,RP0	;BANK0
	MOVLW	B'01000000'	;START TMR1
	MOVWF	INTCON
	MOVLW	0B8H		;SET TMR1 DS=10MS
	MOVWF	TMR1H
	CLRF	TMR1L
	MOVLW	D'5'		;SET TIME DS=50MS
	MOVWF	TIME0
	MOVLW	D'10'		;SET TIME DS=500MS
	MOVWF	TIME1
	MOVLW	D'2'		;SET TIME DS=1 S
	MOVWF	TIME2
	RETURN
;--------------初始化SCI--------------------------------
INITSCI
	BSF	STATUS,RP0	;BANK1
;	MOVLW	D'3' 		;SELECT BRG=115200BPS
;	MOVLW	D'23' 		;SELECT BRG=19200BPS
	MOVLW	D'47' 		;SELECT BRG=9600BPS
	MOVWF	SPBRG
	MOVLW	B'10100100'	;SET TXSTA
	MOVWF	TXSTA
	BCF	PIE1,TXIE	;SET TXINT OFF
	BSF	PIE1,RCIE	;SET RCINT ON 
	BCF	PIE1,SSPIE	;SSP INT OFF
	BCF	STATUS,RP0	;BANK0
	BSF	RCSTA,SPEN
	BCF	RCSTA,6		;SET 8bit
	BSF	RCSTA,CREN	;SET RC ON
	MOVLW	70H        
	MOVWF	RXBUF		;JSDZ
	MOVLW	42H
	MOVWF	ADBUF		;ADDZ
	MOVLW	40H		;@
	MOVWF	3DH
	MOVLW	40H		;@
	MOVWF	3EH
	MOVLW	40H		;@
	MOVWF	3FH
	RETURN
;----------排序求平均值------------------
PXPJ	BCF	STATUS,RP0	;BANK0
	MOVLW	68H		;排序
	MOVWF	PXCOU1
PXLOO	MOVLW	42H
	MOVWF	PXCOU2
PXLOO1	MOVF	PXCOU2,W
	MOVWF	FSR
	MOVF	INDF,W		;42H->W
	INCF	FSR
	INCF	FSR
	SUBWF	INDF,0		;44H-W->W
	BTFSC	STATUS,Z	;Z=0,NOT SAME, JMP
	GOTO	EQUAL		;(44H)=(42H) JMP EQUAL
	BTFSC	STATUS,C	;C=0,JMP
	GOTO	EQUAL1		;(44H) > (42H)
	DECF	FSR
	DECF	FSR
	MOVF	INDF,W		;(44H) < (42H)
	MOVWF	40H
	INCF	FSR
	INCF	FSR
	MOVF	INDF,W
	DECF	FSR
	DECF	FSR
	MOVWF	INDF
	MOVF	40H,W
	INCF	FSR
	INCF	FSR
	MOVWF	INDF
	DECF	FSR
	MOVF	INDF,W
	MOVWF	41H
	INCF	FSR
	INCF	FSR
	MOVF	INDF,W
	DECF	FSR
	DECF	FSR
	MOVWF	INDF
	MOVF	41H,W
	INCF	FSR
	INCF	FSR
	MOVWF	INDF
	GOTO	EQUAL1
EQUAL	DECF	FSR
	MOVF	INDF,W		;43H->W
	INCF	FSR
	INCF	FSR
	SUBWF	INDF,0		;45H-W->W
	BTFSC	STATUS,Z	;Z=0,NOT SAME, JMP
	GOTO	EQUAL1		;(45H)=(43H) JMP EQUAL
	BTFSC	STATUS,C	;C=0,JMP
	GOTO	EQUAL1		;(45H) > (43H)
	DECF	FSR
	DECF	FSR
	MOVF	INDF,W
	MOVWF	41H
	INCF	FSR
	INCF	FSR
	MOVF	INDF,W
	DECF	FSR
	DECF	FSR
	MOVWF	INDF
	MOVF	41H,W
	INCF	FSR
	INCF	FSR
	MOVWF	INDF		;(45H) < (43H)	
EQUAL1	INCF	PXCOU2
	INCF	PXCOU2
	MOVF	PXCOU1,W
	SUBWF	PXCOU2,W
	BTFSS	STATUS,Z	;PXCOU1=PXCOU2
	GOTO	PXLOO1		;PXCOU1<>PXCOU2
	DECF	PXCOU1
	DECF	PXCOU1
	MOVF	PXCOU1,W
	SUBLW	42H
	BTFSS	STATUS,Z	;PXCOU1=42H
	GOTO	PXLOO		;PXCOU1<>42H
PJZ	MOVLW	4CH		;求平均值
	MOVWF	FSR
	CLRF	40H
	CLRF	41H
PJZLP	MOVF	INDF,W
	ADDWF	40H,1
	BTFSC	STATUS,C
	INCF	41H
	INCF	FSR
	INCF	FSR
	MOVLW	60H
	SUBWF	FSR,W
	BTFSS	STATUS,Z
	GOTO	PJZLP
	MOVF	41H,W
	MOVWF	ACCBHI
	MOVF	40H,W
	MOVWF	ACCBLO
	MOVLW	0AH
	MOVWF	ACCALO
	CLRF	ACCAHI
	CALL	D_DIVS
	MOVF	ACCBLO,W
	MOVWF	44H
	NOP
	MOVLW	4DH
	MOVWF	FSR
	CLRF	40H
	CLRF	41H
PJZLP1	MOVF	INDF,W
	ADDWF	40H,1
	BTFSC	STATUS,C
	INCF	41H
	INCF	FSR
	INCF	FSR
	MOVLW	61H
	SUBWF	FSR,W
	BTFSS	STATUS,Z
	GOTO	PJZLP1
	MOVF	41H,W
	MOVWF	ACCBHI
	MOVF	40H,W
	MOVWF	ACCBLO
	MOVLW	0AH
	MOVWF	ACCALO
	CLRF	ACCAHI
	CALL	D_DIVS
	MOVF	ACCBLO,W
	MOVWF	45H
	RETURN
;------16位加/减子程序----------------
;减法程序是把减数转换成减数的负值,再与被减数想加
;入口	16位加数/减数在ACCALO和ACCAHI中
;	16位被加数/被减数在ACCBLO和ACCBHI中
;出口	16位结果和/差在ACCBLO和ACCBHI中
;-------16位减法子程序-------------------
D_SUB
	CALL	NAG_A		;求ACCA的负值,再想加
;-------16位加法子程序-------------------
D_ADD
	MOVF	ACCALO,W
	ADDWF	ACCBLO,1	;加低8位->ACCALO
	BTFSC	STATUS,C	;加进位
	INCF	ACCBHI
	MOVF	ACCAHI,W
	ADDWF	ACCBHI,1	;加高8位->ACCAHI
	RETURN
NAG_A
	COMF	ACCALO,1	;求ACCA的负值
	INCF	ACCALO
	BTFSC	STATUS,Z
	DECF	ACCAHI
	COMF	ACCAHI,1
	RETURN
;---------;16*16位无符号二进制除法-----------------
;该子程序用重复减法算法
;入口参数:除数在积存器ACCAHI(高),ACCALO(低)中,被除数在ACCBHI(高),ACCBLO(低)中.
;出口参数:商存于ACCBHI(高),ACCBLO(低),余数存于ACCCHI(高),ACCCLO(低)中
D_DIVS	
	CALL	WSETUP
	CLRF	ACCCHI		;余数请0
	CLRF	ACCCLO
DLOOP	BCF	STATUS,C
	RLF	ACCDLO		;被除数,余数左移一位
	RLF	ACCDHI
	RLF	ACCCLO
	RLF	ACCCHI
	MOVF	ACCAHI,W
	SUBWF	ACCCHI,W	;被除数-除数
	BTFSS	STATUS,Z
	GOTO	NOCHK
	MOVF	ACCALO,W
	SUBWF	ACCCLO,W
NOCHK	BTFSS	STATUS,C	;被除数<除数?
	GOTO	NOGO		;商上0
	MOVF	ACCALO,W	;被除数>除数
	SUBWF	ACCCLO		;商上1,减除数
	BTFSS	STATUS,C
	DECF	ACCCHI
	MOVF	ACCAHI,W
	SUBWF	ACCCHI
	BSF	STATUS,C
NOGO	RLF	ACCBLO		;商左移一位
	RLF	ACCBHI
	DECFSZ	PXCOU1		;循环16次
	GOTO	DLOOP
	RETURN
WSETUP	MOVLW	10H
	MOVWF	PXCOU1		;循环次数16->TEMP
	MOVF	ACCBHI,W	;被除数ACCB->ACCD
	MOVWF	ACCDHI
	MOVF	ACCBLO,W
	MOVWF	ACCDLO
	CLRF	ACCBHI		;商清0
	CLRF	ACCBLO
	RETURN		
;---------------------------------------------
TXER				;FSBZ
	BCF	STATUS,RP0	;BANK0
	MOVLW	24H		;$ JIE SHU BIAO ZHI
	MOVWF	4DH
	CLRF	4CH		;出错标志
	CLRF	4EH
	MOVLW	3DH
	MOVWF	FSR
WAITB	BTFSS	PIR1,TXIF
	GOTO	WAIT1
	MOVF	INDF,W
	MOVWF	TXREG
	ADDWF	4EH,1
	INCF	FSR
	MOVF	FSR,W
	SUBLW	4FH		;68H		        
	BTFSS	STATUS,2	;GPS SJ=0D0H?        
	GOTO	WAITB
	RETURN
;----------------------------------------------------------
TX0				;FSMNL
	BCF	STATUS,RP0	;BANK0
	MOVLW	24H		;$ JIE SHU BIAO ZHI
	MOVWF	4DH
	MOVLW	0FFH		;正确标志
	MOVWF	4CH
	CLRF	4EH
	MOVLW	3DH
	MOVWF	FSR
WAIT1	BTFSS	PIR1,TXIF
	GOTO	WAIT1
	MOVF	INDF,W
	MOVWF	TXREG
	ADDWF	4EH,1
	INCF	FSR
	MOVF	FSR,W
	SUBLW	4FH		;68H		        
	BTFSS	STATUS,2	;GPS SJ=0D0H?        
	GOTO	WAIT1
	MOVLW	42H
	MOVWF	ADBUF
	RETURN
;----------------------------------------------------------
MLYM
	MOVF	73H,W		;READ RCSJ
	SUBLW	42H
	BTFSS	STATUS,2	;B?
	GOTO	YM1
	MOVF	74H,W
	SUBLW	45H              
	BTFSS	STATUS,2	;E?
	GOTO	YM8
	MOVF	75H,W
	SUBLW	47H              
	BTFSS	STATUS,2	;G?
	GOTO	YM8
	MOVF	76H,W
	SUBLW	0DH              
	BTFSS	STATUS,2	;HC?
	GOTO	YM8
	BSF	GNBZ,7
	BSF	GNBZ,1 
	BCF	GNBZ,2		;START
	BCF	GNBZ,3
	BCF	GNBZ,4
	BCF	GNBZ,5
	RETURN
YM1	MOVF	73H,W		;READ RCSJ
	SUBLW	50H
	BTFSS	STATUS,2	;P?
	GOTO	YM2     
	MOVF	74H,W
	SUBLW	41H              
	BTFSS	STATUS,2	;A?
	GOTO	YM8
	MOVF	75H,W
	SUBLW	55H              
	BTFSS	STATUS,2	;U?
	GOTO	YM8
	MOVF	76H,W
	SUBLW	0DH              
	BTFSS	STATUS,2	;HC?
	GOTO	YM8
	BSF	GNBZ,7
	BSF	GNBZ,2		;PAUSE
	BCF	GNBZ,1
	BCF	GNBZ,3
	BCF	GNBZ,4
	BCF	GNBZ,5
	RETURN
YM2	MOVF	73H,W		;READ RCSJ
	SUBLW	43H
	BTFSS	STATUS,2	;C?
	GOTO	YM3     
	MOVF	74H,W
	SUBLW	4FH              
	BTFSS	STATUS,2	;O?
	GOTO	YM8
	MOVF	75H,W
	SUBLW	4EH              
	BTFSS	STATUS,2	;N?
	GOTO	YM8
	MOVF	76H,W
	SUBLW	0DH              
	BTFSS	STATUS,2	;HC?
	GOTO	YM8
	BSF	GNBZ,7
	BSF	GNBZ,3		;CONUT
	BCF	GNBZ,1
	BCF	GNBZ,2
	BCF	GNBZ,4
	BCF	GNBZ,5
	RETURN
YM3	MOVF	73H,W		;READ RCSJ
	SUBLW	45H
	BTFSS	STATUS,2	;E?
	GOTO	YM4     
	MOVF	74H,W
	SUBLW	4EH              
	BTFSS	STATUS,2	;N?
	GOTO	YM8
	MOVF	75H,W
	SUBLW	44H              
	BTFSS	STATUS,2	;D?
	GOTO	YM8
	MOVF	76H,W
	SUBLW	0DH              
	BTFSS	STATUS,2	;HC?
	GOTO	YM8
	BSF	GNBZ,7
	BSF	GNBZ,4		;END
	BCF	GNBZ,1
	BCF	GNBZ,2
	BCF	GNBZ,3
	BCF	GNBZ,5
	RETURN
YM4	MOVF	73H,W		;READ RCSJ
	SUBLW	44H
	BTFSS	STATUS,2	;D?
	GOTO	YM8     
	MOVF	74H,W
	SUBLW	53H              
	BTFSS	STATUS,2	;S?
	GOTO	YM8
	MOVF	75H,W
	SUBLW	43H              
	BTFSS	STATUS,2	;C?
	GOTO	YM8
	MOVF	76H,W
	SUBLW	0DH              
	BTFSS	STATUS,2	;HC?
	GOTO	YM8
	BSF	DSCBZ,0
	BSF	GNBZ,7
	BSF	GNBZ,5		;DSC
	BCF	GNBZ,4
	BCF	GNBZ,1
	BCF	GNBZ,2
	BCF	GNBZ,3
	RETURN
YM8	BCF	GNBZ,7
	MOVLW	0FFH
	MOVWF	4CH
	RETURN
;-----------------------------------------------------
	END    
;---------------------------------------------*

⌨️ 快捷键说明

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