Chào các bạn!Mình đang gặp rắc rối với đoạn ASM về giao tiếp bàn phím,dịch được ra file Hex nhưng mô phỏng Proteus thì k0 chạy, bạn nào đã nắm vững về vấn đề này thì xem giúp mình một chút nhé!Thankyou!!!!!!!!!
Đây là chương trình:
INCLUDE 8051.mc
org 0000h
; tu p1.0 den p1.2 noi cot
; tu p1.3 den p1.6 noi hang
MOV p1,#0ffh
MOV R0,40h ; dia chi bat dau RAM nho
back: MOV @R0,#0
INC R0
CJNE R0,#43h,back ; xoa 3 o nho cua vung RAM nho, de luu 3 so
; quet phim
KT1: MOV p1,#00000111b
MOV A,p1
CJNE A,#00000111b,KT1
KT2: ACALL delay
MOV A,p1
CJNE A,#00000111b,lap_1
SJMP KT2
lap_1: ACALL delay
CJNE A,#00000111b,lap_2
SJMP KT2
lap_2: MOV p1,#11111110b
CLR p1.3
MOV A,p1
CJNE A,#11111111b,hang_0
MOV p1,#11111111b
CLR p1.4
MOV A,p1
CJNE A,#11111111b,hang_1
MOV p1,#11111111b
CLR p1.5
MOV A,p1
CJNE A,#11111111b,hang_2
MOV p1,#11111111b
CLR p1.6
MOV A,p1
CJNE A,#11111111b,hang_3
SJMP KT2
hang_0: MOV DPTR,#ma_hang_0
SJMP tim_ma
hang_1: MOV DPTR,#ma_hang_1
SJMP tim_ma
hang_2: MOV DPTR,#ma_hang_2
SJMP tim_ma
hang_3: MOV DPTR,#ma_hang_3
tim_ma: RRC A
JNC chuyen
INC DPTR
SJMP tim_ma
chuyen: CLR A
MOVC A,@a+dptr
MOV @R0,A
MOV p0,A ; hien thi ra p0 moi lan nhap so
INC R0
CJNE R0,#43h,KT1 ; vong lap chi chon nhap toi da 3 so
delay: MOV R5,#10
back1: MOV R6,#10
back2: MOV R7,#200
back3: DJNZ R7,back3
DJNZ R7,back2
DJNZ R7,back1
RET
org 300h
ma_hang_0: DB '1','2','3'
ma_hang_1: DB '4','5','6'
ma_hang_2: DB '7','8','9'
ma_hang_3: DB '0','0','0'
END
Đây là chương trình:
INCLUDE 8051.mc
org 0000h
; tu p1.0 den p1.2 noi cot
; tu p1.3 den p1.6 noi hang
MOV p1,#0ffh
MOV R0,40h ; dia chi bat dau RAM nho
back: MOV @R0,#0
INC R0
CJNE R0,#43h,back ; xoa 3 o nho cua vung RAM nho, de luu 3 so
; quet phim
KT1: MOV p1,#00000111b
MOV A,p1
CJNE A,#00000111b,KT1
KT2: ACALL delay
MOV A,p1
CJNE A,#00000111b,lap_1
SJMP KT2
lap_1: ACALL delay
CJNE A,#00000111b,lap_2
SJMP KT2
lap_2: MOV p1,#11111110b
CLR p1.3
MOV A,p1
CJNE A,#11111111b,hang_0
MOV p1,#11111111b
CLR p1.4
MOV A,p1
CJNE A,#11111111b,hang_1
MOV p1,#11111111b
CLR p1.5
MOV A,p1
CJNE A,#11111111b,hang_2
MOV p1,#11111111b
CLR p1.6
MOV A,p1
CJNE A,#11111111b,hang_3
SJMP KT2
hang_0: MOV DPTR,#ma_hang_0
SJMP tim_ma
hang_1: MOV DPTR,#ma_hang_1
SJMP tim_ma
hang_2: MOV DPTR,#ma_hang_2
SJMP tim_ma
hang_3: MOV DPTR,#ma_hang_3
tim_ma: RRC A
JNC chuyen
INC DPTR
SJMP tim_ma
chuyen: CLR A
MOVC A,@a+dptr
MOV @R0,A
MOV p0,A ; hien thi ra p0 moi lan nhap so
INC R0
CJNE R0,#43h,KT1 ; vong lap chi chon nhap toi da 3 so
delay: MOV R5,#10
back1: MOV R6,#10
back2: MOV R7,#200
back3: DJNZ R7,back3
DJNZ R7,back2
DJNZ R7,back1
RET
org 300h
ma_hang_0: DB '1','2','3'
ma_hang_1: DB '4','5','6'
ma_hang_2: DB '7','8','9'
ma_hang_3: DB '0','0','0'
END
Comment