Software UART Problem om PIC18F452

S

saeed_pk

Guest
Jeg va forsøgt BitBang fremgangsmåden i prøver af PICC om PIC16F877A, da jeg forsøgte at udnyttede det til PIC18F452 det ikke virkerCompiler Brugt:
Hi-Tech PICC for 16F877A
Hi-Tech PICC-18 for 18F452
Please help ..
Code:/ *

* Serial port driver (bruger bit-slå)

* For 16Cxx række dele.

*

* VIGTIGT: Compile denne fil med Fuld optimering

*

* Copyright (C) 1996 Hi-Tech Software.

* Let udloddes.

* /

# include <pic.h>

/ *

* Tunable parametre

* // * Sende og modtage havn bits * /

# define SERIAL_PORT PORTC

# define SERIAL_TRIS TRISC

# define TX_PIN 6

# define RX_PIN 7/ * Xtal frekvens * /

# define XTAL 4000000/ * Baudhastighed * /

# define BRATE 9600/ * Du må ikke ændre noget som helst andet * /

# define Scaler 10000000

# define ITIME 4 * Scaler / XTAL / * Instruction cyklustid * /

# hvis BRATE> 1200

# define DLY 3 / * cyklusser pr null loop * /

# define TX_OHEAD 13 / * overhead cyklusser pr loop * /

# ellers

# define DLY 9 / * cyklusser pr null loop * /

# define TX_OHEAD 14

# endif

# define RX_OHEAD 12 / * Modtagers overhead pr loop * /# define DELAY (ohead) (((Scaler / BRATE) - (ohead * ITIME)) / (DLY * ITIME))statisk bit TxData @ (usignerede) & SERIAL_PORT * 8 TX_PIN; / * Kort TxData til bens * /

statisk bit RxData @ (usignerede) & SERIAL_PORT * 8 RX_PIN; / * Kort RxData til bens * /

# define INIT_PORT SERIAL_TRIS = 1 <<RX_PIN / * oprettet I / O retning * /void

kup (char c)

(

usignerede CHAR bitno;

# hvis BRATE> 1200

usignerede CHAR dly;

# ellers

usignerede int dly;

# endifINIT_PORT;

TxData = 0; / * start bit * /

bitno = 12;

do (

dly = forsinkelse (TX_OHEAD); / * vente en smule tid * /

gøre

/ * Venter i forsinkelse loop * /;

mens (- dly);

if (c & 1)

TxData = 1;

if (! (C & 1))

TxData = 0;

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

) Mens (- bitno);

NOP ();

)CHAR

getch (void)

(

usignerede char c, bitno;

# hvis BRATE> 1200

usignerede CHAR dly;

# ellers

usignerede int dly;

# endiffor (;;) (

while (RxData)

fortsætte; / * vente for start bit * /

dly = DELAY (3) / 2;

gøre

/ * Venter i forsinkelse loop * /;

mens (- dly);

if (RxData)

fortsætte; / * twas bare støj * /

bitno = 8;

c = 0;

do (

dly = forsinkelse (RX_OHEAD);

gøre

/ * Venter i forsinkelse loop * /;

mens (- dly);

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

) Mens (- bitno);

tilbagevenden c;

)

)CHAR

getche (void)

(

char c;kup (c = getch ());

tilbagevenden c;

)
 
Hej

Ser på IAR site www.IAR.com for anvendelsen note

der er en pæn ansøgning notat om software UART med c sprogkode

Med en lille indsats kan konverteres til at arbejde på alle mikro

Alle de bedste

Bobi

 

Welcome to EDABoard.com

Sponsor

Back
Top