comunicare între microprocesoare folosind USART

S

shaneelal

Guest
Hi, I'm folosind două microcontrolere PIC 18F452 în două dispozitive că eu sunt de construcţii.Un microcontroler trebuie să transmită un microcontroler de lectură pentru a doua.Im 'folosire USART de punere în aplicare RS-232.Primul dispozitiv transmite bine, am verificat de ieşire folosind HyperTerminal a PC-ului.
Eu nu pot citi şirul de caractere pe care le-am trimis la microcontroler al doilea.PIC două chiar a pãstra de aşteptare şi de aşteptare pentru datele care urmează să fie primite.
Im 'folosire compilator mcc18.Este posibil să comunice între PICS folosind USART în modul asincron?
Acestea sunt extrase din codul meuconfiguraţia USART a dispozitivului de emisie
Cod:

OpenUSART (USART_TX_INT_OFF & USART_RX_INT_OFF &

USART_ASYNCH_MODE & USART_EIGHT_BIT &

USART_BRGH_HIGH &

USART_CONT_RX, 25);
 
Încercaţi să folosiţi o întrerupere pe bază de rutina pentru a vedea dacă întrerupere este ardere.Tu nu s-au enumerate chiar codul pentru rutina dvs. cele mai importante, cele USART.

 
Am luat-o la locul de muncă.Voi arăta ambele seturi de codul meu de lucru.I liniştit nevoie de ajutor cu ceva.cod al aparatului de emisie

Cod:# include <p18f452.h>

# include <timers.h>

# include <xlcd.h>

# include <delays.h>

# include <stdlib.h>

# include <usart.h>

# include <string.h>/ * Biţi Set de configurare pentru a fi utilizate cu ICD2 / PICDEM2 PLUS Demo Board:

* - Set oscilator XT

* - Timer nu fi de acord watchdog

* - De programare nu fi de acord de joasa tensiune

* /

config # Pragma ROMDATA

_CONFIG_DECL (_CONFIG1H_DEFAULT & _OSC_XT_1H,

_CONFIG2L_DEFAULT,

_CONFIG2H_DEFAULT & _WDT_OFF_2H,

_CONFIG3H_DEFAULT,

_CONFIG4L_DEFAULT & _LVP_OFF_4L,

_CONFIG5L_DEFAULT,

_CONFIG5H_DEFAULT,

_CONFIG6L_DEFAULT,

_CONFIG6H_DEFAULT,

_CONFIG7L_DEFAULT,

_CONFIG7H_DEFAULT);

# ROMDATA PragmaDelayFor18TCY (void)

(

NOP ();

NOP ();

NOP ();

NOP ();

NOP ();

NOP ();

NOP ();

NOP ();

NOP ();

NOP ();

NOP ();

NOP ();

)void DelayPORXLCD (void)

(

Delay1KTCYx (60); / / întârziere de 15ms

return;

)void DelayXLCD (void)

(

Delay1KTCYx (20); / / întârziere de 5ms

return;

)void main ()

(

int unsigned time100;

unsigned int count;

distanţa unsigned int = 110;

Viteza unsigned int;

str. char [8];

unităţi char [10] = "mm, persec";

char clar [20] = "";

lungime int = 0;

cnt int = 0;LCD / / configure externe

OpenXLCD (FOUR_BIT & LINES_5X7); / / patru modul de biţi, mai multe linii de afişare

/ / Configure timer0, folosite pentru sincronizare

OpenTimer0 (TIMER_INT_OFF & / / întrerupe off

T0_16BIT & / / 16bit modul de

T0_SOURCE_INT & / / sursă internă de ceas

T0_PS_1_256); / / 1:256 prescale/ / Configure timer1, folosit de numărare a impulsurilor

OpenTimer1 (TIMER_INT_OFF & / / întrerupe off

T1_16BIT_RW & / / 16-bit modul de

T1_SOURCE_EXT & / / sursa externă de ceas, că este impulsurile de intrare

T1_PS_1_1 & / / 1:1 prescale

T1_OSC1EN_OFF & / / oscilator nu fi de acord Timer1

T1_SYNC_EXT_OFF);

viteza = 0;

în timp ce (1)

(time100 = 0;

count = 0;WriteTimer1 (0); / / restart timer1

WriteTimer0 (0); / / restart timer0în timp ce (ReadTimer1 () <100)

()

Viteza = ReadTimer0 ();Viteza = distanţa / (viteza / 65536.0 * 16.777);ultoa (viteză, str.); / / viteză pentru a converti string (USART poate să accepte numai şir)

/ / conversia unei pe 16 biţi a semnat un şir întreg de

lungime = strlen (str);

pentru (CNT = lungimea; cnt <7; cnt)

(

str [cnt] = '';

)

str. [7] = '\ 0';

în timp ce (BusyXLCD ());

SetDDRamAddr (0x14);

în timp ce (BusyXLCD ());

putsXLCD (clare);

în timp ce (BusyXLCD ());

SetDDRamAddr (0x14);

în timp ce (BusyXLCD ());

putsXLCD (STR);

în timp ce (BusyXLCD ());

SetDDRamAddr (0x1C);

în timp ce (BusyXLCD ());

putsXLCD (unităţi);OpenUSART (USART_TX_INT_OFF & USART_RX_INT_OFF &

USART_ASYNCH_MODE & USART_EIGHT_BIT &

USART_BRGH_HIGH &

USART_CONT_RX, 25);

în timp ce (BusyUSART ());putsUSART (STR); / / string situate în memoria de date

CloseUSART ();))
 
A se vedea hardware-ul, de genul asta?
Masud
http://geocities.com/matrixele/mypage
Ne pare rau, dar ai nevoie de login pentru a vizualiza această ataşament

 

Welcome to EDABoard.com

Sponsor

Back
Top