 ;2FH ,4FH 時(shí)間件軸的位置 ,4BH 單觸發(fā)字 ,4AH 觸發(fā)位置 ,48H頁數(shù) 47H 3級(jí) ;20H.2 單字還是3級(jí) 20H.3 三級(jí)有效 SCL EQU P3.6 SDA EQU P3.7 ORG 00H AJMP MAIN ORG 03H AJMP INT0EA ORG 0BH AJMP TR0EA ORG 1BH INC P1 RETI ORG 23H AJMP ESEA MAIN: MOV P2,#08H MOV P1,#00H ;MOV 50H,#0ADH ; MOV 51H,#055H ; MOV 52H,#0AAH ; MOV 53H,#0AAH ; MOV 54H,#10010101B ; MOV 55H,#10101010B ; MOV 56H,#01010011B ; MOV 57H,#00001111B ; MOV 58H,#11111111B ; MOV 6EH,#11111111B ;MOV 6FH,#10101010B ; ACALL WIRTE MOV 23H,#0A0H MOV 4AH,#00H ACALL READ MOV R2,#00H MOV 2FH,#00H MOV 4FH,#1H MOV 48H,#50H MOV SCON,#90H MOV TMOD,#22H MOV TH0,#(255-120) MOV TL0,#(255-120) MOV TH1,#(255-10) MOV TL1,#(255-10) SETB EA SETB ES CLR ET0 CLR ET1 SETB IT0 SETB TR0 SETB TR1 SETB PT1 L0: MOV 4CH,#05H DEL3: ACALL DELAY DJNZ 4CH,DEL3 CPL P3.4 SJMP L0 ;------------------------ INT0EA: MOV A,P0 JNB 20H.0,INT01 MOV @R1,P0 INC R1 CJNE R1,#70H,INT0OVER CLR EX0 CLR 20H.0 SETB TB8 MOV SBUF,#12H ;發(fā)送成功指令 ACALL WIRTE RETI ;---------------- INT01: MOV A,P0 JNB 20H.2,INT02 ANL A,#3H MOV 50H,51H MOV 51H,52H MOV 52H,A MOV A,50H MOV 24H,#7H CJNE A,34H,INT1 CLR 24H.0 INT1: MOV A,51H CJNE A,35H ,INT2 CLR 24H.1 INT2: MOV A,52H CJNE A,36H ,INT3 CLR 24H.2 INT3: MOV A,24H JNZ INT04 SETB 20H.0 MOV R1,#52H MOV 4FH,#4H INT04: RETI ;MOV @R1,P0 ;INC R1 ;MOV A,R1 ;CLR C ;SUBB A,#71H ;CJNE A,#4AH,INT02 ;MOV R1,#70H INT02: CJNE A,4BH,INT0OVER ;MOV 49H,R1 ;保存觸發(fā)前數(shù)據(jù) ;MOV A,4AH ;ADD A,#50H ;MOV R1,A ;R1-4AH開始采集 ;MOV @R1,4BH ;INC R1 MOV 50H,4BH MOV R1,#51H MOV 4FH,#2H SETB 20H.0 INT0OVER: RETI ;----------------------------------------------------------------------采集數(shù)據(jù)處理 DO: MOV R1,#50H MOV @R1,70H ;------------------------------------- ESEA: JBC RI,ESNEXT CLR TI RETI ESNEXT: MOV R7,SBUF JB RB8,ZHIL ;跳到指令 ;------------------------ JB 20H.1,PP2 MOV @R1,SBUF RETI PP2: MOV P2,SBUF RETI ;--------------- ZHIL: CJNE R7,#80H,ES1 MOV A,47H ANL A,#0C0H CLR 20H.2 JZ ESN SETB 20H.2 ESN: MOV 36H,47H ANL 36H,#3H MOV A,47H RR A RR A ANL A,#3H ;34H,35H,36H 3級(jí) MOV 35H,A MOV A,47H SWAP A ANL A,#3H MOV 34H,A MOV R1,#34H SETB EX0 CLR 20H.0 ;RUN CLR ET0 CLR ET1 MOV P1,#00H ANL P2,#0FH ;-------------------- ES1: CJNE R7,#40H,ES2 CLR EX0 CLR 20H.0 ;STOP CLR ET1 CLR ET0 MOV P1,#00H ANL P2,#0FH ES2: CJNE R7,#0C0H,ES3 JB ET0,ES3 ;顯示 CLR EX0 MOV 2FH,#00H MOV R0,48H MOV P1,#00H ANL P2,#0FH ACALL READ SETB ET1 SETB ET0 ES3: CJNE R7,#01H,ES4 DEC 4FH ANL 4FH,#0FH MOV A,48H ;顯示時(shí)間軸的數(shù)據(jù) ADD A,4FH MOV R1,A DEC R1 CLR TB8 MOV SBUF,@R1 ES4: CJNE R7,#81H,ES9 ANL 4FH,#0FH INC 4FH MOV A,48H ADD A,4FH MOV R1,A DEC R1 CLR TB8 MOV SBUF,@R1 ES9: CJNE R7,#50H,ES10 MOV 48H,#50H ES10: CJNE R7,#60H,ES5 MOV 48H,#60H ES5: CJNE R7,#4BH,ES6 MOV R1,#4BH ;單觸發(fā)字 CLR 20H.1 ES6: CJNE R7,#0A0H,ES7 SETB 20H.1 ;到p2口 ES7: CJNE R7,#4AH,ES8 CLR 20H.1 MOV R1,#4AH ES8: CJNE R7,#33H,ES11 CLR 20H.1 MOV R1,#47H ES11: RETI ;--------------------------------------- TR0EA: SETB TR1 CJNE R2,#10H,NEXT1 MOV R2,#00H MOV P1,#00H MOV A,P2 ADD A,#20H MOV P2,A MOV R0,48H MOV A,2FH ADD A,#4H MOV 2FH,A JNB 2FH.5,NEXT1 MOV 2FH,#00H ;----------- NEXT1: MOV 21H,@R0 MOV A,2FH MOV DPTR,#JMP_ACC JMP @A+DPTR JMP_ACC:MOV C,21H.7 SJMP OK MOV C,21H.6 SJMP OK MOV C,21H.5 SJMP OK MOV C,21H.4 SJMP OK MOV C,21H.3 SJMP OK MOV C,21H.2 SJMP OK MOV C,21H.1 SJMP OK MOV C,21H.0 OK: MOV P2.4,C INC R0 INC R2 MOV A,R2 CJNE A,4FH,NEXT CPL P2.4 NOP CPL P2.4 NEXT: RETI ;------------------------------ WIRTE: CLR EA MOV A,4AH MOV B,#20H MUL AB MOV 32H,A MOV A,B RRC A MOV 23H.1,C MOV R0,#50H ACALL START_BIT CLR 23H.0 MOV A,23H ACALL WIRTE_BYTE MOV A,32H ACALL WIRTE_BYTE WLOOP: MOV A,@R0 ACALL WIRTE_BYTE INC R0 CJNE R0,#60H,WLOOP ACALL STOP_BIT ACALL DELAY ;----------- MOV R0,#60H ACALL START_BIT CLR 23H.0 MOV A,23H ACALL WIRTE_BYTE MOV A,32H ADD A,#10H ACALL WIRTE_BYTE WLOOP1: MOV A,@R0 ACALL WIRTE_BYTE INC R0 CJNE R0,#70H,WLOOP1 ACALL STOP_BIT SETB EA RET ;----------------------- READ: CLR EA MOV A,4AH MOV B,#20H MUL AB MOV 32H,A MOV A,B RRC A MOV 23H.1,C ACALL START_BIT CLR 23H.0 MOV A,23H ACALL WIRTE_BYTE MOV A,32H ACALL WIRTE_BYTE ACALL START_BIT SETB 23H.0 MOV A,23H ACALL WIRTE_BYTE ACALL READ_BYTE MOV 50H,A ACALL STOP_BIT ;------------ MOV R0,#51H ACALL START_BIT SETB 23H.0 MOV A,23H ACALL WIRTE_BYTE SJMP RR1 RLOOP: CLR SDA NOP SETB SCL NOP CLR SCL RR1: ACALL READ_BYTE MOV @R0,A INC R0 CJNE R0,#70H,RLOOP SETB EA RET WIRTE_BYTE: MOV R3,#8H LOOP: RL A SETB SDA JB ACC.0,NET CLR SDA NOP NET: SETB SCL NOP CLR SCL DJNZ R3,LOOP SETB SDA NOP JNB SDA,CANNEXT ;檢查是否有應(yīng)答 SETB 20H.4 CANNEXT: SETB SCL NOP CLR SCL RET ;------------------------------------------------------------------------- READ_BYTE: SETB SDA MOV R3,#8H LOOP1: RL A SETB ACC.0 JB SDA,CONT CLR ACC.0 CONT: SETB SCL NOP CLR SCL DJNZ R3,LOOP1 RET ;--------------------------------------------------------------------------- START_BIT: SETB SDA NOP SETB SCL NOP CLR SDA NOP CLR SCL RET ;---------------------------------------------------------------------------- STOP_BIT: CLR SDA NOP SETB SCL NOP SETB SDA NOP CLR SCL RET ;----------------------------------------------- DELAY: MOV 4EH,#0FFH DEL5: MOV 4DH,#0FFH DEL4: DJNZ 4DH,DEL4 DJNZ 4EH,DEL5 RET END ;******************************************************** ;數(shù)字信號(hào)發(fā)生器 ;******************************************************** ORG 00H AJMP MAIN ORG 0BH AJMP TR0EA ORG 1BH AJMP TR1EA MAIN: MOV P1,#0FFH MOV R0,#00H MOV TMOD,#11H MOV TH0,#0DBH MOV TL0,#0EFH MOV TH1,#0ECH MOV TL1,#07DH MOV A,#0FAH SETB EA SETB ET0 SETB TR0 SETB ET1 CLR TR1 AJMP $ TR0EA: MOV TH0,#0D8H MOV TL0,#0F5H SETB TR0 NOP SETB P3.7 RL A MOV P1,A SETB TR1 OVER: RETI ;---------- TR1EA: MOV TH1,#0ECH MOV TL1,#07DH CLR TR1 CLR P3.7 RETI ;**************************************************
;顯示鍵盤 ;************************************************** ORG 00H AJMP MAIN ORG 0BH AJMP EATR0 ORG 23H AJMP ESEA MAIN: CLR P3.2 MOV R0,#30H MOV SCON,#90H MOV TMOD,#11H MOV TH0,#0FAH MOV TL0,#0H SETB EA SETB ET0 SETB ES SETB TR0 MOV 30H,#8H MOV 34H,#8H MOV 31H,#8H MOV 35H,#8H MOV 33H,#8H MOV 37H,#8H MOV 36H,#8H MOV 32H,#8H ;----------- MOV 59H,#00H MOV 53H,#08H MOV 50H,#00H MOV 56H,#00H MOV 52H,#00H MOV 58H,#00H MOV 50H,#00H MOV 51h,#0H MOV 57H,#5H MOV 60H,#0H MOV 61H,#1H MOV 62H,#1H MOV 63H,#1H MOV 7EH,#6H DEL: ACALL DELAY DJNZ 7EH,DEL ACALL READY SETB P1.0 SETB P3.4 MOV 22H,#00H ;------------------ L0: JNB P1.0,L1 JB P3.4,L0 L1: MOV 21H,P1 ANL 21H,#0E1H MOV A,21H ;-------------------- CJNE A,#00H,N1 ;SET 22H.0 JB 22H.0,N11 MOV 22H,#1H MOV R2,#0H ;------------------ N11: CJNE R2,#4,N12 MOV R2,#0H N12: INC R2 ACALL SET_ ACALL DIS ACALL DELAY1 ;------------ N1: CJNE A,#80H,N5 MOV 22H,#4H ;RUN 22H.2 ACALL RUN SETB TB8 MOV SBUF,#80H ;--------------- N5: CJNE A,#40H,N6 MOV 22H,#00H ;STOP ACALL STOP SETB TB8 MOV SBUF,#40H ;--------------- N6: CJNE A,#0C0H,N2 MOV 22H,#2H ;顯示 22H.1 SETB TB8 MOV SBUF,#0C0H ACALL DISPLAY ;----------------- N2: CJNE A,#0C1H,N3 ;+ 低位 JNB 22H.0,N33 MOV A,R2 ADD A,#4FH MOV R1,A INC @R1 ACALL JYAN MOV A,@R1 ANL A,#0FH MOV 32H,A CJNE R2,#3H,L43 MOV B,R1 MOV A,58H ADD A,#60H MOV R1,A MOV @R1,52H MOV R1,B L43: ACALL SENDDATE AJMP L0 N33: JNB 22H.1,N3 MOV SBUF,#60H ;下一 頁 N3: CJNE A,#41H,N4 ;- 高位 JNB 22H.0,N44 MOV A,R2 ADD A,#55H MOV R1,A INC @R1 ACALL JYAN MOV A,@R1 ANL A,#0FH MOV 36H,A CJNE R2,#3H,N441 MOV B,R1 MOV A,#60H ADD A,58H MOV R1,A MOV 32H,@R1 MOV 52H,32H MOV R1,B N441: ACALL SENDDATE AJMP L0 N44: JNB 22H.1,N4 MOV SBUF,#50H ;上一頁 ;------------------- N4: CJNE A,#01H,N7 JNB 22H.1,N7 ;向左 SETB TB8 MOV SBUF,#01H ;------------------------- N7: CJNE A,#81H,N8 JNB 22H.1,N8 SETB TB8 MOV SBUF,#81H ;向右 N8: ACALL DELAY AJMP L0 ;--------------------- DIS: MOV A,R2 ADD A,#4FH MOV R1,A MOV A,@R1 ANL A,#0FH MOV 32H,A MOV A,R2 ADD A,#55H MOV R1,A MOV A,@R1 ANL A,#0FH MOV 36H,A RET ;---------------------------- JYAN: ANL 52H,#03H ANL 58H,#03H MOV 56H,#0H ;觸發(fā)點(diǎn)高位 J1: MOV 59H,#00H ; 16級(jí) 門限電壓 高位 J2: RET ;----------------- ;------------------------------------ 數(shù)據(jù)發(fā)送 SENDDATE: CJNE R2,#1H,DAT1 SETB TB8 MOV SBUF,#4AH ;存儲(chǔ)位置 ACALL DELAY1 ANL 50H,#0FH CLR TB8 MOV SBUF,50H ;------------------- DAT1: CJNE R2,#4H,DAT2 SETB TB8 MOV SBUF,#0A0H ACALL DELAY1 ;門限電壓 ANL 53H,#0FH CLR TB8 MOV SBUF,53H ;---------------------- DAT2: CJNE R2,#2H,DAT3 SETB TB8 MOV SBUF,#4BH ACALL DELAY1 ;觸發(fā)字 ANL 51H,#0FH ANL 57H,#0FH MOV A,57H SWAP A ORL A,51H CLR TB8 MOV SBUF,A ;----------- DAT3: CJNE R2,#3H,DAT4 SETB TB8 MOV SBUF,#33H ;3級(jí) ACALL DELAY1 MOV A,58H RL A RL A ADD A,61H RL A RL A ADD A,62H RL A RL A ADD A,63H CLR TB8 MOV SBUF,A DAT4: SETB TR0 ACALL DELAY RET ;------------------------------------------------ EATR0: MOV TH0,#0FAH MOV TL0,#0H SETB TR0 MOV 7FH,A CLR P3.2 MOV A,P1 ADD A,#20H MOV P1,A MOV DPTR,#TABLE MOV A,@R0 CLR ACC.7 MOVC A,@A+DPTR MOV 20H,A ANL A,#1FH ANL P1,#0E0H ORL P1,A MOV C,20H.5 MOV P3.3,C MOV C,20H.6 MOV P3.5,C MOV C,20H.7 MOV P3.7,C SETB P3.2 INC R0 CJNE R0,#38H,NEXT MOV R0,#30H NEXT: MOV A,7FH SETB p1.0 RETI ;----------------------------------------- ESEA: JBC RI,RECE CLR TI RETI RECE: JB RB8,ZHIL MOV A,SBUF MOV R1,#30H LOOP: MOV @R1,#00H INC R1 CJNE R1,#38H,LOOP JNB ACC.7,RE1 MOV 30H,#1H RE1: JNB ACC.6,RE2 MOV 34H,#1H RE2: JNB ACC.5,RE3 MOV 31H,#1H RE3: JNB ACC.4,RE4 MOV 35H,#1H RE4: JNB ACC.3,RE5 MOV 33H,#1H RE5: JNB ACC.2,RE6 MOV 37H,#1H RE6: JNB ACC.1,RE7 MOV 36H,#1H RE7: JNB ACC.0,RE8 MOV 32H,#1H RE8: RETI ZHIL: MOV A,SBUF CJNE A,#12H,ZHOVER ;運(yùn)行成功 ACALL SUCCESS ZHOVER: RETI ;-------------------------- READY: MOV 30H,#16H MOV 34H,#0EH MOV 31H,#0AH MOV 35H,#0DH MOV 33H,#17H MOV 37H,#01BH MOV 36H,#01BH MOV 32H,#01BH RET ;-------------------------- SUCCESS:MOV 30H,#10H MOV 34H,#18H MOV 31H,#0CH MOV 35H,#0CH MOV 33H,#0EH MOV 37H,#10H MOV 36H,#10H MOV 32H,#1BH RET ;----------------------- RUN: MOV 30H,#16H MOV 34H,#18H MOV 31H,#19H MOV 35H,#1AH MOV 33H,#1AH MOV 37H,#1AH MOV 36H,#1AH MOV 32H,#1AH RET ;---------------------------- GOOD: MOV 30H,#15H MOV 34H,#16H MOV 31H,#16H MOV 35H,#0FH MOV 33H,#01CH MOV 37H,#01CH MOV 36H,#01CH MOV 32H,#1CH RET ;-------------------------- SET_: MOV 30H,#10H MOV 34H,#0EH MOV 31H,#11H MOV 35H,#1AH MOV 33H,R2 MOV 37H,#1BH MOV 36H,#0H MOV 32H,#0H RET ;-------------------------- STOP: MOV 30H,#10H MOV 34H,#11H MOV 31H,#0H MOV 35H,#13H MOV 33H,#1BH MOV 37H,#1BH MOV 36H,#1BH MOV 32H,#1BH RET ;------------ DISPLAY:MOV 30H,#0DH MOV 34H,#1H MOV 31H,#10H MOV 35H,#13H MOV 33H,#1CH MOV 37H,#0AH MOV 36H,#17H MOV 32H,#1BH RET ;---------------------------------------------- DELAY: MOV R7,#0FFH DEL7: MOV R6,#0FFH DEL6: DJNZ R6,DEL6 DJNZ R7,DEL7 RET DELAY1: MOV R7,#0AFH DEL71: MOV R6,#0FFH DEL61: DJNZ R6,DEL61 DJNZ R7,DEL71 RET TABLE: DB 09H,0EBH,25H,0A1H,0C3H,91H,11H,0ABH,01H,81H DB 03H,51H,1DH,61H,15H,17H,91H,0ABH,09H,07H,81H,71H,1FH ,0C1H ,49H ,0BH ,0F7H ,0FFH ,5DH ; A b C d E F S T O P g o R y17H u N - ; TABLE1:DB 30H,34H,31H,35H,33H,37H,36H,32H
|