rozdily v obsluze serialu 8051 vs 8052
Milan
milger@pobox.sk
Čtvrtek Červen 2 09:55:41 CEST 2005
Niekde to pouzivam takto:
SCON = 0x50; //en.Rx;8-b UART variable baud rate
TMOD = 0x21; //8-b autoreload TIMER 1, 16-b TIMER 0
TH1 = 0xf5; //serial baudrate = 10MHz/(384*(256-TH1)) = 2367Bd
TL0 = (unsigned char)Tcnt;
TH0 = (unsigned char)Tcnt>>8;
TCON = 0x50; //TIMER 0,1 run
IEN0 = 0x92; //ser.p.INT enable, TIMER 0 INT enable
IP0 = 0x10;
EAL = 1; //INT enable
void SERIAL_INT (void) interrupt 4
{
if (RI) //data received
{
if (fifoM<SizeFIFObuff-1) {fifoM++;}
else {fifoM = 0;}
BuffIn[fifoM] = SBUF;
RI = 0;
}
if (TI) //data transmited
{
ti_en = 0;
TI = 0;
}
}
Timer 0 riesi nieco ine, ale inak to cele funguje. Nic ma nenapada, skus
zmenit poradie pri inicializacii /mozno to chce naskor pustit hodiny pre
UART a az potom povolit prerusenie/ alebo vymen obvod.
Mila
n
----- Original Message -----
From: "Prichy" <prichy@volny.cz>
To: "HW-news" <hw-list@hw.cz>
Sent: Thursday, June 02, 2005 8:28 AM
Subject: rozdily v obsluze serialu 8051 vs 8052
Zdravim.
Nefunguje mi prijem od serialu na 8052.
SCON = 0x50; /*inicializace serialu 9600 baud pri 11.059MHz*/
TMOD |= 0x21; //nastaveni modu casovace 0 a 1
TH1 = 0xFD;
TR0 = 1; // start timer 0
ET0 = 1; // enable timer 0 interrupt
ES = 1; // enable serial interrupt
PS = 0; // set serial interrupts to
hi priority
EA = 1; // global interrupt enable
TR1 = 1; // start timer 1
zde je inicializace, pouzivam casovac 1,
pri krokovani v simulatoru (u*V*i*s*i*o*n) vse funguje
na HW neprima nic ze serialu (asi, nemam emulator, abych
zjistil presne co se tam deje) (REN mam nahozeny)
Pokud ovsem nahodi TI prijme vse celkem v pohode. (TI nesmim vynulovat)
Z toho usuzuji, ze vubec nedojde k preruseni od prijmu.
v PC mam seriak nastaven na 9600 1sb. bez parity.
Jsem si vedom, ze je to dotaz typu UB (uplne blby),
ale uz se v tom tak nejak placam a tocim v uzavrenem
kruhu,
static void com_isr (void) interrupt 4 using 2
{
if (RI != 0)
{
RI = 0;
buf[buf_count] = SBUF;
if (buf[buf_count]=='\r'){ ES=0;} // zastaveni serioveho kanalu
buf_count++;
serial_count= 20;}
}
pro uplnost obsluha preruseni (na vysilani nepouzivam)
dekuji za pripadne rady a stydim se :-)
Prichy
PS: neni to rozdilem mezi 8051 a 8052, docetl jsem se, ze
casovac 2 muze byt pouzit ke generovani prenosove rychlosti
ale nemusi, tak jsem vse nechal jako na 8051
_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list@list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
__________ Informacia od NOD32 1.1014 (20050301) __________
Tato sprava bola preverena antivirusovym systemom NOD32.
http://www.eset.sk
Další informace o konferenci Hw-list