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