ORG 00H JMP init ORG 23H RETI ORG 30H init: ; serial port communication init MOV TMOD, #20H ; Timer 1 mode 2 MOV TH1, #0FDH ; TH1 = FDH MOV SCON, #50H SETB TR1 ; Start Timer 1 ; reserve bit addresing MOV SP, #2FH MOV R0, #00H ; enable transmission and receiving CLR RI CLR TI main: ACALL testclick ACALL testrecv JMP main receive: JNB RI, $ MOV A, SBUF CLR RI RET transmit: MOV SBUF, A JNB TI, $ CLR TI RET testrecv: JNB RI, endre MOV A, SBUF CLR RI JZ off ACALL ledon AJMP endre off: ACALL ledoff endre: RET testclick: ; send 1 when button press, send 0 when button release MOV A, R0 JNZ cur1 cur0: JNB P2.3, send1 AJMP endcl cur1: JB P2.3, send0 AJMP endcl send0: MOV R0, #00H MOV A, #00H ACALL transmit ACALL blink AJMP endcl send1: MOV R0, #01H MOV A, #01H ACALL transmit ACALL blink AJMP endcl endcl: RET hexprint: PUSH ACC MOV DPTR, #hex SWAP A ANL A, #0FH MOVC A, @A+DPTR ACALL transmit POP ACC ANL A, #0FH MOVC A, @A+DPTR ACALL transmit RET ledon: CLR P2.5 CLR P2.5 RET ledoff: SETB P2.5 SETB P2.5 RET blink: ACALL ledon ACALL delay ACALL ledoff RET delay: MOV R2,#07FH MOV R1,#0 d: DJNZ R1, d DJNZ R2, d RET hex: DB "0123456789ABCDEF" e: END