Você está na página 1de 26

Microntrolador 8051

Interface Serial

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

Caractersticas
Transmisso e recepo simultneas
SBUF (99H) Escrever em SBUF transmitir Ler de SBUF acessar recepo

RxD TxD

P3.0 P3.1

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

Modo 0 - Sncrono
RxD: linha de transmisso e recepo TxD: clock de sincronismo Baud Rate
Fixo em 1/12 da freqncia do clock

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

Modo 1 Assncrono 8 Bits


TxD: linha de transmisso RxD: linha de recepo Seqncia de bits
Start bit (0) Bit0, bit1, ... bit7 Stop bit (1)
s 0 1 2 3 4 5 6 7 s

recepo: este bit vai pra RB8 de SCON

Baud rate: varivel


Curso: Tecnologia Disciplina: Sistemas Microcontrolados Tema : Interface Serial Professor: Valfredo Pilla Jr

Passos da operao a cada transmisso


No receptor
SM2 0 (por sw, default) RI 0 (por sw, a cada recepo!)

No transmissor
TI 0 (por sw, antes da transmisso) SBUF dado a ser transmitido Ento Dado transmitido! RI 1 (por hw, no receptor) TI 1 (por hw, no transmissor) SBUF dado (no receptor) RB8 stop bit (por hw, no receptor)

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

Modo 2 Assncrono de 9 bits


Seqncia de bits
Start bit (0).

Bit0, bit1, ... Bit7.


Bit programvel (ex: paridade)
transmisso: sai de TB8 de SCON. recepo: vai para RB8 de SCON. stop bit (1). s 0 1 2 3 4 5 6 7 Baud rate

TB8

1/32 ou 1/64 da freqncia do clock.


Curso: Tecnologia Disciplina: Sistemas Microcontrolados Tema : Interface Serial Professor: Valfredo Pilla Jr

Modo 3 Assncrono de 9 bits


Idem modo 2, mas com Baud Rate varivel. Modos 2 e 3
Modo Mestre-escravo opcional
Protocolo com SM2 = 1 (modo mestre / escravo)

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

Registrador de Controle da Interface Serial (SCON 98H)

9FH
SCON.7

9EH
SCON.6

9DH
SCON.5

9CH
SCON.4

9BH
SCON.3

9AH
SCON.2

99H
SCON.1

98H
SCON.0

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

SCON
SM0
0 0 1

SM1
0 1 0

Modo
0 1 2

Descrio
Registrador de desloca. UART 8 bits UART 9 bits

Baud Rate
fck / 12 Varivel fck / 12 ou fck / 64

UART 9 bits

Varivel

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

SCON
SM2
Modo 2 e 3
Desabilita (0) / habilita (1) comunicao multiprocessadores Se SM2=1, RI no ser ativado se o nono bit de dado recebido for igual a 0.

Modo 1
Se SM2=1, RI no ser ativado se um stop bit vlido no for recebido.

Modo 0
SM2=0

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

10

SCON
REN
Desabilita (0) / habilita (1) comunicao serial Por software

TB8
o nono bit de dado que ser transmitido no modos 2 e 3 Pode ser usado para transmisso de Paridade, por exemplo. Deve ser fornecido pelo programa
Curso: Tecnologia Disciplina: Sistemas Microcontrolados Tema : Interface Serial Professor: Valfredo Pilla Jr

11

SCON
RB8
Modos 2 e 3
o nono bit do dado que foi recebido.

Modo 1
Se SM2=0, RB8 o stop bit que foi recebido.

Modo 0
RB8 no usado.

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

12

SCON
TI
flag de interrupo de transmisso. Modo 0
Setado por hardware no final do tempo do 8 bit

Outros Modos
Setado por hardware no incio do stop bit

Deve ser limpo por software.

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

13

SCON
RI
flag de interrupo de recepo. Modo 0
Setado por hardware no final do tempo do 8 bit

Outros Modos
Setado por hardware na metade do tempo do stop bit

Dever ser limpo por software.

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

14

Configurao de Baud Rate


Modo 0
Baud Rate = freq. clock / 12

Modo 1
Timer/ counter 1 usado no Modo 2 (auto reload) (C/T = 0) SMOD (bit 7 de PCON)
k f ck Baud Rate = 384 (256 (TH1))

Endereo de PCON: 87H PCON no bit-enderevel

0 k 1 1 k 2

TH1: byte mais significativo do timer 1


Curso: Tecnologia Disciplina: Sistemas Microcontrolados Tema : Interface Serial Professor: Valfredo Pilla Jr

15

Configurao de Baud Rate


Modo 2
Baud rate selecionvel
SMOD
0 1 1 f ck 32 1 f ck 64

Modo 3
Idem modo 1 / varivel
Curso: Tecnologia Disciplina: Sistemas Microcontrolados Tema : Interface Serial Professor: Valfredo Pilla Jr

16

Como Programar a Serial


Habilitar a serial
Setar REN (Receiver Enable Bit)
SETB
OU

REN

MOV SCON, #XXX1XXXXb

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

17

Como Programar a Serial


Bits de interrupo serial
RI / TI Setados por hw / reset por sw Pooling de recepo:
LOOP: JNB CLR RI, LOOP RI ;em loop at SERIAL ter ;recebido um byte ;clear em RI para a prxima ;recepo ;l o byte recebido

MOV A, SBUF

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

18

Como Programar a Serial


Pooling de transmisso:
LOOP: JNB CLR MOV TI, LOOP TI SBUF, A ;espera at SBUF ficar vazio ;clear em TI para a prxima ;transmisso ;carrega novo byte ;a ser transmitido

Obs: pode-se usar interrupo tambm!


Curso: Tecnologia Disciplina: Sistemas Microcontrolados Tema : Interface Serial Professor: Valfredo Pilla Jr

19

Como Programar a Serial


Bit de paridade par Modos 2 e 3 (9.o bit)
MOV C, P MOV TB8, C MOV SBUF, A ;move o bit Paridade PAR para o carry C ;move o C para o bit TB8 ;move o byte que est em A para o SBUF ;a serial ir transmitir automaticamente TB8 ;com o byte que est em SBUF

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

20

Como Programar a Serial


Bit de paridade mpar Modos 2 e 3 (9.o bit)
MOV C, P CPL C MOV TB8, C MOV SBUF, A SBUF ;move o bit Paridade para o carry C ;transforma em paridade IMPAR ;move o C para o bit TB8 ;move o byte que est em A para o ;a serial ir transmitir automaticamente TB8 ;com o byte que est em SBUF
Curso: Tecnologia Disciplina: Sistemas Microcontrolados Tema : Interface Serial Professor: Valfredo Pilla Jr

21

Como Programar a Serial


Bit de paridade Modos 0 e 1 (8.o bit)
A transmisso precisa ser ASCII (7 bits)
CLR ACC.7 ;zera bit mais significativo de A ;o que faz PSW gerar paridade dos 7 bits ;restantes! ;transfere a paridade de A para C ;carrega a paridade em ACC.7 ;envia o byte com 7 bits de dados e 1 bit
;paridade

MOV C, P MOV ACC.7, C MOV SBUF, A de

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

22

Como Gerar Baud-Rates


Modo 0 Clk do 51
Modo 2 64 12
Baud Rate

Serial

SMOD (bit 7 de PCON)


0

Clk do 51
32
Curso: Tecnologia Disciplina: Sistemas Microcontrolados Tema : Interface Serial Professor: Valfredo Pilla Jr

Baud Rate 1

Serial

23

Como Gerar Baud-Rates


Modo 1 e 3

32
Timer 1 16

SMOD (bit 7 de PCON) 0 Baud Rate 1

Serial

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

24

Como Gerar Baud-Rates


Baud-Rate desejado Baud-Rate obtido Erro (%) Clock Utili-zado [MHz] Bit SMOD Carga do TH1 / Timer 1 (no modo 2)

1.200 2.400 9.600 19.200

1.200 2.400 9.600 19.200

0 0 0 0

11,059 11,059 11,059 11,059

0 0 0 1

E8H F4H FDH FDH

1.200 2.400 9.600 19.200


(*) Erro

1.202 2.404 8.923 20.833

0,16 0,16 7(*) 8,5(*)

12,000 12,000 12,000 12,000

0 1 1 1

E6H E6H F9H FDH

que impede o funcionamento da comunicao serial


Tema : Interface Serial Professor: Valfredo Pilla Jr

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

25

Serial com Interrupo


ORG 0000H SJMP PROG ORG 0023H ;endereo da interrupo da serial SJMP SERI ORG 0027H MOV TMOD,#0010000b ;TIMER 1 no modo 2 MOV TH1, #F4H ;recarga do TIMER 1 para 2400 bauds SETB TR1 ;liga TIMER 1 MOV IE, #90H ;habilita interrupo da SERIAL MOV SCON, #01010000b ;programa SERIAL para modo 1 ;e j libera bit REN (Reception Enable) SJMP $ ;este lao est no lugar do programa principal do ; projeto
MOV A, SBUF ;a SERIAL interrompeu o microcontrolador ; l o dado ;que chegou ;reseta o bit RI (Reception Interrupt)

PROG:

SERI:

CLR RI RETI

Curso: Tecnologia Disciplina: Sistemas Microcontrolados

Tema : Interface Serial Professor: Valfredo Pilla Jr

26