RS232 vs PIC16f...
http://pandatron.sk/?157&skola_programovani_pic-13_dil
USART - sériový port
V dnešním díle se podíváme na jednotku USART, konkrétně na její využití pro Asynchronní sériový přenos, používaný například u PC jako sériový port - RS232.
Blokové zapojení vnitřní jednotky USART
Na kompletní popis a nastavení vás opět odkazuji do katalogových listů (viz. 6 lekce). Zde popíšu nastavení při použití interního oscilátoru, nebo i jiného zdroje 4MHz. Rychlost komunikace bude nastavena na 19,2 kbaud, 8 bitů a bez parity.
Piny jsou:
RxD - RORTB,1
TxD - RORTB,2
MOVLW B'00100110'
MOVWF TXSTA
MOVLW 12
MOVWF SPBRG
MOVLW B'00100000'
MOVWF PIE1
BCF STATUS,RP0
MOVLW B'10010000'
MOVWF RCSTA
MOVLW B'11000000'
MOVWF INTCON
Nejprve je potřeba provést základní nastavení. Nastaví se způsob a rychlost přenosu a povolí se přerušení po přijmutí bytu. Je to výhodnější, protože jinak by jsme neustále museli testovat zda něco nepřišlo, což by při vysokých přenosových rychlostech bylo téměř nemožné.
MOVLW 48
MOVWF TXREG
Takhle vypadá odeslání jednoho bytu (znaku), konkrétně nuly (viz ASCII tabulka). Stačí ho uložit do registru TXREG a o nic víc se nemusíme starat, vše proběhne automaticky. Pokud by jste chtěli odesílat víc znaků najednou, je třeba ještě testovat zda byl již minulý byt odeslán. To se provádí testováním bitu TXSTA,1, pokud je vysílač v klidu, je v jedničce.
MOVF RCREG,0
MOVWF CISLO
No a takhle vypadá sekvence na přečtení přijmutého bytu. Samozřejmě ji musí předcházet zjištění že něco nepřišlo, viz. celý příklad. Přijmutý byte je uložen v registru RCREG, ze kterého ho přečteme a uložíme do registru CISLO, případně provedeme jinou operaci.
Zde je ke stažení ukázkový program se všemi těmito ukázkami: