Registrador sbuf
COMUNICAÇÃO SERIAL 8051
Registrador SBUF: Lugar onde fica a byte serial. É um registrador duplo
Pois pode servir pára escrever (modo de transmissão) e ler (modo de
recepção).
TRANSMISSÃO
MOVSBUF, A ; carrega o byte a ser transm. No ACC, e joga no SBUF
RECEPÇÃO
MOVA,SBUF ; carrega o valor do byte recebindo, e joga no ACC (pára ser lido)
Pára recever um um dado serial o BIT REN (do SCON) deve estar setado e o BIT
RI zerado. Ao receber a informação (via SBUF) o RI é setado automaticamente,
Indicando que tem um byte no SBUF. Exemplo
LOOP: JNB RI, LOOP ; fica em loop até o serial ter recebido um byte
CLR RI ;zera RI pára próxima recepção
MOV A,SBUF ; lê o byte recebido
Na trasmissão o BIT TI (do SCON) fica setado quando o SBUF está vazio, ou seja, a
Transmissão já foi feita. Exemplo
LOOP: JNB TI, LOOP ; éspera o SBUF ficar vazio, ou seja, TI = 1
CLR TI ;zera TI pára próxima transmissão
MOV SBUF, A ; carrego novo byte a ser transmitido
BAUND-RATE (TAXA DE TRANSMISSAO DE DADOS):A velocidade na qual
os modems conseguem transmitir dados. A taxa de transmissão de dados
é o número de eventos, ou mudanças de sinal, que ocorrem em um
segundo - e não o número de bits transmitidos por segundo (bps
).
Baund-RATE = (2^SMOD) x freq. De overflow do timer/cont1
32
SMOD (BIT 8 do registrador PCON, é 0 ou 1)
Número de contagens = freq, de clock/ 12 = freq, de clock
freq.Overflow do timer freq.Overflow do timer x 12
Carga do time = 256d - número de contagens d (d = decimal)
INTERRUPÇÃO SERIAL
MOV Ié, #90H ; INTERRUPÇÃO SERIAL HABILITADA!
ORG 0023H ; endereço de interrupção SERIAL
SJMP NOME DA ROTINA ;desvia pára esse endereço de int.
A interrupção ocorre quando o bit RI ou TI é setado.
Estrutura de delay
DELAY
MOVLW Número MULTIPLICADOR do delay
MOVWF TEMP2
DL_0
MOVLW .250
MOVWF TEMP1
DL_1 ; Delay de 1ms
NOP
DECFSZ TEMP1, F ;decremente temp 1, e guarda o result, em temp1.
GOTO DL_1
DECFSZ TEMP2,F
GOTO DL_0
RETURN