Página 1 de 1

interface serial

MensagemEnviado: 26 Nov 2007 16:32
por avidaehdura
ae pessoal

sou novato com 8051
quem puder me ajudar, por favor, to precisando.
preciso fazer um programa (em assembly)que receba pela interface serial bytes(8 bits de dados) à taxa 9,6kbits po segundo. cada dado recebido deve ser comparado a 20h. caso o dado recebido seja igual a 20h, o programa deve rotacionar um bit aceso (nivel logico 1) na porta p1

valeu

MensagemEnviado: 15 Mai 2008 16:33
por Francesco
Olá,

O programa que você quer fazer não é difícil. Qual cristal você está usando? Isso definirá a velocidade da sua porta serial.
Caso seja de 11,0592MHz, a conta fica assim:

Velocidade = ( ( 2^SMOD ) * Cristal ) / ( 384 * ( 256 - TH1 ) )

Velocidade são seus 9600bps, SMOD é um bit de configuração, aceita apenas 1 ou 0. Cristal é a velocidade do seu cristal em Hz, e TH1 é o valor a ser configurado no Timer 1, esse valor (TH1) é o que você quer.

Supondo que seu cristal seja 11,0592MHz e SMOD seja 0, o valor de TH1 é FDh.

Uma configuração básica pode ser feita assim:

MOV SCON,#60h
MOV TMOD,#20h
MOV TH1,#0FDh
SETB TR1

Quando um dado é recebido, a flag RI é setada. Você pode fazer o programa principal ficar testando ela.

JNB RI,$
MOV A,SBUF
CLR RI

Agora é só testar. Basta fazer um SUB e comparar as flags.