;#define BUTTON P1.0 ; change to port pin that button is on
org 0
ajmp START
org 23h
SerRx: ; place serial interrupt handler here
setb ren
setb ea
setb es
org 100h
START:
mov TMOD,#21h ; timer 1 auto-reload mode (baud rate generator)
setb TR1 ; timer 1 run
mov TH1,#0fdh ; 9600
setb PMOD.SMOD1 ; double baud rate bit .SMOD1
;mov a, pcon ;dodalam
;setb acc.7 ;dodalam
;mov pcon, a ;dodalam
mov SCON,#050h ;serial port mode 1 (8-bit UART)
setb TI ;invoke tx complete
MAIN:
setb P1.0 ;P1.0 input
PRESS:
jb P1.0, MAIN ; wait for button press
RELEASE:
jnb P1.0, RELEASE ; wait for button release
sendChar:
jnb TI,sendChar ; wait for clear buffer
clr TI ; acknowledge tx interrupt
mov SBUF,#33 ; send 'A'
acall delay2sec ; 2 second wait
ajmp sendChar ; send again (forever)
delay2sec:
push ACC ; store accumulator
mov A,R0 ; store R0 register
push ACC ;
mov R0,#00Dh ; load delay counter #0x0D
mov TH0,#000h ; reset timer 0
mov TL0,#000h ;
setb TR0 ; timer 0 run
delayReset:
clr TF0 ; clear timer 0 interrupt flag
WAIT: jnb TF0, WAIT ; wait for timer interrupt DODAŁAM WAIT
djnz R0,delayReset ; decrement delay counter
clr TR0 ; timer 0 stop
pop ACC ; restore R0 register
mov R0,A ;
pop ACC ; restore accumulator
ret ; done
end