Mấy bác giúp em code làm sao để khi nhấn 2 nút cùng lúc thì vđk thực hiện 2 lệnh khác nhau với. Bình thường em code chỉ nhấn hết nút này rồi mới nhấn nút khác được thôi. Em xài asm
Cảm ơn các bác trước!!!!
Cảm ơn các bác trước!!!!
RS BIT P3.0 WRL BIT P3.1 EN BIT P3.2 ORG 0000H MAIN: MOV TMOD,#11H CALL DELAY40MS MOV A,#38H ;FUNCTION SET CALL COM ;8BIT,N=1, 5*7 DOT MOV A,#38H ;FUNCTION SET CALL COM ;8BIT,N=1, 5*7 DOT MOV A,#00001100B ;DISPLAY ON 0 0 0 0 1 [D] [C] [B] CALL COM ; MOV A,#38H ;CLEAR DISPLAY CALL COM CALL DELAY1DOT52MS MOV A,#06H ;ENTRY MODE SET CALL COM ;CURSOR MOVES TO RIGHT MAIN_START: MOV R0,#00H CALL FREQUENCY_STRING MOV DPTR,#DATA_LCD LOOPM: JB P1.0,$ MOV A,#8AH CALL COM MOV A,R0 SWAP A ANL A,#0FH MOVC A,@A+DPTR CALL DATAS MOV A,R0 ANL A,#0FH MOVC A,@A+DPTR CALL DATAS CALL DELAY500MS MOV A,R0 ADD A,#1 DA A MOV R0,A SJMP LOOPM FREQUENCY_STRING: MOV DPTR,#FREQ LOOPFR0:CLR A MOVC A,@A+DPTR CJNE A,#00H,LOOPFR1 RET LOOPFR1:CALL DATAS INC DPTR SJMP LOOPFR0 COM: CLR RS CLR WRL SETB EN MOV P2,A CLR EN MOV P2,#0FFH CALL DELAY37US RET DATAS: SETB RS CLR WRL SETB EN MOV P2,A CLR EN MOV P2,#0FFH CALL DELAY37US RET WR_COM: ;CALL BUSY WR_COM0: CLR RS CLR WRL SETB EN MOV P2,A CLR EN MOV P2,#0FFH CALL DELAY37US RET DELAY40MS: MOV TH1,#HIGH(-40000) MOV TL1,#LOW(-40000) SETB TR1 JNB TF1,$ CLR TF1 CLR TR1 RET DELAY37US: MOV R1,#18 DJNZ R1,$ RET DELAY1DOT52MS: MOV TH1,#HIGH(-1520) MOV TL1,#LOW(-1520) SETB TR1 JNB TF1,$ CLR TF1 CLR TR1 RET DELAY500MS: MOV TMOD,#10H MOV R1,#10 LAP: MOV TH1,#HIGH(-50000) MOV TL1,#LOW(-50000) SETB TR1 JNB TF1,$ CLR TF1 DJNZ R1,LAP CLR TR1 RET FREQ: DB 'FREQUENCY= HZ',00H DATA_LCD: DB '0123456789ABCDEF' END
Comment