rozdily v obsluze serialu 8051 vs 8052

Prichy prichy@volny.cz
Čtvrtek Červen 2 10:57:47 CEST 2005


prehazel jsem to jak to mate vy - > bohuzel nepomaha

 diky za nazor

Milan napsal(a):

>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
>
>
>_______________________________________________
>HW-list mailing list  -  sponsored by www.HW.cz
>Hw-list@list.hw.cz
>http://list.hw.cz/mailman/listinfo/hw-list
>
>
>  
>



Další informace o konferenci Hw-list