#define uchar unsigned char//宏定义
#define uint unsigned int
__CONFIG(0x3b31)//设置配置位
void init()
void main()
{
init()
TXREG=0x31//发送寄存器发送0x31对应的’叫什么码的‘就是1这一步是指一上电或复位时会先发送一个数检验是否有发送及接收
while(!TRMT)//判断TRMT是否自动置1,如果为1则说明发传送完毕,取反退出if循环
while(1)//停在此等待电脑给单片机发送数据
}
void init()
{
TRISC=0xff//注意这里一定要设置RC端口为输入状态,输入是一个高阻态如果设为输出则会不停地发送
//当设置了串口模式后会自动输出输入,不用理会其值
TXSTA=0x24//设置发送状态寄存器选择异步串口传输和高速波特率
RCSTA=0x90//设置接收状态寄存器选择8位传输
SPBRG=25//写十进制或十六进制都可以,设置x的值是25则波特率为9600
GIE=1//开总中断
PEIE=1//开外设中断
RCIE=1//接收中断使能置1,因为接收用中断法,发送不用
}
void interrupt com()
{
if(RCIE&&RCIF)//如果串行接收使能为1允许并且标志为1置位溢出,则要把接收到的数据发送走,或者直接判断RCIF标志位if(RCIF==1)也可以
{
TXREG=RCREG//要把接收到寄存器的数据附给发送寄存器
while(!TRMT)//判断TRMT是否自动置1,如果为1则说明发传送完毕,取反退出if循环
}
}
你是通过USB转串口线接收PIC串口数据的是把.这种USB转串口线是让电脑模拟一个串口的. 不是真正的串口. 通信时候,数据是暂存在USB转串口线上转换芯片的缓冲区,如果你发的太多.就有可能会出现数据都挤在串口线中转换芯片里的缓冲区. 所以拔下来,电脑还能收到数据.欢迎分享,转载请注明来源:内存溢出
评论列表(0条)