Página 1 de 1

Serial AT89S52

MensagemEnviado: 09 Jul 2010 21:25
por kas...
sou novato em 8051 e gostaria de saber como e se é possivel usar o comando printf e outros para enviar e receber dados pela serial? uso um oscilador de 24mhz configurei a taxa para 4800 e setei smod (pcon) para dobrar e ficar com 9600. não sei se é o certo... achei alguns exemplos na net mas não deram muit certo...
PCON =0x80 ;
SCON = 0x50 ;
TH1=TL1=0xF5;
TR1=1;
TMOD = 0x21 ;

desde já agradeço pela atenção...

MensagemEnviado: 10 Jul 2010 09:29
por sisae
Kas...

bom, para comecar, um cristal de 24Mhz, vc terá uma margem de erro muito grande na serial, sugirio usar 11,592Mhz ou se quiser mais velocidade, 22,1184Mhz, ok!?
no Keil da Uvision/SDCC e outros, para configurar a serial por exemplo, usando cristal de 11,0592Mhz a 9600bps.

void config_serial(void)
{
SCON = 0x50;
TMOD = 0x20;
TH1 = 0xFD;
TR1 = 1;
TI = 1;
RI = 0;
}

Ja o printf() usa como direcionamento de saida a função putchar(); isto já é automatico, no caso do Keil/SDCC, ja envia direto para a serial.
isto é interassante se voce quiser redirecionar a saida para outros fins, basta ignorar a funcao putchar() no STDIO.H e montar a sua propria redireção. Fiz isso no meu mini computador
http://www.asm51.eng.br/phpbb/viewtopic.php?t=9300
Fazendo com que o printf() envie para o video em vez da serial.
Abraços.

Re: Serial AT89S52

MensagemEnviado: 14 Jun 2013 00:57
por renan-papaco
use cristal de 11.59MHz e se estiver usando o SDCC pode inicializar a serial com um simples comando: init_stio_poll( velocidade a ser usada) ja testei num 8032 com um 89C52 e funcionou lindamente...a comunicação entre ambos foi perfeita...n sei se com 300BPS daria pra comunicar serial com o PC.)