| Författare | Meddelande |
|---|
winit_a
Anställd: 16 november 2003 Inlägg: 17
| 15 februari 2004 5:42 Skapa UART med Software (inte användas SBUF) för 8051 | | |
|
| Skapa UART med programvara? Mitt projekt Används 3 UART (normalt har 1 UART med MASKINVARA P3.0 och P3.1)
8051 MCU@11.0592MHz Skapa UART används P2 eller P1 att Gränssnitt RS-232 |
|
| Tillbaka till toppen | |
 |
pisoiu
Anställd: 31 december 2002 Inlägg: 902 Hjälpt: 24 Ort: Rumänien
| 15 februari 2004 11:58 Re: Skapa UART med Software (inte användas SBUF) för 8051 | | |
|
| Hej, Min åsikt: det är förbaskat svårt. Du måste göra det med hjälp avbryter, men 8051 är ett relativt långsamt registeransvarige, dess prestanda vistelser under 1mips på 11,0592 MHz klocka för klassiska 8051-versioner (1instruction cykel = 12 klockcykel). Mer än en serieport genomföras programvara äter nästan alla processor Temne, speciellt om du vill gå upp till 115200bps med dessa hamnar, eller om du vill genomföra alla tänkbara parametrar (6/7/8 databitar selecteble, 1 / 2 stoppbitar, paritetsinformation udda / jämn / varumärke / mellanslag / ingen, flödesreglering valbara xon-xoff/hard/none). Min sugestion är att använda en modifierad arkitektur 8051 från Cypress, eller att använda en scenix mikrocontroller (www.ubicom.com). För scenix registeransvarige kan jag ge koden för 8 uarts samtidigt. Detta om du vill ha en programmeringen. Om yau vill maskinvara kan du använda max3100 (Maxim).
Bästa, |
|
| Tillbaka till toppen | |
 |
Ajay
Anställd: 29 februari 2004 Inlägg: 31
| 01 mars 2004 0:10 Re: Skapa UART med Software (inte användas SBUF) för 8051 | | |
|
| Du kan skapa en UART (förutom med hjälp av SBUF) med hjälp av ett speciellt timer och skriver mycket snabbt kod att rotera lite. På inkommande sida (RXD), måste du använda en avbryta stift. När avbryta kommer, startar din timers och läs PIN-status i bär, rotera och skapa dina inkommande byte. Fungerar bra upp till 9600 Baud (jag har använt det).
Men att skapa två samtidigt? Glöm det. Även om du använder två dedikerade timers, den avbryter rutiner blivit så stor att du kommer att sakna bitar.
Om du letar efter långsam UARTs (1200 Baud eller långsammare), då denna teknik fungerar för upp till 2 UART's. Tänk på att ni kommer att ge upp alla tre timers (en används för baudtalet gen för SBUF, en hamn-1 och en hamn 2 tidpunkt) samt både avbryter.
Så, bättre design är att använda en ARM-chip med två UART's (jag har skapat ytterligare 2 UARTs till 19200 Baud med en ARM) eller använda Rabbit registeransvarige eller något sådant.
Ajay |
|
| Tillbaka till toppen | |
 |
beuch
Anställd: 06 juni 2001 Inlägg: 65 Ort: Frankrike
| 03 mars 2004 14:45 Re: Skapa UART med Software (inte användas SBUF) för 8051 | | |
|
| Hej,
ta en titt på den bifogade filen från Philips web AN.
AN446
hej då |
|
| Tillbaka till toppen | |
 |
Google AdSense

| 03 mars 2004 14:45 annonser | | |
|
|
|
|
| Tillbaka till toppen | |
 |
crazytnt
Anställd: 02 februari 2004 Inlägg: 8
| 03 mars 2004 17:43 Re: Skapa UART med Software (inte användas SBUF) för 8051 | | |
|
| Det är mycket svårt. Föreslå använder hårdvara. |
|
| Tillbaka till toppen | |
 |
J_expoler2
Anställd: 10 maj 2003 Inlägg: 179 Hjälpt: 19
| 03 mars 2004 18:00 Re: Skapa UART med Software (inte användas SBUF) för 8051 | | |
|
| Hej Jag har en uppfattning UART men skicka uppgifter endast med hjälp av timer 0 bitars T232 som TXD MOV TMOD, # 22H MOV TH0, # 70H MOV TL0, # 70H SETB EA SETB ET0 SETB TR1 ; ; ; ; funktion skicka data: CLR T232; startbit SETB TR0 MOV R7, # 8
TX_LOOP: RRC A JNB TF0, $ MOV T232, C CLR TF0 DJNZ R7, TX_LOOP JNB TF0, $ SETB T232; stoppbit CLR TF0 JNB TF0, $ RET det kanske hjälper u BR. |
|
| Tillbaka till toppen | |
 |
fireplus
Anställd: 31 oktober 2003 Inlägg: 195 Hjälpt: 5
| 04 mars 2004 3:29 Re: Skapa UART med Software (inte användas SBUF) för 8051 | | |
|
| Försök att
[hr: 5c6e3c7296] Brand i tråd: SM2:
|
|
| Tillbaka till toppen | |
 |
Ajay
Anställd: 29 februari 2004 Inlägg: 31
| 08 mars 2004 12:28 Re: Skapa UART med Software (inte användas SBUF) för 8051 | | |
|
| | J_expoler2 skrev: | Hej Jag har en uppfattning UART men skicka uppgifter endast med hjälp av timer 0 bitars T232 som TXD MOV TMOD, # 22H MOV TH0, # 70H MOV TL0, # 70H SETB EA SETB ET0 SETB TR1 ; ; ; ; funktion skicka data: CLR T232; startbit SETB TR0 MOV R7, # 8
TX_LOOP: RRC A JNB TF0, $ MOV T232, C CLR TF0 DJNZ R7, TX_LOOP JNB TF0, $ SETB T232; stoppbit CLR TF0 JNB TF0, $ RET det kanske hjälper u BR. |
Detta är bara bra för överföring. Problemet kommer när du försöker att ta emot också. Först av allt, den här metoden kommer aldrig att arbeta för full duplex operation såvida du inte använder två olika timers.
Dessutom, för att ta emot, du kommer att behöva använda en maskin avbryta som just starta timern vid rätt tidpunkt och sedan hjälper flytta data. Återigen, detta är bara bra som en halv duplex kommunikation.
En annan komplexitet kommer från det faktum att avbryta rutiner bli lång och kommer att orsaka problem med försvunna bitar. Tänk på att felet kommer att samlas under en längre tid!
Det bästa sättet är att använda ett chip som har mer serieportarna (ARM, uPSD från ST etc.)
Ajay |
|
| Tillbaka till toppen | |
 |