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