Chương 5.THIẾT KẾ CHƯƠNG TRÌNH ĐIỀU KHIỂN
5.2 Chương trình đi ều khiển
;********************ĐỊNH NGHĨA CÁC CỔNG VÀO RA,BYTE DỮ LIỆU DÙNG***
RS EQU P2.5 RW EQU P2.6 EN EQU P2.7 STAR T EQU P2.0 B_NGAN EQU P2.1 B_TRAM EQU P2.2 B_CHUC EQU P2.3 B_DONVI EQU P2.4 DONG_CO EQU P3.5 BYTECAODAT DATA 31H BYTELOWDAT DATA 32H DONVI DATA 33H CHUC DATA 34H TRAM DATA 35H NGAN DATA 36H
;*************************************************
ORG 0000H JMP MAIN ORG 0013H LJMP NGAT1 ORG 0030H MAIN:
MOV SP,#50H
SVTH: Trang 25
MOV TMOD,#11H; Timer0,1 chế độ 1 CLR DONG_CO
MOV R0,#0;THANH GHI HANG DON VI LUC DAT MOV R1,#0;THANH GHI HANG CHUC LUC DAT MOV R2,#0;THANH GHI HANG TRAM LUC DAT MOV R3,#0;THANH GHI HANG NGAN LUC DAT MOV R4,#0;BYTE THAP SO DEM TUC THI
MOV R5,#0;BYTE CAO SO DEM TUC THI LCALL KHOI_TAO
LCALL DELAYMS MOV A,#01H LCALL GHI_LENH LCALL DELAYMS MOV A,#80H LCALL GHI_LENH LCALL DELAYMS MOV DP TR,#CHUOI1 LCALL GHI_CHUOI MOV A,#0C0H LCALL GHI_LENH LCALL DELAYMS MOV DP TR,#CHUOI2 LCALL GHI_CHUOI LCALL DELAYMS MOV A,#01H LCALL GHI_LENH
SVTH: Trang 26
LCALL DELAYMS MOV A,#80H LCALL GHI_LENH LCALL DELAYMS MOV DP TR,#CHUOI3 LCALL GHI_CHUOI MOV A,#0C0H LCALL GHI_LENH LCALL DELAYMS MOV DP TR,#CHUOI4 LCALL GHI_CHUOI LCALL DELAYMS MOV A,#01H LCALL GHI_LENH LCALL DELAYMS MOV A,#80H LCALL GHI_LENH LCALL DELAYMS MOV DP TR,#CHUOI5 LCALL GHI_CHUOI LOOP:
CALL DAT_SP MOV A,#88H LCALL GHI_LENH MOV DP TR,#MA_LCD MOV A,R3
SVTH: Trang 27
MOVC A,@A+DPTR LCALL GHI_DULIEU MOV A,#89H
LCALL GHI_LENH MOV A,R2
MOVC A,@A+DPTR LCALL GHI_DULIEU MOV A,#8AH
LCALL GHI_LENH MOV A,R1
MOVC A,@A+DPTR LCALL GHI_DULIEU MOV A,#8BH
LCALL GHI_LENH MOV A,R0
MOVC A,@A+DPTR LCALL GHI_DULIEU JB START,LOOP
;************KHAI BÁO NGẮT ***************************
MOV IE,#10000001B SETB IT0
;*********CHẠY ĐỘNG CƠ VÀ LƯU SẢN PHẨM ĐẶT****
SETB DONG_CO MOV A,R1
MOV B,#10 MUL AB
SVTH: Trang 28
ADD A,R0
MOV BYTELOWDAT,A MOV A,R3
MOV B,#10 MUL AB ADD A,R2
MOV BYTECAODAT,A
;*****************************************************
MOV A,#0C0H LCALL GHI_LENH MOV DP TR,#CHUOI6 LCALL GHI_CHUOI LOOP9:
LCALL XU_LY MOV A,#0C8H LCALL GHI_LENH MOV DP TR,#MA_LCD MOV A,NGAN
MOVC A,@A+DPTR LCALL GHI_DULIEU MOV A,#0C9H LCALL GHI_LENH MOV A,TRAM MOVC A,@A+DP TR LCALL GHI_DULIEU MOV A,#0CAH
SVTH: Trang 29
LCALL GHI_LENH MOV A,CHUC MOVC A,@A+DPTR LCALL GHI_DULIEU MOV A,#0CBH LCALL GHI_LENH MOV A,DONVI MOVC A,@A+DPTR LCALL GHI_DULIEU LJMP LOOP9
;************XỬ LÝ SỐ ĐẾM ĐỂ HIỂN THỊ*******************
XU_LY: MOV A,R5 MOV B,#10 DIV AB
MOV NGAN,A MOV A,B MOV TRAM,A MOV A,R4 MOV B,#10 DIV AB
MOV CHUC,A MOV A,B MOV DONVI,A RET
SVTH: Trang 30
;*******************ĐẶT SẢN PHẨM****************************
DAT_SP:
JB B_NGAN,NEXT INC R3
CJNE R3,#10,NEXT MOV R3,#0
NEXT:
JB B_TRAM,NEXT1 INC R2
CJNE R2,#10,NEXT1 MOV R2,#0
NEXT1:
JB B_CHUC,NEXT2 INC R1
CJNE R1,#10,NEXT2 MOV R1,#0
NEXT2:
JB B_DONVI,EXIT INC R0
CJNE R0,#10,EXIT MOV R0,#0
EXIT: RET
SVTH: Trang 31
;********************CHƯƠNG TRÌNH CON GHI CHUỖI*******
GHI_CHUOI:
CLR A LOP:
MOVC A,@A+DPTR JZ THOAT
LCALL GHI_DULIEU LCALL DELAYMS MOV A,#06H LCALL GHI_LENH LCALL DELAYMS MOV A,#0
INC DPTR JMP LOP THOAT:
RET
;********************CHƯƠNG TRÌNH CON KH ỞI TẠO LCD**********
KHOI_TAO:
MOV A,#38H LCALL GHI_LENH LCALL DELAYMS MOV A,#06H LCALL GHI_LENH LCALL DELAYMS MOV A,#0CH LCALL GHI_LENH
SVTH: Trang 32
LCALL DELAYMS MOV A,#0EH LCALL GHI_LENH LCALL DELAYMS RET
;****************CHƯƠNG TRÌNH CON GHI LỆNH LÊN LCD*********
GHI_LENH:
LCALL READY CLR RS
CLR RW MOV P0,A SETB EN NOP
CLR EN
CALL DELAYMS RET
;*************CHƯƠNG TRÌNH CON GHI DỮ LIỆU LÊN LCD**************
GHI_DULIEU:
LCALL READY SETB RS
CLR RW MOV P0,A SETB EN NOP
CLR EN
SVTH: Trang 33
CALL DELAYMS RET
;****************CHƯƠNG TRÌNH CON KIỂM TRA CỜ BẬN LCD***********
READY:
SETB P0.7 CLR RS SETB RW
Back:
CLR EN SETB EN JB P0.7,Back RET
;**************CHƯƠNG TRÌNH NGẮT************************
NGAT1: PUSH A INC R4
CJNE R4,#99,LOP10 INC R5
MOV R4,#0 LOP10:
MOV A,R4
CJNE A,BYTELOWDAT,EXIT9 MOV A,R5
CJNE A,BYTECAODAT,EXIT9 SETB DONG_CO
CLR EA
SVTH: Trang 34
MOV R4,#0 MOV R5,#0 MOV R6,#15 LOP1:
CALL DELAY1S DJNZ R6,LOP1 SETB EA
EXIT9: POP A RETI
;************************DELAY 30MS********************
DELAYMS:
MOV TH0,#HIGH(-30000) MOV TL0,#LOW(-30000) SETB TR0
JNB TF0,$
CLR TR0 CLR TF0 RET
;********************DELAY 1S******************
DELAY1S:
MOV R7,#20 BACK9:
MOV TH1,#HIGH(-50000) MOV TL1,#LOW(-50000)
SVTH: Trang 35
SETB TR1 JNB TF1,$
CLR TR1 CLR TF1
DJNZ R7,BACK9 RET
;***************** KHAI BÁO DỮ LIỆU **********************
CHUOI1: DB 'DO_AN_VDK' DB 0
CHUOI2: DB 'SVTH:D_T_VU' DB 0
CHUOI3: DB 'LOP:10CDTLT' DB 0
CHUOI4: DB 'GVHD:Ths.LE_XUNG' DB 0
CHUOI5: DB 'SP_DAT:' DB 0
CHUOI6: DB 'SP_DEM:' DB 0
;**************BẢNG MÃ ASCII CỦA CÁC SỐ TỪ 0 9*********
MA_LCD: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H END
SVTH: Trang 36