|
下面是小弟写的程序:
#include "Allinclude.h"
/**********************************宏定义*************************************/
#pragma config OSC = INTOSC
#pragma config WDTEN = OFF
#define uchar unsigned char
#define uint unsigned int
//中断声明
void PIC18F_High_isr (void);
void PIC18F_Low_isr (void);
#pragma code high_vector_section=0x8
void high_vector (void)
{
_asm goto PIC18F_High_isr _endasm
}
#pragma code low_vector_section=0x18
void low_vector (void)
{
_asm goto PIC18F_Low_isr _endasm
}
#pragma code
//变量
uchar j;
uchar sendflag=0;
unsigned char LCDBuffer[2];
//系统时钟
void InitClok()
{
OSCCON=0x70;
}
//串口配置
void InitUart()
{
TRISCbits.TRISC7=1;
TRISCbits.TRISC6=1; // Set output for TXD
BAUDCON1bits.BRG16=0; //8位波特率发生器
TXSTA1bits.TX9=0; //选择8位发送
TXSTA1bits.TXEN=1; //发送使能
TXSTA1bits.SYNC=0; //异步模式
TXSTA1bits.BRGH=1; //高速模式
RCSTA1bits.SPEN=1; //使能串口
RCSTA1bits.RX9=0; //选择8位接收
RCSTA1bits.CREN=1; //接受数据允许
SPBRG=51; //波特率9600,8MHZ,0,1
}
//中断初始化
void Interrupt_Init()
{
PIE1bits.RCIE=1; //允许USART接收中断
PIR1bits.RCIF=0; //清USART接收中断标志
RCONbits.IPEN=0; //低优先级中断
INTCON |= 0xC0; //CPU开中断并允许外设中断
}
//发送数据
void putch(unsigned char byte) //发送一个字节的数据
{
TXREG = byte;
while(TXSTA1bits.TRMT==0)
{
Delay1KTCYx(10);
}
return;
}
//主函数
void main(void)
{
InitClok();
InitUart();
Interrupt_Init();
while(1)
{
if(sendflag==1)
{
sendflag=0;
for(j=0;j<2;++j)
{
putch(LCDBuffer[j]);
}
}
}
}
/******************************---高优先级中断服务程序---*************************/
#pragma interrupt PIC18F_High_isr
void PIC18F_High_isr (void)
{
if(PIR1bits.RCIF&&PIE1bits.RC1IE)
{
LCDBuffer[j]=RCREG; //保存每一次接收到的数?
++j;
if(j>2)
{
sendflag=1;
j=0;
}
}
}
/******************************---低优先级中断服务程序---**************************/
#pragma interruptlow PIC18F_Low_isr
void PIC18F_Low_isr (void)
{
}
芯片用的是PIC18F66J90 串口通信中 串口调试助手是截图 如下 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|