Software UART Problem na PIC18F452

S

saeed_pk

Guest
JA pokušao bitbang VA postupak u uzorcima PICC na PIC16F877A, kada sam pokušao da ga koristi za PIC18F452 to ne radiPrevodilac Used:
Hi-Tech PICC za 16F877A
Hi-Tech PICC-18 za 18F452
ugoditi pomoć ..
Code:/ *

* Serijski port driver (koristi bitovno banging)

* Za 16Cxx serija dijelova.

*

* VAŽNO: kompajlirati tu datoteku s punim optimizacija

*

* Copyright (C) 1996 HI-TECH softver.

* Slobodno raspodjeljive.

* /

# uključiti <pic.h>

/ *

* Uskladljiv parametri

* // * Slati i primati port bits * /

# define SERIAL_PORT PORTC

# define SERIAL_TRIS TRISC

# define TX_PIN 6

# define RX_PIN 7/ * Xtal frekvencija * /

# define XTAL 4000000/ * Baud rate * /

# define BRATE 9600/ * Ne mijenjaj ništa drugo * /

# define djelitelj 10000000

# define ITIME 4 * djelitelj / XTAL / * vremena * Naputak ciklusu /

# ako BRATE> 1200

# define DLY 3 / * ciklusima po null petlja * /

# define TX_OHEAD 13 / * dometnut ciklusima po petlja * /

# else

# define DLY 9 / * ciklusima po null petlja * /

# define TX_OHEAD 14

# endif

# define RX_OHEAD 12 / * primatelj dometnut po petlja * /# define kašnjenje (ohead) (((djelitelj / BRATE) - (ohead * ITIME)) / (DLY * ITIME))statički bitni TxData @ (nepotpisano) & SERIAL_PORT * 8 TX_PIN; / * Karta TxData da ukosnicu * /

statički bitni RxData @ (nepotpisano) & SERIAL_PORT * 8 RX_PIN; / * Karta RxData da ukosnicu * /

# define INIT_PORT SERIAL_TRIS = 1 <<RX_PIN / * postavljanje I / O smjeru * /praznina

putch (pougljiti c)

(

nepotpisani pougljiti bitno;

# ako BRATE> 1200

nepotpisani pougljiti dly;

# else

nepotpisani int dly;

# endifINIT_PORT;

TxData = 0; / * start bita * /

bitno = 12;

do (

dly = kašnjenje (TX_OHEAD); / * pričekate jedan zalogaj put * /

učiniti

/ * Čekaju kašnjenje u petlji * /;

a (- dly);

if (c & 1)

TxData = 1;

if (! (c & 1))

TxData = 0;

c = (c>> 1) | 0x80;

) A (- bitno);

NOP ();

)pougljiti

getch (void)

(

nepotpisani pougljiti c, bitno;

# ako BRATE> 1200

nepotpisani pougljiti dly;

# else

nepotpisani int dly;

# endiffor (;) (

dok (RxData)

nastavi; / * čekaj bitni za početak * /

dly = kašnjenje (3) / 2;

učiniti

/ * Čekaju kašnjenje u petlji * /;

a (- dly);

if (RxData)

nastavi; / * twas samo šum * /

bitno = 8;

c = 0;

do (

dly = kašnjenje (RX_OHEAD);

učiniti

/ * Čekaju kašnjenje u petlji * /;

a (- dly);

c = (c>> 1) | (RxData <<7);

) A (- bitno);

povratak c;

)

)pougljiti

getche (void)

(

pougljiti c;putch (c = getch ());

povratak c;

)
 
Bok

Gleda IAR site www.IAR.com aplikaciju za bilješke

tamo je lijepo primjenu bilješku o softveru uart sa c jezični kod

Uz malo truda može se pretvoriti u rad na bilo kojem mikro

Sve najbolje

Bobi

 

Welcome to EDABoard.com

Sponsor

Back
Top