Software UART Problem na PIC18F452

S

saeed_pk

Guest
I va potrudil bitbang postopek, podan v vzorcih picc na PIC16F877A, ko si se potrudil, da je v uporabi za PIC18F452 it doesn't workCompiler Used:
Hi-Tech picc za 16F877A
Hi-Tech picc-18 za 18F452
prosim pomoč ..
Code:/ *

* Serijska vrata voznika (uporablja bit-razbijati)

* Za 16Cxx serije dele.

*

* POMEMBNO: Compile this file z optimizacijo FULL

*

* Copyright (C) 1996 HI-TECH Software.

* Freely razdeljive.

* /

# include <pic.h>

/ *

* Nastavljiv parametri

* // * Pošiljanje in prejemanje pristanišče bitov * /

# define SERIAL_PORT PORTC

# define SERIAL_TRIS TRISC

# define TX_PIN 6

# define RX_PIN 7/ * Xtal frekvenca * /

# define XTAL 4000000/ * Baud stopnja * /

# define Brate 9600/ * Ne spreminjajte ničesar drugega * /

# define SCALER 10000000

# define ITIME 4 * SCALER / XTAL / * Navodila čas cikla * /

# if Brate> 1200

# define DLY 3 / * ciklov na null zanka * /

# define TX_OHEAD 13 / * voznih ciklov na loop * /

# else

# define DLY 9 / * ciklov na null zanka * /

# define TX_OHEAD 14

# endif

# define RX_OHEAD 12 / * Sprejemnik z vrha na loop * /# define DELAY (ohead) (((SCALER / Brate) - (ohead * ITIME)) / (DLY * ITIME))static bit TxData @ (unsigned) & SERIAL_PORT * 8 TX_PIN; / * Map TxData za pin * /

static bit RxData @ (unsigned) & SERIAL_PORT * 8 RX_PIN; / * Map RxData za pin * /

# define INIT_PORT SERIAL_TRIS = 1 <<RX_PIN / * ustanovljen I / O smeri * /void

Putch (char c)

(

unsigned char bitno;

# if Brate> 1200

unsigned char dly;

# else

unsigned int dly;

# endifINIT_PORT;

TxData = 0; / * začetek bitov * /

bitno = 12;

do (

dly = DELAY (TX_OHEAD) / * počakajte eno malo časa * /

narediti

/ * Čaka v zanki zamudo * /;

while (- dly);

if (c & 1)

TxData = 1;

if (! (c & 1))

TxData = 0;

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

) While (- bitno);

NOP ();

)char

getch (void)

(

unsigned char c, bitno;

# if Brate> 1200

unsigned char dly;

# else

unsigned int dly;

# endiffor (;;) (

while (RxData)

nadaljuje; / * čakati na začetek bitov * /

dly DELAY = (3) / 2;

narediti

/ * Čaka v zanki zamudo * /;

while (- dly);

if (RxData)

nadaljuje; / * twas samo hrup * /

bitno = 8;

c = 0;

do (

dly = DELAY (RX_OHEAD);

narediti

/ * Čaka v zanki zamudo * /;

while (- dly);

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

) While (- bitno);

vrnitev c;

)

)char

getche (void)

(

char c;Putch (c = getch ());

vrnitev c;

)
 
Živjo

Izgleda na mestu IAR www.IAR.com za uporabo note

je lepo opomba o uporabi programske opreme, UART s c koda jezika

Z majhno prizadevanje se lahko pretvori v delo na vseh mikro

Vse najboljše

Bobi

 

Welcome to EDABoard.com

Sponsor

Back
Top