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

📄 retry.asm

📁 Robot control assembly program.
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	SETB	MOTOR_NHA_CANG_DAO	
	SETB	MOTOR_GHI_DIEM_DAO
	CALL	DELAY50MS

	CLR	C
	RET
;====================== DUNG ROBOT =======================
DUNG:
	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0
	CLR	BANH_TRAI_DAO
	CLR	BANH_PHAI_DAO
	CALL	DELAY50MS

	MOV	BANH_TRAI,#255
	MOV	BANH_PHAI,#255
	CALL	DELAY10MS

	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0
	SETB	BANH_TRAI_DAO
	SETB	BANH_PHAI_DAO
	CALL	DELAY50MS
	RET
;====================== DUNG ROBOT =======================
DUNG_MOTOR:
	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0
	MOV	MOTOR_GHI_DIEM,#0
	SETB	BANH_TRAI_DAO
	SETB	BANH_PHAI_DAO
	SETB	MOTOR_GHI_DIEM_DAO

	MOV	R2,#2
LOOP_NHA_CANG:
	MOV	MOTOR_NHA_CANG,#0
	CLR	MOTOR_NHA_CANG_DAO
	CALL	DELAY200MS
	MOV	MOTOR_NHA_CANG,#255
	CALL	DELAY100MS
	MOV	MOTOR_NHA_CANG,#0
	SETB	MOTOR_NHA_CANG_DAO
	CALL	DELAY200MS
	MOV	MOTOR_NHA_CANG,#255
	CALL	DELAY100MS
	DJNZ	R2,LOOP_NHA_CANG

	MOV	MOTOR_NHA_CANG,#0
	SETB	MOTOR_NHA_CANG_DAO

	RET

;================== HAM VAN TOC DO DUONG ==================
VAN_TOC_MAX:
	MOV	BANH_PHAI_TD1,#255	
	MOV	BANH_PHAI_TD2,#180
	
	MOV	BANH_PHAI_TD3,#30	
	MOV	BANH_PHAI_TD4,#0	
	MOV	BANH_PHAI_TD5,#0
	MOV	BANH_PHAI_TD6,#0
	MOV	BANH_PHAI_TD7,#0	
	MOV	BANH_PHAI_TD8,#0

	MOV	BANH_TRAI_TD1,#255	
	MOV	BANH_TRAI_TD2,#180
	
	MOV	BANH_TRAI_TD3,#30	
	MOV	BANH_TRAI_TD4,#0	
	MOV	BANH_TRAI_TD5,#0	
	MOV	BANH_TRAI_TD6,#0
	MOV	BANH_TRAI_TD7,#0
	MOV	BANH_TRAI_TD8,#0
	
	MOV	BANH_TRAI,#50
	MOV	BANH_PHAI,#50

	RET

;---------HAM VAN TOC TRUNG BINH
VAN_TOC_TB:
	MOV	BANH_PHAI_TD1,#180	

	MOV	BANH_PHAI_TD2,#0
	MOV	BANH_PHAI_TD3,#0
	MOV	BANH_PHAI_TD4,#0	
	MOV	BANH_PHAI_TD5,#0
	MOV	BANH_PHAI_TD6,#0
	MOV	BANH_PHAI_TD7,#0	
	MOV	BANH_PHAI_TD8,#0

	MOV	BANH_TRAI_TD1,#180

	MOV	BANH_TRAI_TD2,#0
	MOV	BANH_TRAI_TD3,#0
	MOV	BANH_TRAI_TD4,#0	
	MOV	BANH_TRAI_TD5,#0	
	MOV	BANH_TRAI_TD6,#0
	MOV	BANH_TRAI_TD7,#0
	MOV	BANH_TRAI_TD8,#0
	
	MOV	BANH_TRAI,#50
	MOV	BANH_PHAI,#50
	RET
;---------HAM VAN TOC CHAM
VAN_TOC_CHAM:
	MOV	BANH_PHAI_TD1,#80
	
	MOV	BANH_PHAI_TD2,#0	
	MOV	BANH_PHAI_TD3,#0	
	MOV	BANH_PHAI_TD4,#0
	MOV	BANH_PHAI_TD5,#0
	MOV	BANH_PHAI_TD6,#0
	MOV	BANH_PHAI_TD7,#0	
	MOV	BANH_PHAI_TD8,#0

	MOV	BANH_TRAI_TD1,#80
	
	MOV	BANH_TRAI_TD2,#0
	MOV	BANH_TRAI_TD3,#0
	MOV	BANH_TRAI_TD4,#0	
	MOV	BANH_TRAI_TD5,#0
	MOV	BANH_TRAI_TD6,#0
	MOV	BANH_TRAI_TD7,#0	
	MOV	BANH_TRAI_TD8,#0

	MOV	BANH_TRAI,#50
	MOV	BANH_PHAI,#50
	RET
;---------HAM VAN TOC RAT CHAM
VAN_TOC_RAT_CHAM:
	MOV	BANH_PHAI_TD1,#65	

	MOV	BANH_PHAI_TD2,#0
	MOV	BANH_PHAI_TD3,#0	
	MOV	BANH_PHAI_TD4,#0
	MOV	BANH_PHAI_TD5,#0
	MOV	BANH_PHAI_TD6,#0
	MOV	BANH_PHAI_TD7,#0	
	MOV	BANH_PHAI_TD8,#0

	MOV	BANH_TRAI_TD1,#65	

	MOV	BANH_TRAI_TD2,#0
	MOV	BANH_TRAI_TD3,#0
	MOV	BANH_TRAI_TD4,#0	
	MOV	BANH_TRAI_TD5,#0
	MOV	BANH_TRAI_TD6,#0
	MOV	BANH_TRAI_TD7,#0	
	MOV	BANH_TRAI_TD8,#0
	
	MOV	BANH_TRAI,#50
	MOV	BANH_PHAI,#50
	RET
;----------
VAN_TOC_TEST:
	MOV	BANH_PHAI_TD1,#255
	MOV	BANH_PHAI_TD2,#230	
	MOV	BANH_PHAI_TD3,#200
	
	MOV	BANH_PHAI_TD4,#70	
	MOV	BANH_PHAI_TD5,#50
	MOV	BANH_PHAI_TD6,#30
	MOV	BANH_PHAI_TD7,#0	
	MOV	BANH_PHAI_TD8,#0

	MOV	BANH_TRAI_TD1,#255	
	MOV	BANH_TRAI_TD2,#230	
	MOV	BANH_TRAI_TD3,#200
	
	MOV	BANH_TRAI_TD4,#70	
	MOV	BANH_TRAI_TD5,#50	
	MOV	BANH_TRAI_TD6,#30
	MOV	BANH_TRAI_TD7,#0
	MOV	BANH_TRAI_TD8,#0
	RET
;================== NHAP CTHT,NUT NHAN========
NHAP_CTHT:
	MOV	P2,#11100011B	;CS0
	MOV	C,P2.0
	MOV	NUT_TRAI3,C	;CHUA SU DUNG
	MOV	C,P2.1
	MOV	NUT_8,C

	MOV	P2,#11100111B	;CS1
	MOV	C,P2.0
	MOV	NUT_TRAI2,C
	MOV	C,P2.1
	MOV	NUT_7,C

	MOV	P2,#11101011B	;CS2
	MOV	C,P2.0
	MOV	NUT_TRAI1,C
	MOV	C,P2.1
	MOV	NUT_6,C

	MOV	P2,#11101111B	;CS3
	MOV	C,P2.0
	MOV	NUT_PHAI5,C
	MOV	C,P2.1
	MOV	NUT_5,C

	MOV	P2,#11110011B	;CS4
	MOV	C,P2.0
	MOV	NUT_PHAI4,C
	MOV	C,P2.1
	MOV	NUT_4,C

	MOV	P2,#11110111B	;CS5
	MOV	C,P2.0
	MOV	NUT_PHAI3,C
	MOV	C,P2.1
	MOV	NUT_3,C

	MOV	P2,#11111011B	;CS6
	MOV	C,P2.0
	MOV	NUT_PHAI2,C
	MOV	C,P2.1
	MOV	NUT_TRAI5,C

	MOV	P2,#11111111B	;CS7
	MOV	C,P2.0
	MOV	NUT_PHAI1,C
	MOV	C,P2.1
	MOV	NUT_TRAI4,C
	RET
;================== DAO BIT ==================
DAO_BIT:
	MOV	BIEN0,R7		
	MOV	C,BIEN0.0
	MOV	BIEN1.7,C
	MOV	C,BIEN0.1
	MOV	BIEN1.6,C
	MOV	C,BIEN0.2
	MOV	BIEN1.5,C
	MOV	C,BIEN0.3
	MOV	BIEN1.4,C
	MOV	C,BIEN0.4
	MOV	BIEN1.3,C
	MOV	C,BIEN0.5
	MOV	BIEN1.2,C
	MOV	C,BIEN0.6
	MOV	BIEN1.1,C
	MOV	C,BIEN0.7
	MOV	BIEN1.0,C
	MOV	R7,BIEN1

	MOV	BIEN0,R6		
	MOV	C,BIEN0.0
	MOV	BIEN1.7,C
	MOV	C,BIEN0.1
	MOV	BIEN1.6,C
	MOV	C,BIEN0.2
	MOV	BIEN1.5,C
	MOV	C,BIEN0.3
	MOV	BIEN1.4,C
	MOV	C,BIEN0.4
	MOV	BIEN1.3,C
	MOV	C,BIEN0.5
	MOV	BIEN1.2,C
	MOV	C,BIEN0.6
	MOV	BIEN1.1,C
	MOV	C,BIEN0.7
	MOV	BIEN1.0,C
	MOV	R6,BIEN1
	RET
;================== DOI BCD ==================
DOIBCD:
	PUSH	ACC
	PUSH	B
	MOV	B,#10
	LCALL	DIV168
	PUSH	B
	MOV	B,#10
	LCALL	DIV168
	PUSH	B
	MOV	B,#10
	MOV	A,R6
	DIV	AB
	PUSH	B
	SWAP	A
	POP	B
	ORL	A,B
	MOV	R7,A
	POP	ACC
	SWAP	A
	POP	B
	ORL	A,B
	MOV	R6,A
	POP	B
	POP	ACC
	RET
DIV168:
	PUSH	02H
	PUSH	ACC
	MOV	R5,#16
	CLR	A
DIVIDE:
	XCH	A,R6
	CLR	C
	RLC	A
	XCH	A,R6
	XCH	A,R7
	RLC	A
	XCH	A,R7
	RLC	A
	CJNE	A,B,NOTEQ
	SJMP	AEQB
NOTEQ:
	JC	BELOW
AEQB:
	SUBB	A,B
	XCH	A,R6
	ORL	A,#1
	XCH	A,R6
BELOW:
	DJNZ	R5,DIVIDE
	XCH	A,B
	POP	ACC
	POP	02H
	RET

;=================== TIME 0 DELAY TIME OUT ==================
NGAT_T0_DELAY:			
	MOV	NHO_C0,C
	MOV	NHO_A0,A
	CLR 	TR0        
	MOV 	TH0,#HIGH(-10000)     
	MOV 	TL0,#LOW(-10000)     
	SETB 	TR0
	DJNZ	BYTE_DELAY_THAP,THOAT_T0
	DJNZ	BYTE_DELAY_CAO,THOAT_T0
	CLR	TR0
THOAT_T0:
	MOV	C,NHO_C0
	MOV	A,NHO_A0
	RETI

;========= NGAT TIMER 1 : HIEN THI LED v LAM VIEC ========
NGATT1:
	MOV	NHO_C1,C
	MOV	NHO_A1,A
	CLR	TR1
	MOV	TH1,#HIGH(-5000)
	MOV	TL1,#LOW(-5000)
	SETB	TR1	

CALL_NHAP_CTHT:
	CALL	NHAP_CTHT	;NHAP CTHT

;******** HIEN THI LED ********
HIEN_LED:
	MOV	R6,BYTE_LED_THAP
	MOV	R7,BYTE_LED_CAO
	LCALL	DOIBCD
	LCALL	DAO_BIT
	
	INC	LED
	MOV	A,LED
	CJNE	A,#1,HIEN_LED2
	MOV	A,R7
	ANL	A,#0FH
	SWAP	A
	ORL	A,#00001000B
	MOV	SBUF,A
	JMP	THOAT_T1
HIEN_LED2:
	MOV	A,LED
	CJNE	A,#2,HIEN_LED3
	MOV 	A,R7
	ANL	A,#0F0H
	ORL	A,#0000100B
	MOV	SBUF,A
	JMP	THOAT_T1
HIEN_LED3:
	MOV	A,LED
	CJNE	A,#3,HIEN_LED4
	MOV	A,R6
	ANL	A,#0FH
	SWAP	A
	ORL	A,#00000010B
	MOV	SBUF,A
	JMP	THOAT_T1	
HIEN_LED4:
	MOV	LED,#0	
	MOV 	A,R6
	ANL	A,#0F0H
	ORL	A,#00000001B
	MOV	SBUF,A
;******** THOAT T1 ********
THOAT_T1:
	MOV	A,NHO_A1
	MOV	C,NHO_C1
	RETI
;======================= NGAT_EX0 ========================
NGAT_EX0:
	MOV	NHO_C2,C
	MOV	NHO_A2,A	
	MOV	A,ENCODER_THAP
	CJNE	A,#0,DEC_ENCODER_THAP	
	MOV	A,ENCODER_CAO
	CJNE	A,#0,DEC_ENCODER_CAO
	CLR	ACT_ENCODER	;ENCODER HOAT DONG = FALSE,BAO TRAN ENCODER	
	SJMP	THOAT_EX0
DEC_ENCODER_THAP:
	DEC	ENCODER_THAP
	SJMP	THOAT_EX0
DEC_ENCODER_CAO:	
	DEC	ENCODER_CAO
	MOV	ENCODER_THAP,#255
THOAT_EX0:
	MOV	A,NHO_A2
	MOV	C,NHO_C2
	RETI
;================== CAC HAM DELAY ==================
DELAY3MS:
	MOV R0,#6
LOOPDELAY3:
	MOV R1,#250	
	DJNZ R1,$
	DJNZ R0,LOOPDELAY3
	RET
;---------
DELAY5MS:
	MOV R0,#10
LOOPDELAY5:
	MOV R1,#250	
	DJNZ R1,$
	DJNZ R0,LOOPDELAY5
	RET
;---------
DELAY10MS:
	MOV R0,#20
LOOPDELAY10:
	MOV R1,#250	
	DJNZ R1,$
	DJNZ R0,LOOPDELAY10
	RET
;---------
DELAY20MS:
	MOV	BYTE_DELAY_THAP,#LOW(2)
	MOV	BYTE_DELAY_CAO,#HIGH(2)
	INC	BYTE_DELAY_CAO
	SETB	TR0
	JB	TR0,$
	RET
;---------
DELAY50MS:
	MOV	BYTE_DELAY_THAP,#LOW(5)
	MOV	BYTE_DELAY_CAO,#HIGH(5)
	INC	BYTE_DELAY_CAO
	SETB	TR0
	JB	TR0,$
	RET

;---------
DELAY100MS:
	MOV	BYTE_DELAY_THAP,#LOW(10)
	MOV	BYTE_DELAY_CAO,#HIGH(10)
	INC	BYTE_DELAY_CAO
	SETB	TR0
	JB	TR0,$
	RET
;---------
DELAY150MS:
	MOV	BYTE_DELAY_THAP,#LOW(15)
	MOV	BYTE_DELAY_CAO,#HIGH(15)
	INC	BYTE_DELAY_CAO
	SETB	TR0
	JB	TR0,$
	RET
;---------
DELAY200MS:
	MOV	BYTE_DELAY_THAP,#LOW(20)
	MOV	BYTE_DELAY_CAO,#HIGH(20)
	INC	BYTE_DELAY_CAO
	SETB	TR0
	JB	TR0,$
	RET
;---------
DELAY300MS:
	MOV	BYTE_DELAY_THAP,#LOW(30)
	MOV	BYTE_DELAY_CAO,#HIGH(30)
	INC	BYTE_DELAY_CAO
	SETB	TR0
	JB	TR0,$
	RET
;---------
DELAY370MS:
	MOV	BYTE_DELAY_THAP,#LOW(37)
	MOV	BYTE_DELAY_CAO,#HIGH(37)
	INC	BYTE_DELAY_CAO
	SETB	TR0
	JB	TR0,$
	RET
;---------
DELAY400MS:
	MOV	BYTE_DELAY_THAP,#LOW(40)
	MOV	BYTE_DELAY_CAO,#HIGH(40)
	INC	BYTE_DELAY_CAO
	SETB	TR0
	JB	TR0,$
	RET
;---------
DELAY500MS:
	MOV	BYTE_DELAY_THAP,#LOW(50)
	MOV	BYTE_DELAY_CAO,#HIGH(50)
	INC	BYTE_DELAY_CAO
	SETB	TR0
	JB	TR0,$
	RET
;---------
DELAY700MS:
	MOV	BYTE_DELAY_THAP,#LOW(70)
	MOV	BYTE_DELAY_CAO,#HIGH(70)
	INC	BYTE_DELAY_CAO
	SETB	TR0
	JB	TR0,$
	RET
;---------
DELAY1S:
	MOV	BYTE_DELAY_THAP,#LOW(100)
	MOV	BYTE_DELAY_CAO,#HIGH(100)
	INC	BYTE_DELAY_CAO
	SETB	TR0
	JB	TR0,$
	RET
;---------
DELAY2S:
	MOV	BYTE_DELAY_THAP,#LOW(200)
	MOV	BYTE_DELAY_CAO,#HIGH(200)
	INC	BYTE_DELAY_CAO
	SETB	TR0
	JB	TR0,$
	RET
;---------
DELAY3S:
	MOV	BYTE_DELAY_THAP,#LOW(300)
	MOV	BYTE_DELAY_CAO,#HIGH(300)
	INC	BYTE_DELAY_CAO
	SETB	TR0
	JB	TR0,$
	RET
;--------
DELAY5S:
	MOV	BYTE_DELAY_THAP,#LOW(450)
	MOV	BYTE_DELAY_CAO,#HIGH(450)
	INC	BYTE_DELAY_CAO
	SETB	TR0
LOOP_DELAY5S:
	JNB	TR0,THOAT_DELAY5S
	MOV	BYTE_LED_THAP,BYTE_DELAY_THAP	;<-----------
	MOV	BYTE_LED_CAO,BYTE_DELAY_CAO
	JMP	LOOP_DELAY5S
THOAT_DELAY5S:
	RET
;--------
DELAY10S:
	MOV	BYTE_DELAY_THAP,#LOW(900)
	MOV	BYTE_DELAY_CAO,#HIGH(900)
	INC	BYTE_DELAY_CAO
	SETB	TR0
LOOP_DELAY10S:
	JNB	TR0,THOAT_DELAY10S
	MOV	BYTE_LED_THAP,BYTE_DELAY_THAP	;<-----------
	MOV	BYTE_LED_CAO,BYTE_DELAY_CAO
	JMP	LOOP_DELAY10S
THOAT_DELAY10S:
	RET
;--------
DELAY20S:
	MOV	BYTE_DELAY_THAP,#LOW(1800)
	MOV	BYTE_DELAY_CAO,#HIGH(1800)
	INC	BYTE_DELAY_CAO
	SETB	TR0
LOOP_DELAY20S:
	JNB	TR0,THOAT_DELAY20S
	MOV	BYTE_LED_THAP,BYTE_DELAY_THAP	;<-----------
	MOV	BYTE_LED_CAO,BYTE_DELAY_CAO
	JMP	LOOP_DELAY20S
THOAT_DELAY20S:
	RET
;--------
DELAY30S:
	MOV	BYTE_DELAY_THAP,#LOW(2700)
	MOV	BYTE_DELAY_CAO,#HIGH(2700)
	INC	BYTE_DELAY_CAO
	SETB	TR0
LOOP_DELAY30S:
	JNB	TR0,THOAT_DELAY30S
	MOV	BYTE_LED_THAP,BYTE_DELAY_THAP	;<-----------
	MOV	BYTE_LED_CAO,BYTE_DELAY_CAO
	JMP	LOOP_DELAY30S
THOAT_DELAY30S:
	RET
;--------
DELAY1MIN:
	MOV	BYTE_DELAY_THAP,#LOW(5500)
	MOV	BYTE_DELAY_CAO,#HIGH(5500)
	INC	BYTE_DELAY_CAO
	SETB	TR0
LOOP_DELAY1MIN:
	JNB	TR0,THOAT_DELAY1MIN
	MOV	BYTE_LED_THAP,BYTE_DELAY_THAP	;<-----------
	MOV	BYTE_LED_CAO,BYTE_DELAY_CAO
	JMP	LOOP_DELAY1MIN
THOAT_DELAY1MIN:
	RET
;--------
DELAY1MIN30:
	MOV	BYTE_DELAY_THAP,#LOW(8200)
	MOV	BYTE_DELAY_CAO,#HIGH(8200)
	INC	BYTE_DELAY_CAO
	SETB	TR0
LOOP_DELAY1MIN30:
	JNB	TR0,THOAT_DELAY1MIN30
	MOV	BYTE_LED_THAP,BYTE_DELAY_THAP	;<-----------
	MOV	BYTE_LED_CAO,BYTE_DELAY_CAO
	JMP	LOOP_DELAY1MIN30
THOAT_DELAY1MIN30:
	RET
;--------
DELAY2MIN:
	MOV	BYTE_DELAY_THAP,#LOW(11000)
	MOV	BYTE_DELAY_CAO,#HIGH(11000)
	INC	BYTE_DELAY_CAO
	SETB	TR0
LOOP_DELAY2MIN:
	JNB	TR0,THOAT_DELAY2MIN
	MOV	BYTE_LED_THAP,BYTE_DELAY_THAP	;<-----------
	MOV	BYTE_LED_CAO,BYTE_DELAY_CAO
	JMP	LOOP_DELAY2MIN
THOAT_DELAY2MIN:
	RET
;--------
DELAY2MIN30:
	MOV	BYTE_DELAY_THAP,#LOW(13700)
	MOV	BYTE_DELAY_CAO,#HIGH(13700)
	INC	BYTE_DELAY_CAO
	SETB	TR0
LOOP_DELAY2MIN30:
	JNB	TR0,THOAT_DELAY2MIN30
	MOV	BYTE_LED_THAP,BYTE_DELAY_THAP	;<-----------
	MOV	BYTE_LED_CAO,BYTE_DELAY_CAO
	JMP	LOOP_DELAY2MIN30
THOAT_DELAY2MIN30:
	RET
;--------- GOOD LUCK TO YOU !
END

⌨️ 快捷键说明

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