IR_TX | ldaa | ODDANO | prenos pozenemo z vpisom 1 v spremenljivko ODDANO |
beq | TX_RTS | ki pa se postavi zopet na 0 ob koncanem prenosu | |
ldaa | TX_CNT | pogleda stevec prenesenih bitov. Ce je ta 0 prenos | |
bne | TX_CONT | ne poteka in ga je treba zaceti z oddajo start bita | |
*ta koscek programa najprej preveri ce je v teku oddaja podatka, ce
pa ni
*odda start bit in nastavi dolzino paketa podatkov |
|||
ldaa | ODDAJA | nalozi byte za oddajo | |
coma | byte moramo negirati ker ir sprejemnik inverira signal | ||
|
staa | TX_CHR | ga shrani v zacasno spremenljivko |
ldaa | #DOLZINA | dolzina podatka 8+stop biti | |
staa | TX_CNT | ||
ldaa | _DPRB | oddajni port | |
oraa | #MASKA | maska za postavljanje in brisanje oddajnega bita | |
staa | _DPRB | ta bit tu pobrisemo - start bit | |
bra | TX_RTS | ||
TX_CONT | cmpa | #STBITI | preveri ce je ze treba oddajati stop bite |
bls | TX_STPB | ||
*potrebno je oddajati podatkovne bite. Zato shiftamo TX_CHR levo in
*gledamo carry ter ustrezno postavljamo oddajni bit |
|||
rol | TX_CHR | shiftamo zacasno spremenljivko in tako bit gre v carry | |
ldaa | _DPRB | tu ta bit prenesemo na port | |
anda | #MASKAN | ... | |
bcc | TX_ZBIT | ... | |
oraa | #MASKA | ... | |
TX_ZBIT | staa | _DPRB | ... |
dec | TX_CNT | zmanjsamo stevec bitov | |
bra | TX_RTS | in kokncamo oddajanje tega bita | |
*cas je ze za stop bite. Enko oddajamo toliko casa, dokler ni TX_CNT
enak 0.
*Ko pade na 0 je konec paketa in postavimo zastavico za uspesno oddajo |
|||
TX_STPB | ldaa | _DPRB | |
anda | #MASKAN | ||
staa | _DPRB | ||
dec | TX_CNT | ||
bne | TX_RTS | ||
clr | ODDANO | ||
TX_RTS | rts |