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;
)
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;
)