Tak jsem se k tomu konečně dostal a funguje to.
zapojení:
Kód: Vybrat vše
; PIC16F628 a krystal 4,00MHz
;
;**************************************************************************
;* PIC16F628 *
;* --------\/-------- *
;* vstup nACK -|RA2 RA1|- výstup STROBE *
;* vstup ERROR -|RA3 RA0|- vstup BUSY *
;* tlacitko -|RA4ck osc1|- \ Krystal 4,00MHz *
;* +5V -|MCLR osc2|- / *
;* 0V -|Vss Vdd|- +5V *
;* data bit 0 -|RB0/INT PGD/RB7|- data bit 7 *
;* data bit 1 -|RB1 PGC/RB6|- data bit 6 *
;* data bit 2 -|RB2 RB5|- data bit 5 *
;* data bit 3 -|RB3 RB4|- data bit 4 *
;* ------------------ *
;* *
;**************************************************************************
Hexa kód znaku, který chci tisknout. vždy připravím do W a potom zvolám tuto rutinu:
Kód: Vybrat vše
odesli movwf PORTB ;přesuň data na port
btfsc PORTA,0 ;kontrola BUSY, jestli je v 0
goto $-1 ;není v 0 -> vrať se
bcf PORTA,1 ;je v 0, shoď STROBE
nop
nop
nop
nop
nop
bsf PORTA,1 ;nahoď STROBE
btfss PORTA,2 ;kontrola nACK, jestli je v 1
goto $-1 ;není v 1 -> vrať se
return ;je v 1, návrat pro další znak
Jen mi pořád vrtá hlavou, jestli správně kontroluji signál nACK, tedy ve správný okamžik. Jestli ho nekontroluji ještě předtím, než přejde do nuly, ale když jsem to zkoušel jako posloupnost nejdřive 0, pak 1, tak to netisklo. Signál ERROR zatím nevyužívám. To dodělám, až zase budu mít čas si s tím "hrát".