rendered paste body MOV TMOD,#20H ; parametry serioveho prenosu
MOV TH1,#FD
MOV SCON,#50H
SETB TR1
READ: CLR RI
MOV R7,SBUF
;-----------------------------------------------;
; testy ;
STISK: CJNE R7,#"p",IF_O
CLR RI
jmp PILA
IF_O: CJNE R7,#"o",IF_T
CLR RI
jmp OBDELNIK
IF_T: CJNE R7,#"t",IF_S
CLR RI
jmp TROJUHELNIK
IF_S: CJNE R7,#"s",IF_IncDel
CLR RI
jmp SINUS
IF_IncDel: CJNE R7,#"+", IF_DecDel
CLR RI
jmp IncDel
IF_DecDel: CJNE R7,#"-",IF_Else
CLR RI
jmp DecDel
IF_Else: jmp READ
;-----------------------------------------------;
; Jednotlive programy
;----------------;
OBDELNIK:
; MOV A,#0
;opak:
; XRL A,#0ffh
; MOV P1,A
; CALL DELAY
;MOV R7,SBUF
;CJNE R7,#"o",STISK
;jmp opak
mov R3,#0h
DOLU: mov P1,#0h
call DELAY
inc R3
mov A,R3
cjne A,#0FFh,DOLU
mov R3,#0h
NAHORU: mov P1,#0FFh
call DELAY
inc R3
mov A,R3
cjne A,#0FFh,NAHORU
MOV R7,SBUF
CJNE R7,#"o",STISK
jmp DOLU
;--------------;
PILA:
inc P1
CALL DELAY
MOV R7,SBUF
CJNE R7,#"p",STISK
jmp PILA
;----------------;
TROJUHELNIK:
;MOV A, #000h
;nastup:
;MOV P1, A
; inc A
; CJNE A, #0FFh, nastup
; sestup: MOV P1, A
; dec A
; CJNE A, #000h, sestup
; MOV R7,SBUF
; CJNE R7,#"t",STISK
;
; jmp nastup
mov P1,#0h
call DELAY
INKR: inc P1
inc P1
call DELAY
mov A,P1
cjne A,#0FEh,INKR
DEKR: dec P1
dec P1
call DELAY
mov A,P1
cjne A,#00h,DEKR
MOV R7,SBUF
CJNE R7,#"t",STISK
jmp INKR
;jmp TROJUHELNIK
;------------------;
HelpStisk2: jmp STISK
SINUS:
MOV DPTR,#TAB
MOV R0,#0h
OPAKSIN:
MOV A, R0
ANL A,#00011111b
MOVC A,@A+DPTR
MOV P1,A
INC R0
call DELAY
MOV R7,SBUF
CJNE R7,#"s",HelpStisk2
jmp OPAKSIN
;---;
DELAY:
MOV A,R6
MOV R5,A
DJNZ R5, $
RET
HelpStisk1: jmp STISK
DecDel:
CLR RI
MOV R7,SBUF
CJNE R7,#"-",HelpStisk1 ; Dalsi programatorska nadhera ... assembler forever
DEC R6
jmp DecDel
;---------------;
HelpIncDel: jmp IncDel ; programatorsky podivne programy z duvodu omezeni delky skoku(127/+127 bitu) ... inu dejepis v praxi
HelpStisk: jmp STISK
IncDel:
CLR RI
MOV R7,SBUF
CJNE R7,#"+",HelpStisk
INC R6
jmp HelpIncDel
;------------- ;
TAB:DB 80h, 98h, 0B0h, 0C6h, 0D9h, 0E9h, 0F5h, 0FCh
DB 0FFh, 0FCh, 0F5h, 0E9h, 0D9h, 0C6h, 0B0h, 98h
DB 80h, 67h, 4Fh, 39h, 26h, 16h, 0Ah, 03h
DB 01h, 03h, 0Ah, 16h, 26h, 39h, 4Fh, 67h
end