1-ый вариант
#include <p18cxxx.h>
#include <delays.h>
#include <usart.h>
#include <timers.h>
#pragma config FOSC=XT//INTIO2
#pragma config PLLCFG=ON
#pragma config FCMEN=OFF
#pragma config IESO=OFF
#pragma config PWRTEN=OFF
#pragma config BOREN=OFF
#pragma config BORV=3
#pragma config WDTEN=OFF
#pragma config WDTPS=32768
#pragma config MCLRE=OFF
#pragma config STVREN=ON
#pragma config XINST=OFF
#pragma config CP0=OFF
#pragma config CP1=OFF
#pragma config CPB=OFF
#pragma config CPD=OFF
#pragma config WRT0=OFF
#pragma config WRT1=OFF
#pragma config WRTC=OFF
#pragma config WRTB=OFF
#pragma config WRTD=OFF
#pragma config EBTR0=OFF
#pragma config EBTR1=OFF
//**********************************************************
#pragma udata
char test[13]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd};
//*********************************************************
#pragma code
void PutMsgUSART(char*);
void main(void)
{
ADCON1=0;
ADCON1=0x0f;
baud1USART(BAUD_IDLE_CLK_LOW & BAUD_8_BIT_RATE & BAUD_WAKEUP_OFF & BAUD_AUTO_OFF);
Open1USART( USART_TX_INT_OFF&USART_RX_INT_ON&USART_ASYNCH_MODE
&USART_EIGHT_BIT &USART_CONT_RX &USART_BRGH_HIGH,25);//9600
while(1)
{
PutMsgUSART(test);
Delay10KTCYx(0);
Delay10KTCYx(0);
}
}
void PutMsgUSART(char *str)
{
int i;
for(i=0;i<13;i++)
{
while(!TXSTA1bits.TRMT);
putc1USART(str[i]);
}
}
2-ой вариант:
/*
Внутренняя тактовая частота 16 МГц. Скорость передачи 9600 бод. Формула
For a device with FOSC of 16 MHz, desired baud rate of 9600, Asynchronous mode, and 8-bit BRG:
Desired Baud Rate = FOSC/(64 ([SPBRGHx:SPBRGx] + 1))
Solving for SPBRGHx:SPBRGx:
X = ((FOSC/Desired Baud Rate)/64) – 1 = ((16000000/9600)/64) – 1 = [25.042] = 25
Calculated Baud Rate = 16000000/(64 (25 + 1))= 9615
Error = (Calculated Baud Rate – Desired Baud Rate)/Desired Baud Rate = (9615 – 9600)/9600 = 0.16%
*/
#include <p18cxxx.h>
#include <delays.h>
#include <usart.h>
#include <timers.h>
#pragma config FOSC=INTIO2
#pragma config PLLCFG=ON
#pragma config FCMEN=OFF
#pragma config IESO=OFF
#pragma config PWRTEN=OFF
#pragma config BOREN=OFF
#pragma config BORV=3
#pragma config WDTEN=OFF
#pragma config WDTPS=32768
#pragma config MCLRE=OFF
#pragma config STVREN=ON
#pragma config XINST=OFF
#pragma config CP0=OFF
#pragma config CP1=OFF
#pragma config CPB=OFF
#pragma config CPD=OFF
#pragma config WRT0=OFF
#pragma config WRT1=OFF
#pragma config WRTC=OFF
#pragma config WRTB=OFF
#pragma config WRTD=OFF
#pragma config EBTR0=OFF
#pragma config EBTR1=OFF
//**********************************************************
#pragma udata
char test[13]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd};
//*********************************************************
#pragma code
void PutMsgUSART(char*);
void main(void)
{
ADCON1=0;
ADCON1=0x0f;
OSCCONbits.SCS0=0;
OSCCONbits.SCS1=0;
OSCCONbits.IRCF0=1;
OSCCONbits.IRCF1=1;
OSCCONbits.IRCF2=1;
OSCTUNEbits.PLLEN=1;
baud1USART(BAUD_IDLE_CLK_LOW & BAUD_8_BIT_RATE&BAUD_WAKEUP_OFF & BAUD_AUTO_OFF);
Open1USART( USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE
& USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_LOW,25);//9600
while(1)
{
PutMsgUSART(test);
Delay10KTCYx(0);
Delay10KTCYx(0);
}
}
void PutMsgUSART(char *str)
{
int i;
for(i=0;i<13;i++)
{
while(!TXSTA1bits.TRMT);
putc1USART(str[i]);
}
}
3-ий вариант:
/*
Внутренняя тактовая частота 4 МГц. Скорость передачи 9600 бод. Формула
For a device with FOSC of 16 MHz, desired baud rate of 9600, Asynchronous mode, and 8-bit BRG:
Desired Baud Rate = FOSC/(64 ([SPBRGHx:SPBRGx] + 1))
Solving for SPBRGHx:SPBRGx:
X = ((FOSC/Desired Baud Rate)/64) – 1 = ((4000000/9600)/16) – 1 = [25.042] = 25
Calculated Baud Rate = 4000000/(16 (25 + 1))= 9615
Error = (Calculated Baud Rate – Desired Baud Rate)/Desired Baud Rate = (9615 – 9600)/9600 = 0.16%
*/
#include <p18cxxx.h>
#include <delays.h>
#include <usart.h>
#include <timers.h>
#pragma config FOSC=INTIO2
#pragma config PLLCFG=OFF
#pragma config FCMEN=OFF
#pragma config IESO=OFF
#pragma config PWRTEN=OFF
#pragma config BOREN=OFF
#pragma config BORV=3
#pragma config WDTEN=OFF
#pragma config WDTPS=32768
#pragma config MCLRE=OFF
#pragma config STVREN=ON
#pragma config XINST=OFF
#pragma config CP0=OFF
#pragma config CP1=OFF
#pragma config CPB=OFF
#pragma config CPD=OFF
#pragma config WRT0=OFF
#pragma config WRT1=OFF
#pragma config WRTC=OFF
#pragma config WRTB=OFF
#pragma config WRTD=OFF
#pragma config EBTR0=OFF
#pragma config EBTR1=OFF
//**********************************************************
#pragma udata
char test[13]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd};
//*********************************************************
#pragma code
void PutMsgUSART(char*);
void main(void)
{
ADCON1=0;
ADCON1=0x0f;
OSCCONbits.SCS0=0;
OSCCONbits.SCS1=0;
OSCCONbits.IRCF0=1;
OSCCONbits.IRCF1=1;
OSCCONbits.IRCF2=1;
OSCTUNEbits.INTSRC=1;
OSCTUNEbits.PLLEN=0;
baud1USART(BAUD_IDLE_CLK_LOW & BAUD_8_BIT_RATE&BAUD_WAKEUP_OFF & BAUD_AUTO_OFF);
Open1USART( USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE
& USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH,25);//9600
while(1)
{
PutMsgUSART(test);
Delay10KTCYx(0);
Delay10KTCYx(0);
}
}
void PutMsgUSART(char *str)
{
int i;
for(i=0;i<13;i++)
{
while(!TXSTA1bits.TRMT);
putc1USART(str[i]);
}
}