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

📄 retry.asm

📁 Robot control assembly program.
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	CALL	DELAY300MS
	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0

	CALL	DUNG_MOTOR
	JB	NUT_TRAI1,$
	MOV	BYTE_LED_THAP,#88
	CALL	DELAY1S
	JMP	START


;=========CHUONH TRINH 5=========
CHUONG_TRINH_PHAI5:
;---NEM QUA CAN BT GHI DIEM
	CALL	XUAT_PHAT_TRAI	
	CALL	CHAY_THANG_MU_HAM_TOC
;--CUA PHAI
	CALL	CUA_PHAI_MU

;---CHAY THANG 7 VACH
	CALL	VAN_TOC_TB
	CALL	CHAY_THANG_TIM_VACH_NGANG

	MOV	DEM_VACH,#4
	CALL	VAN_TOC_MAX
	CALL	CHAY_THANG
	
	CALL	CHAY_THANG_HAM_TOC
	CALL	CHAY_THANG_HAM_TOC

	CALL	CUA_PHAI
;---CHAY THANG 8 VACH
	CALL	VAN_TOC_TB
	CALL	CHAY_THANG_TIM_VACH_NGANG

	MOV	DEM_VACH,#5
	CALL	VAN_TOC_MAX
	CALL	CHAY_THANG

	CALL	CHAY_THANG_HAM_TOC
	CALL	CHAY_THANG_HAM_TOC

	CALL	CUA_TRAI
;---CHAY THANG 7 VACH
	CALL	VAN_TOC_TB
	CALL	CHAY_THANG_TIM_VACH_NGANG

	MOV	DEM_VACH,#4
	CALL	VAN_TOC_MAX
	CALL	CHAY_THANG

	CALL	CHAY_THANG_HAM_TOC
	CALL	CHAY_THANG_HAM_TOC

	CALL	CUA_PHAI
;---CHAY THANG 4 VACH
	CALL	VAN_TOC_TB
	CALL	CHAY_THANG_TIM_VACH_NGANG

	MOV	DEM_VACH,#2
	CALL	VAN_TOC_TB
	CALL	CHAY_THANG
	
	CALL	HAM_TOC

	CALL	VAN_TOC_RAT_CHAM
	CALL	CHAY_THANG_TIM_VACH_NGANG

	CALL	CUA_TRAI
;GHI DIEM
	MOV	MOTOR_GHI_DIEM,#255
	
	CALL	VAN_TOC_RAT_CHAM
	CALL	CHAY_THANG_TIM_VACH_NGANG
	MOV	MOTOR_GHI_DIEM,#0
;--
	CALL	CUA_TRAI
	
	MOV	DEM_VACH,#1
	CALL	VAN_TOC_CHAM
	CALL	CHAY_THANG
;BO PHAI
	MOV	BANH_TRAI,#255
	MOV	BANH_PHAI,#10
	MOV	ENCODER_CAO,#HIGH(ENCODER_1_VACH*3)
	MOV	ENCODER_THAP,#LOW(ENCODER_1_VACH*3)
	SETB	ACT_ENCODER
	JB	ACT_ENCODER,$
	
	MOV	MOTOR_NHA_CANG,#255
	
	MOV	ENCODER_CAO,#HIGH(ENCODER_1_VACH*3)
	MOV	ENCODER_THAP,#LOW(ENCODER_1_VACH*3)
	SETB	ACT_ENCODER
	JB	ACT_ENCODER,$

	CALL	HAM_TOC_MAX
	
;-CUA TRAI
	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0
	CLR	BANH_TRAI_DAO
	SETB	BANH_PHAI_DAO
	CALL	DELAY50MS
	MOV	BANH_TRAI,#255
	MOV	BANH_PHAI,#255
	CALL	DELAY400MS
	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0
	
	CALL	DUNG_MOTOR
	JB	NUT_TRAI1,$
	MOV	BYTE_LED_THAP,#88
	CALL	DELAY1S
	JMP	START

;======================= HAM_TOC 1 VACH ==============================
HAM_TOC_ENCODER_1VACH:
	CLR	BANH_TRAI_DAO
	CLR	BANH_PHAI_DAO
	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0
	CALL	DELAY50MS

	MOV	BYTE_DELAY_CAO,#HIGH(30)	;TGIAN HAM
	MOV	BYTE_DELAY_THAP,#LOW(30)
	INC	BYTE_DELAY_CAO
	SETB	TR0

	MOV	ENCODER_THAP,#LOW(ENCODER_1_VACH*45/50)
	MOV	ENCODER_CAO,#HIGH(ENCODER_1_VACH*45/50)
	SETB	ACT_ENCODER
	
	MOV	BANH_TRAI,#50
	MOV	BANH_PHAI,#50
LOOP_HAM_TOC_ENCODER_1VACH:				;TIMEOUT : ROBOT KO VUOT QUA DC DOAN HAM TOC
	JNB	ACT_ENCODER,SETB_DAO_BANH_ENCODER_1VACH	;           --> TU TANG TOC VUOT QUA
	JB	TR0,LOOP_HAM_TOC_ENCODER_1VACH		;KT_TIME OUT : TIME OUT -> DO DUONG DOAN CON LAI
	SETB	BANH_TRAI_DAO
	SETB	BANH_PHAI_DAO
	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0
	CALL	DELAY50MS
	CALL	VAN_TOC_CHAM
	CALL	CHAY_THANG_ENCODER
	SJMP	THOAT_HAM_TOC_ENCODER_1VACH
SETB_DAO_BANH_ENCODER_1VACH:
	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0
	SETB	BANH_TRAI_DAO
	SETB	BANH_PHAI_DAO
	CALL	DELAY50MS
THOAT_HAM_TOC_ENCODER_1VACH:	
	RET

;======================= HAM_TOC 2 VACH ==============================
HAM_TOC_ENCODER_2VACH:					;2 VACH
	CLR	BANH_TRAI_DAO
	CLR	BANH_PHAI_DAO
	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0
	CALL	DELAY50MS
;--------	
	MOV	BYTE_LED_THAP,#11	;<---
	MOV	BANH_TRAI,#100
	MOV	BANH_PHAI,#100
	MOV	ENCODER_THAP,#LOW(ENCODER_1_VACH*2/5)
	MOV	ENCODER_CAO,#HIGH(ENCODER_1_VACH*2/5)
	SETB	ACT_ENCODER
LOOP_HAM_TOC_ENCODER_2VACH_1:
	JB	ACT_ENCODER,LOOP_HAM_TOC_ENCODER_2VACH_1

;--------
	MOV	BYTE_LED_THAP,#12	;<---
	MOV	BANH_TRAI,#150
	MOV	BANH_PHAI,#150
	MOV	ENCODER_THAP,#LOW(ENCODER_1_VACH*2/5)
	MOV	ENCODER_CAO,#HIGH(ENCODER_1_VACH*2/5)
	SETB	ACT_ENCODER
LOOP_HAM_TOC_ENCODER_2VACH_2:
	JB	ACT_ENCODER,LOOP_HAM_TOC_ENCODER_2VACH_2

;-----
	MOV	BYTE_LED_THAP,#13	;<---
HAM_TOC_ENCODER_2VACH_TIME_OUT:
	MOV	BYTE_DELAY_CAO,#HIGH(50)	;0.5S
	MOV	BYTE_DELAY_THAP,#LOW(50)
	INC	BYTE_DELAY_CAO
	SETB	TR0

	MOV	ENCODER_THAP,#LOW(ENCODER_1_VACH*45/50)
	MOV	ENCODER_CAO,#HIGH(ENCODER_1_VACH*45/50)
	SETB	ACT_ENCODER
	
	MOV	BANH_TRAI,#50
	MOV	BANH_PHAI,#50
LOOP_HAM_TOC_ENCODER_2VACH_TIME_OUT:				;TIMEOUT : ROBOT KO VUOT QUA DC DOAN HAM TOC
	JNB	ACT_ENCODER,SETB_DAO_BANH_ENCODER_2VACH_TIME_OUT	;           --> TU TANG TOC VUOT QUA
	JB	TR0,LOOP_HAM_TOC_ENCODER_2VACH_TIME_OUT		;KT_TIME OUT : TIME OUT -> DO DUONG DOAN CON LAI
	
	SETB	BANH_TRAI_DAO
	SETB	BANH_PHAI_DAO
	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0
	CALL	DELAY50MS
	CALL	VAN_TOC_CHAM
	CALL	CHAY_THANG_ENCODER
	SJMP	THOAT_HAM_TOC_ENCODER_2VACH_TIME_OUT
SETB_DAO_BANH_ENCODER_2VACH_TIME_OUT:
	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0
	SETB	BANH_TRAI_DAO
	SETB	BANH_PHAI_DAO
	CALL	DELAY50MS
THOAT_HAM_TOC_ENCODER_2VACH_TIME_OUT:	
	RET

;======================= HAM_TOC ==============================
HAM_TOC_MAX:
	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	DELAY100MS

	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0
	SETB	BANH_TRAI_DAO
	SETB	BANH_PHAI_DAO
	CALL	DELAY50MS
	RET
;======================= HAM_TOC ==============================
HAM_TOC:
	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0
	CLR	BANH_TRAI_DAO
	CLR	BANH_PHAI_DAO
	CALL	DELAY50MS

	MOV	BANH_TRAI,#150
	MOV	BANH_PHAI,#150
	CALL	DELAY50MS

	MOV	BANH_TRAI,#0
	MOV	BANH_PHAI,#0
	SETB	BANH_TRAI_DAO
	SETB	BANH_PHAI_DAO
	CALL	DELAY50MS
	RET

;======================= CHAY THANG DOC ENCODER ==================================================
;INPUT : ENCODER
CHAY_THANG_ENCODER:
;KT GT ENCODER
	MOV	A,ENCODER_THAP
	CJNE	A,#0,BD_CHAY_THANG_ENCODER
	MOV	A,ENCODER_CAO
	CJNE	A,#0,BD_CHAY_THANG_ENCODER
	JMP	THOAT_CHAY_THANG_ENCODER
;-
BD_CHAY_THANG_ENCODER:
	SETB	ACT_ENCODER
LOOP_CHAY_THANG_ENCODER:
	JNB	ACT_ENCODER,THOAT_CHAY_THANG_ENCODER

	MOV	BYTE_LED_THAP,ENCODER_THAP	;<----
	MOV	BYTE_LED_CAO,ENCODER_CAO

	CALL	KT_VUNG_DO_DUONG
	CALL	DK_DO_DUONG
	JMP	LOOP_CHAY_THANG_ENCODER
THOAT_CHAY_THANG_ENCODER:
	RET

;======================= CHAY THANG DO DUONG 1 VACH HAM TOC ==================================================
CHAY_THANG_HAM_TOC:	
	MOV	ENCODER_CAO,#HIGH(ENCODER_1_VACH)
	MOV	ENCODER_THAP,#LOW(ENCODER_1_VACH)
	SETB	ACT_ENCODER
;--HAM TOC
	CALL	HAM_TOC
	CALL	VAN_TOC_RAT_CHAM
LOOP_CHAY_THANG_HAM_TOC:
	JNB	ACT_ENCODER,THOAT_LOOP_CHAY_THANG_HAM_TOC
	CALL	KT_VUNG_DO_DUONG
	CALL	DK_DO_DUONG
	JMP	LOOP_CHAY_THANG_HAM_TOC
THOAT_LOOP_CHAY_THANG_HAM_TOC:
	RET
;======================= CHAY THANG DO DUONG 1 VACH HAM TOC ==================================================
CHAY_THANG_HAM_TOC_ENCODER:	
	SETB	ACT_ENCODER
;--HAM TOC
	CALL	HAM_TOC
LOOP_CHAY_THANG_HAM_TOC_ENCODER:
	JNB	ACT_ENCODER,THOAT_LOOP_CHAY_THANG_HAM_TOC_ENCODER
	CALL	KT_VUNG_DO_DUONG
	CALL	DK_DO_DUONG
	JMP	LOOP_CHAY_THANG_HAM_TOC_ENCODER
THOAT_LOOP_CHAY_THANG_HAM_TOC_ENCODER:
	RET
;======================= CHAY THANG KHONG DO DUONG 1 VACH HAM TOC ==================================================
CHAY_THANG_MU_HAM_TOC:	
	MOV	ENCODER_CAO,#HIGH(ENCODER_1_VACH)
	MOV	ENCODER_THAP,#LOW(ENCODER_1_VACH)
	SETB	ACT_ENCODER
;--HAM TOC
	CALL	HAM_TOC_MAX
	MOV	BANH_TRAI,#50
	MOV	BANH_PHAI,#50
	JB	ACT_ENCODER,$
;--TIM VACH NGANG
	CALL	CHO_QUA_VACH_NGANG
	RET

;======================= CHAY THANG TIM VACH NGANG ============================
CHAY_THANG_TIM_VACH_NGANG:
	CALL	KT_QUA_VACH_NGANG		
	JB	BIT_QUA_VACH_NGANG,THOAT_CHAY_THANG_TIM_VACH_NGANG

	MOV	BYTE_LED_THAP,#51	;------

	CALL	KT_VUNG_DO_DUONG
	CALL	DK_DO_DUONG
	SJMP	CHAY_THANG_TIM_VACH_NGANG
THOAT_CHAY_THANG_TIM_VACH_NGANG:
	RET

;======================= HAM DO DUONG DEM VACH =========================================================
CHAY_THANG:	
; << ... >> : SU KIEN
; DOAN 1: BIT_TIM_VACH=0,ACT_ENCODER=1 ; <<BIT_TIM_VACH=0,ACT_ENCODER=0>> 
; DOAN 2: BIT_TIM_VACH=1,ACT_ENCODER=1,BIT_QUA_VACH_NGANG=0 ; <<BIT_TIM_VACH=1,BIT_QUA_VACH_NGANG=1,ACT_ENCODER=1>> ; <<BIT_TIM_VACH=1,ACT_ENCODER=0>>
	CALL	KT_QUA_VACH_NGANG	;CHONG NHAN LAM VACH NGANG
	CLR	BIT_QUA_VACH_NGANG

	CLR	BIT_TIM_VACH	
	MOV	ENCODER_THAP,#LOW(GT_ENCODER_DOAN1)
	MOV	ENCODER_CAO,#HIGH(GT_ENCODER_DOAN1)
	SETB	ACT_ENCODER
LOOP_CHAY_THANG:
;-------- DOAN1: CHAY KO NHAN VACH NGANG (BIT_TIM_VACH=0 , ACT_ENCODER=1) -----------
CHAY_KO_NHAN_VACH:
	JB	BIT_TIM_VACH,TIM_VACH_NGANG
	JNB	ACT_ENCODER,SETB_BIT_TIM_VACH	
	CALL	KT_VUNG_DO_DUONG
	CALL	DK_DO_DUONG

	MOV	BYTE_LED_THAP,DEM_VACH	;<----
	MOV	BYTE_LED_CAO,#0

	JMP	CHAY_KO_NHAN_VACH		; TT CHAY THANG QUA DOAN 1

;------- <<BIT_TIM_VACH=0,ACT_ENCODER=0>> ------------------------------------------
SETB_BIT_TIM_VACH:			; KHOI TAO DOAN 2 :TIM VACH
	SETB	BIT_TIM_VACH	
	MOV	ENCODER_THAP,#LOW(GT_ENCODER_DOAN2)
	MOV	ENCODER_CAO,#HIGH(GT_ENCODER_DOAN2)
	SETB	ACT_ENCODER

;-------- DOAN2: CHAY TIM VACH NGANG (BIT_TIM_VACH=1,ACT_ENCODER=1,BIT_QUA_VACH_NGANG=0) -------------
TIM_VACH_NGANG:			
	CALL	KT_QUA_VACH_NGANG		
	JB	BIT_QUA_VACH_NGANG,DEC_DEM_VACH	; KT QUA_VACH_NGANG  ->DEC_DEM_VACH
	JNB	ACT_ENCODER,DEC_DEM_VACH_ERROR	; KT ERROR_NHAN_VACH ->DEC_DEM_VACH_ERROR
	CALL	KT_VUNG_DO_DUONG
	CALL	DK_DO_DUONG

	MOV	BYTE_LED_THAP,DEM_VACH	;<----
	MOV	BYTE_LED_CAO,#0
	
	JMP	TIM_VACH_NGANG		; TT CHAY THANG QUA DOAN 2

;-------- <<BIT_TIM_VACH=1,BIT_QUA_VACH_NGANG=1,ACT_ENCODER=1>> -------------------
DEC_DEM_VACH:
	DEC	DEM_VACH
	MOV	A,DEM_VACH
	CJNE	A,#0,TT_DEM_VACH	;DEM_VACH > 0	
	CLR	ACT_ENCODER
	JMP	THOAT_CHAY_THANG
TT_DEM_VACH:
	CLR	BIT_TIM_VACH		; KHOI TAO CHAY THANG DOAN 1
	MOV	ENCODER_THAP,#LOW(GT_ENCODER_DOAN1)
	MOV	ENCODER_CAO,#HIGH(GT_ENCODER_DOAN1)
	SETB	ACT_ENCODER
	JMP	LOOP_CHAY_THANG	

;-------- <<BIT_TIM_VACH=1,BIT_QUA_VACH_NGANG=0,ACT_ENCODER=0>> ---------------------
DEC_DEM_VACH_ERROR:
	DEC	DEM_VACH
	MOV	A,DEM_VACH
	CJNE	A,#0,TT_DEM_VACH_ERROR	;DEM_VACH > 0	
	JMP	THOAT_CHAY_THANG
TT_DEM_VACH_ERROR:			; KHOI TAO LAI CHAY THANG DOAN 1 KHI MAC LOI DEM VACH
	CLR	BIT_TIM_VACH		
	MOV	ENCODER_THAP,#LOW(GT_ENCODER_DOAN1_ERROR)
	MOV	ENCODER_CAO,#HIGH(GT_ENCODER_DOAN1_ERROR)
	SETB	ACT_ENCODER
	JMP	LOOP_CHAY_THANG	
THOAT_CHAY_THANG:
	RET	

;======================= CAC HAM CON DO DUONG ==================================================
;******** KT DI QUA VACH NGANG -> BIT_QUA_VACH_NGANG *********************
KT_QUA_VACH_NGANG:
	CLR	BIT_QUA_VACH_NGANG	;KHOI DONG BIT KTRA VACH NGANG
LOOP_KT_QUA_VACH_NGANG:
	MOV	TONG_CAM_BIEN,#0
	JNB	CAMBIEN1,KIEMTRA_CAMBIEN2
	INC	TONG_CAM_BIEN
KIEMTRA_CAMBIEN2:
	JNB	CAMBIEN2,KIEMTRA_CAMBIEN3
	INC	TONG_CAM_BIEN
KIEMTRA_CAMBIEN3:
   	JNB	CAMBIEN3,KIEMTRA_CAMBIEN4
	INC	TONG_CAM_BIEN
KIEMTRA_CAMBIEN4:
   	JNB	CAMBIEN4,KIEMTRA_CAMBIEN5
	INC	TONG_CAM_BIEN
KIEMTRA_CAMBIEN5:
   	JNB	CAMBIEN5,KIEMTRA_CAMBIEN6
	INC	TONG_CAM_BIEN
KIEMTRA_CAMBIEN6:
   	JNB	CAMBIEN6,KIEMTRA_CAMBIEN7
	INC	TONG_CAM_BIEN
KIEMTRA_CAMBIEN7:
   	JNB	CAMBIEN7,KIEMTRA_CAMBIEN8
	INC	TONG_CAM_BIEN
KIEMTRA_CAMBIEN8:
   	JNB	CAMBIEN8,KIEMTRA_VACHNGANG
	INC	TONG_CAM_BIEN
;KIEM TRA CO DI QUA VACH TRANG KHONG
KIEMTRA_VACHNGANG:
	MOV	A,TONG_CAM_BIEN
	CJNE	A,#5,LAYCO_C	;1 VACH NGANG >=5 CAM BIEN
LAYCO_C:
	JC	THOAT_KT_QUA_VACH_NGANG		
	SETB	BIT_QUA_VACH_NGANG	;BAO DA QUA VACH NGANG
	JMP	LOOP_KT_QUA_VACH_NGANG	;CHO DEN KHI QUA VACH NGANG
THOAT_KT_QUA_VACH_NGANG:
	RET
;******** KT VUNG CAM BIEN *************************************************************
KT_VUNG_DO_DUONG:
;*** SETB BIT NHO BEN TRAI/PHAI 
KT_LECH_TRAI_PHAI:
	MOV	C,CAMBIEN8	;0 0 0 0 0 0 1 1
	ORL	C,CAMBIEN7
	ANL	C,/CAMBIEN1
	ANL	C,/CAMBIEN2
	ANL	C,/CAMBIEN3
	ANL	C,/CAMBIEN4
	ANL	C,/CAMBIEN5
	ANL	C,/CAMBIEN6
	JNC	KT_SETB_BIT_NHO_TRAI
	SETB	BIT_NHO_PHAI
	SJMP	TRUNG_TAM
KT_SETB_BIT_NHO_TRAI:
	MOV	C,CAMBIEN1	;1 1 0 0 0 0 0 0
	ORL	C,CAMBIEN2
	ANL	C,/CAMBIEN7
	ANL	C,/CAMBIEN8
	ANL	C,/CAMBIEN3
	ANL	C,/CAMBIEN4
	ANL	C,/CAMBIEN5
	ANL	C,/CAMBIEN6
	JNC	TRUNG_TAM
	SETB	BIT_NHO_TRAI
;--------BIT NHO VUNG TRUNG TAM
TRUNG_TAM:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN4	;0 0 0 1 1 0 0 0
	ANL	C,CAMBIEN5
	JNC	VUNG_PHAI1
	MOV	VUNG,#00H	
	CLR	BIT_NHO_TRAI	;XOA NHO LECH TRAI/PHAI
	CLR	BIT_NHO_PHAI
	JMP	THOAT_KT_VUNG_DO_DUONG
;--------BIT NHO VUNG PHAI
VUNG_PHAI1:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN5	;0 0 0 0 1 0 0 0
	ANL	C,/CAMBIEN4
	ANL	C,/CAMBIEN6
	JNC	VUNG_PHAI2
	MOV	VUNG,#01H	
	CLR	BIT_NHO_TRAI	;XOA NHO LECH TRAI/PHAI
	CLR	BIT_NHO_PHAI
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_PHAI2:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN5	;0 0 0 0 1 1 0 0 
	ANL	C,CAMBIEN6
	JNC	VUNG_PHAI3
	MOV	VUNG,#02H
	CLR	BIT_NHO_TRAI	;XOA NHO LECH TRAI/PHAI
	CLR	BIT_NHO_PHAI
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_PHAI3:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN6	;0 0 0 0 0 1 0 0
	ANL	C,/CAMBIEN5
	ANL	C,/CAMBIEN7
	JNC	VUNG_PHAI4
	MOV	VUNG,#03H	
	CLR	BIT_NHO_TRAI	;XOA NHO LECH TRAI/PHAI
	CLR	BIT_NHO_PHAI
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_PHAI4:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN6	;0 0 0 0 0 1 1 0
	ANL	C,CAMBIEN7
	JNC	VUNG_PHAI5
	MOV	VUNG,#04H	
	CLR	BIT_NHO_TRAI	;XOA NHO LECH TRAI/PHAI
	CLR	BIT_NHO_PHAI
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_PHAI5:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN7	;0 0 0 0 0 0 1 0
	ANL	C,/CAMBIEN6
	ANL	C,/CAMBIEN8
	JNC	VUNG_PHAI6
	MOV	VUNG,#05H	
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_PHAI6:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN7	;0 0 0 0 0 0 1 1 
	ANL	C,CAMBIEN8
	JNC	VUNG_PHAI7
	MOV	VUNG,#06H	
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_PHAI7:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN8	;0 0 0 0 0 0 0 1
	ANL	C,/CAMBIEN7
	JNC	VUNG_PHAI8
	MOV	VUNG,#07H	
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_PHAI8:			;1 2 3 4 5 6 7 8
	MOV	C,BIT_NHO_PHAI	;0 0 0 0 0 0 0 0 BIT_NHO_PHAI
	ANL	C,/CAMBIEN1
	ANL	C,/CAMBIEN2
	ANL	C,/CAMBIEN3
	ANL	C,/CAMBIEN4
	ANL	C,/CAMBIEN5
	ANL	C,/CAMBIEN6
	ANL	C,/CAMBIEN7
	ANL	C,/CAMBIEN8
	JNC	VUNG_TRAI1
	MOV	VUNG,#08H
	
	JMP	THOAT_KT_VUNG_DO_DUONG
;--------BIT NHO VUNG TRAI
VUNG_TRAI1:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN4	;0 0 0 1 0 0 0 0
	ANL	C,/CAMBIEN3
	ANL	C,/CAMBIEN5
	JNC	VUNG_TRAI2
	MOV	VUNG,#11H
	CLR	BIT_NHO_TRAI	;XOA NHO LECH TRAI/PHAI
	CLR	BIT_NHO_PHAI	
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_TRAI2:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN3	;0 0 1 1 0 0 0 0
	ANL	C,CAMBIEN4
	JNC	VUNG_TRAI3
	MOV	VUNG,#12H
	CLR	BIT_NHO_TRAI	;XOA NHO LECH TRAI/PHAI
	CLR	BIT_NHO_PHAI
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_TRAI3:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN3	;0 0 1 0 0 0 0 0
	ANL	C,/CAMBIEN2
	ANL	C,/CAMBIEN4
	JNC	VUNG_TRAI4
	MOV	VUNG,#13H
	CLR	BIT_NHO_TRAI	;XOA NHO LECH TRAI/PHAI
	CLR	BIT_NHO_PHAI
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_TRAI4:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN2	;0 1 1 0 0 0 0 0
	ANL	C,CAMBIEN3
	JNC	VUNG_TRAI5
	MOV	VUNG,#14H
	CLR	BIT_NHO_TRAI	;XOA NHO LECH TRAI/PHAI
	CLR	BIT_NHO_PHAI
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_TRAI5:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN2	;0 1 0 0 0 0 0 0
	ANL	C,/CAMBIEN1
	ANL	C,/CAMBIEN3
	JNC	VUNG_TRAI6
	MOV	VUNG,#15H
	
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_TRAI6:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN1	;1 1 0 0 0 0 0 0
	ANL	C,CAMBIEN2
	JNC	VUNG_TRAI7
	MOV	VUNG,#16H
	
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_TRAI7:			;1 2 3 4 5 6 7 8
	MOV	C,CAMBIEN1	;1 0 0 0 0 0 0 0
	ANL	C,/CAMBIEN2
	JNC	VUNG_TRAI8
	MOV	VUNG,#17H
	
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_TRAI8:			;		1 2 3 4 5 6 7 8
	MOV	C,BIT_NHO_TRAI	; BIT_NHO_TRAI 0 0 0 0 0 0 0 0
	ANL	C,/CAMBIEN1
	ANL	C,/CAMBIEN2
	ANL	C,/CAMBIEN3
	ANL	C,/CAMBIEN4
	ANL	C,/CAMBIEN5
	ANL	C,/CAMBIEN6
	ANL	C,/CAMBIEN7
	ANL	C,/CAMBIEN8
	JNC	VUNG_ERROR
	MOV	VUNG,#18H
	JMP	THOAT_KT_VUNG_DO_DUONG
VUNG_ERROR:
	MOV	VUNG,#20H
THOAT_KT_VUNG_DO_DUONG:
	RET

;******** DIEU KHIEN DO DUONG ********************************************************
DK_DO_DUONG:
	MOV	A,VUNG
	CJNE	A,#00H,DK_VUNG_PHAI1		;DK VUNG TRUNG TAM
	SETB	BANH_TRAI_DAO		;1 2 3 4 5 6 7 8
	SETB	BANH_PHAI_DAO		;0 0 0 1 1 0 0 0
	MOV	BANH_TRAI,BANH_TRAI_TD1
	MOV	BANH_PHAI,BANH_PHAI_TD1
	JMP	THOAT_DK_VUNG
DK_VUNG_PHAI1:
	CJNE	A,#01H,DK_VUNG_PHAI2		;DK VUNG PHAI1
	SETB	BANH_TRAI_DAO	;1 2 3 4 5 6 7 8
	SETB	BANH_PHAI_DAO	;0 0 0 0 1 0 0 0
	MOV	BANH_TRAI,BANH_TRAI_TD2
	MOV	BANH_PHAI,BANH_PHAI_TD1
	JMP	THOAT_DK_VUNG
DK_VUNG_PHAI2:
	CJNE	A,#02H,DK_VUNG_PHAI3		;DK VUNG PHAI2
	SETB	BANH_TRAI_DAO	;1 2 3 4 5 6 7 8
	SETB	BANH_PHAI_DAO	;0 0 0 0 1 1 0 0
	MOV	BANH_TRAI,BANH_TRAI_TD3
	MOV	BANH_PHAI,BANH_PHAI_TD1
	JMP	THOAT_DK_VUNG
DK_VUNG_PHAI3:
	CJNE	A,#03H,DK_VUNG_PHAI4		;DK VUNG PHAI3
	SETB	BANH_TRAI_DAO	;1 2 3 4 5 6 7 8

⌨️ 快捷键说明

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