;-------------------------------; ; PRINT ; ; zobrazit číslo na LCD ; ;-------------------------------; ;slovak@post.cz )S(08.2007; ;-------------------------------; ;vstup R4,3,2,1 (R1 nejnižší řád) ;Znam 0=kladné, 1=záporné ;TE desetinná tečka ;00000000 4321 ;00000001 432.1 ;00000010 43.21 ;00000100 4.321 PRINT MOVLW 0x20 ;mezera MOVF TE,F BTFSC SZ CALL WRDATA ;TE=0, poslat mezeru PRINT4 MOVF R4,F ;řád 1000 [-4321] BTFSS SZ GOTO PZR4 ;nenulové BTFSC TE3 GOTO PZR4T ;TE3=ZAP MOVLW 0x20 ;mezera CALL WRDATA PRINT3 MOVF R3,F ;řád 100 [-321] BTFSS SZ GOTO PZR3 ;nenulové BTFSC TE2 GOTO PZR3T ;TE2=ZAP MOVLW 0x20 ;mezera CALL WRDATA PRINT2 MOVF R2,F ;řád 10 [-21] BTFSS SZ GOTO PZR2 ;nenulové BTFSC TE1 GOTO PZR2T ;TE1=ZAP MOVLW 0x20 ;mezera CALL WRDATA CALL POZN ;znaménko nebo mezera GOTO PR1 PZR2 CALL POZN ;znaménko nebo mezera PRR2 CALL POR2 ;řád 10 BTFSC TE1 GOTO PTR1 ;TE1=ZAP GOTO PR1 ;TE1=VYP PZR3 CALL POZN ;znaménko nebo mezera CALL POR3 ;řád 100 MOVF TE,F BTFSC SZ GOTO PR21 ;TE=0 PT2T BTFSS TE2 GOTO PR2T ;TE2=VYP GOTO PTR21 ;TE2=ZAP PZR4 CALL POZN ;znaménko nebo mezera PR4 CALL POR4 ;řád 1000 MOVF TE,F BTFSC SZ GOTO PR321 ;TE=0 BTFSC TE3 GOTO PTR321 ;TE3=ZAP CALL POR3 ;řád 100 GOTO PT2T PZR2T CALL POZN ;znaménko nebo mezera PR2T CALL POR2 ;řád 10 PTR1 CALL POTE ;poslat tečku GOTO PR1 PZR3T CALL POZN ;znaménko nebo mezera CALL POR3 ;řád 100 PTR21 CALL POTE ;poslat tečku GOTO PR21 PZR4T CALL POZN ;znaménko nebo mezera CALL POR4 ;řád 1000 PTR321 CALL POTE ;poslat tečku PR321 CALL POR3 ;řád 100 PR21 CALL POR2 ;řád 10 PR1 MOVF R1,W ;řád 1 PIOR IORLW B'000110000' PWRET CALL WRDATA ;PRINT W + RETURN RETURN ;................................ ;poslat znaménko nebo mezeru POZN MOVLW 0x20 ;mezera BTFSC Znam ;záoprné číslo? (Znam=1) MOVLW 0x2D ;- GOTO PWRET ;poslat tečku POTE MOVLW 0x2E ;. GOTO PWRET ;poslat řád 1000 POR4 MOVF R4,W ;řád 1000 GOTO PIOR ;poslat řád 100 POR3 MOVF R3,W ;řád 100 GOTO PIOR ;poslat řád 10 POR2 MOVF R2,W ;řád 10 GOTO PIOR ;-------------------------------- ;převod HEX/DEC, vstup A1,2, výstup R1,2,3,4 HEXDEC ;upravit záporné číslo BCF Znam ;=0 BTFSS A2,7 ;=1? GOTO PHD BSF Znam ;=1, záporné ;změna znaménka A1,2 COMF A2,F COMF A1,F INCFSZ A1,F ;+1=0? GOTO PHD INCF A2,F ;+1 ;převod PHD CLRF A3 MOVLW 0xE8 ;1000 do B MOVWF B1 ; MOVLW 0x03 ; MOVWF B2 ; CLRF B3 ; CALL LOMENO ;A/B=C, zbytek je v A MOVF C1,W ;uložit řád 1000 MOVWF R4 ; HDPA1 MOVLW 0x64 ;100 do B MOVWF B1 ; CLRF B2 ; CALL LOMENO ;A/B=C, zbytek je v A MOVF C1,W ;uložit řád 100 MOVWF R3 ; MOVLW 0x0A ;10 do B MOVWF B1 ; CLRF B2 ; CALL LOMENO ;A/B=C, zbytek je v A MOVF C1,W ;uložit řád 10 MOVWF R2 ; MOVF A1,W ;uložit řád 1 MOVWF R1 ; RETURN