prob med UART i pic 16f877a

S

sivaramakrishna

Guest
Hai til alle,

Nu forsøger at kommunikere fra pic 16f877a til pc'ens HyperTerminal på 9600 baud rate.Iam udstationering min kode til dette.
IAM i stand til at simulere med MPLAB men jeg kunne ikke gennemføre med hardware.Jeg kontrolleret for max232, RS232.De ser ud til at virke perfekt.Men IAM ikke at få data via HyperTerminal comm port.

Min krystal oscillator er 8MHz./ * UART seriel kommunikation ved 9600 baud rate * /
/ * spbrg = (8MHz / (9600) / 16) -1 * /

# include <pic.h>
/ / unsigned char data [6] = "fabmax";
unsigned char i;
/ * void interrupt ISR (void)
(
if (TXIF == 1)
(

for (i = 0; i <= 5; i )
TXREG = data ; / / overførte data
)
if (RCIF == 1)
(
for (i = 0; i <= 5; i )
data = RCREG; / / modtagne data
)
) * /
void main (void)
(
/ / Unsigned char data [6] = "fabmax";
unsigned char i;
TRISC6 = 0;
TRISC7 = 1;
SPBRG = 0x33; / / for 9.600 baoud sats
/ / GIE = 1;
/ / PEIE = 1;
BRGH = 1;
Spen = 1; / / serial comm aktiveret
SYNC = 0; / / synkrontilstand handicappede
/ / TXIE = 1;
/ / RCIE = 1;
TXEN = 1; / / transmission aktiveret
/ / RCEN = 1;
while (1)
(
TXREG = 'f';
TXREG = 'Z';
)
)

 
Hai,
tak for idéen.Men jeg prøvede med denne kode og også gjorde det muligt for GIE OG PEIE.Men jeg kunne stadig overføre data ....
Please help me out.

Tak på forhånd

 
HAI,

Løsningen for de ovennævnte problem med det stykke kode nedenfor:
Kode:

# include <pic.h>__CONFIG (HS & PWRTEN & WDTDIS & LVPDIS & BOREN & DEBUGDIS);void main (void)

(

unsigned char ch [7] = "fabmax";

unsigned char i;

/ * Indstil IO ben.
* /

TRISC6 = 1;

TRISC7 = 1;/ * Set baud rate.
* /

SPBRG = 51 / / 9600 på 8MHz

/ / SPBRG = 129 / / 9600 på 20MHz

BRGH = 1;/ * Vælg asynchron tilstand.
* /

SYNC = 0;/ * Aktiver transmission .* /

TX9 = 0; / / 8 bit transmission

TXEN = 1; / / tx aktiveret/ * Aktiver døgnet .* /

RX9 = 0; / / 8 recption

CREN = 1; / / rx aktiveret/ * Aktiver UART modul .* /

Spen = 1;while (1)

(

for (i = 0; i <= 6; i )

(

/ / While (! RCIF); / / vente på at modtage en byte

/ / Ch = RCREG;

while (! TXIF); / / vente på nuværende transmition til ende

TXREG = ch ;

)

)

)
 

Welcome to EDABoard.com

Sponsor

Back
Top