Ответ: Смотри
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Entuziast 16 октября 2004 г. 18:21
В ответ на: лучше приведи свою инициализацию и процедуру передачи отправлено ы 16 октября 2004 г. 18:00

//#include
#include
#include
#include
#include /* for 'Delay10KTCYx' */
#include /* for 'PORTB' and 'TRISB' */

void main( void ){
char RxByte_UART = 0;
char TxByte_UART = 0;
char RxByte_SPI = 0;
char TxByte_SPI = 0;



/************ Port's Direction Definition *********************/

/*Port A bits 1...5 as outputs; bits 0&6 not in use in EvBrd */
TRISAbits.TRISA1 = 0;
TRISAbits.TRISA2 = 0;
TRISAbits.TRISA3 = 0;
TRISAbits.TRISA4 = 0;
TRISAbits.TRISA5 = 1;/*SSP -SS pin*/

/*Port B: bits0...3 as inputs */
TRISBbits.TRISB0 = 1;
TRISBbits.TRISB1 = 1;
TRISBbits.TRISB2 = 1;
TRISBbits.TRISB3 = 1;
/*Bits 4...7 not in use at the moment, so they are OUT*/
TRISBbits.TRISB4 = 0;
TRISBbits.TRISB5 = 0;
TRISBbits.TRISB6 = 0;
TRISBbits.TRISB7 = 0;
/*Port C as */
TRISCbits.TRISC0 = 0;
/*Bits 1&2 not in use at the moment, so they are OUT*/
TRISCbits.TRISC1 = 0;
TRISCbits.TRISC2 = 0;
/*SSP pins*/
TRISCbits.TRISC3 = 0;
TRISCbits.TRISC4 = 1;
TRISCbits.TRISC5 = 0;
/*USART pins*/
TRISCbits.TRISC6 = 0;
TRISCbits.TRISC7 = 1;


TRISD = 0;/*Port D as output*/
TRISE = 0;/*Port E as output*/


LATA = 0; /*Clear Latch*/
LATB = 0; /*Clear Latch*/
LATC = 0; /*Clear Latch*/
LATD = 0; /*Clear Latch*/
LATE = 0; /*Clear Latch*/


/*OUT PORTS Default value*/
PORTA = 0xFF;
PORTC = 0x00;
PORTD = 0xFF;
PORTE = 0xFF;
PORTEbits.RE2 = 0;

// configure USART:19200,NoParity,8_DataBits,1 Stop Bit
OpenUSART( USART_TX_INT_OFF &
USART_RX_INT_OFF &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX,
12 );

OpenSPI(SPI_FOSC_16,
MODE_11,
SMPMID);
PIR1bits.SSPIF = 0;/*Reset TxRxComplFlag*/

/*FXO reset*/
TRISEbits.TRISE0 = 0;
PORTEbits.RE0=1;
Delay1KTCYx(5); /* pause for a moment (5 * 1,000 cycles) */
PORTEbits.RE0=0;
Delay1KTCYx(3); /* pause for a moment (3 * 1,000 cycles) */
PORTEbits.RE0=1;

while( 1 ){

if ( DataRdyUSART() ){
RxByte_UART = ReadUSART();
PORTDbits.RD4 = 0;
WriteSPI(RxByte_UART);
while (!(PIR1bits.SSPIF));
PIR1bits.SSPIF = 0;
PORTDbits.RD4 = 1;
Delay1KTCYx(1); /* pause for a moment (1 * 1,000 cycles) */
PORTDbits.RD4 = 0;
//WriteUSART(RxByte_UART);
}/*if ( DataRdyUSART())*/

if ( DataRdySPI() ){
RxByte_SPI = ReadSPI();
while (!(PIR1bits.SSPIF));
PIR1bits.SSPIF = 0;
PORTDbits.RD4 = 1;
while (BusyUSART());
WriteUSART(RxByte_SPI);
}/*if (DataRdySPI())*/

}/*while(1)*/

CloseSPI();
CloseUSART();
}/*main*/

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru