本帖最后由 涵潇舒雅 于 2013-9-11 13:56 编辑
由于开发板还没有到,我用的是isis仿真器,我的发送没有问题,能够发送数据,其实到底有没有发送我也不确定,只是能够进入中断,
这是发送的中断函数
void interrupt isr()
{
if(RBIE==1&&RBIF==1)
{
while(RB4); //只有当按钮被释放时才往下执行
a=1;
set_led(0);
PORTB=PORTB;
RBIF=0;
}
if(TXIE==1&&TXIF==1)
{
set_led(2);
TXIF=0;
}
}
关于接收的串口的配置
void init_RC()
{
SPEN=1;//串口使能位
SYNC=0;//选择异步模式
BRGH=1;//高速
SPBRG=0X19;//设置波特率
RX9=0;//允许接收8位数据
SREN=0;//异步模式无效
TXIE=0;//关闭发送中断
TXEN=1;//允许发送?好像只有这样才能打开串口
CREN=1;//使SCI工作在接收器方式
RCIF=0;
RCIE=1;//使能接受中断
}
下面是我的主函数void main()
{
TRISA=0;//A设置为输出
init_RC();
PIR1=0;//清空所有标志位
PEIE=1;
GIE=1;
set_led(3);
while(1)
{
if(payload==1)
{
set_led(3);
payload=0;
}
}
}
void interrupt isr()
{
set_led(3);
if(RCIE==1&&RCIF==1)
{
payload=receive_byte();
set_led(3);
RCIF=0;
}
}
不知道问题出在那里?不知道是仿真器的问题还是我自己代码的问题,求指教
|