PIC16F877A的串口及捕获问题
时间:10-02
整理:3721RD
点击:
想通过这段中断程序来控制定时器1的捕获,但是发现只能接收一次串口的指令,不知道哪里有问题,还望大神指点一下~
oid interrupt usart(void)
{
if(RCIE&&RCIF) //判断是否为串口接收中断
{
RD0=!RD0;
stage4=stage3;
stage3=RCREG;
if((stage4==0XFE)&&(stage3==0X68))
{ begin=1;j=0; }
if(begin==1)
{
receive[j++]=stage3;
if((receive[j-1]==0X16)&&(j==9))
{ begin=0;j=0;
data=receive[3];
if((receive[1]==0x13)&&(receive[3]==0x01))
ccpint();
if((receive[1]==0X13)&&(receive[3]==0x00))
PIE1=0x00;
}
if(j==20)
{ j=0; begin=0;}
}}
if(CCP1IF==1)
{ CCP1IF=0;
counter++;
RD4=!RD4;
TXREG=counter;
}
}
oid interrupt usart(void)
{
if(RCIE&&RCIF) //判断是否为串口接收中断
{
RD0=!RD0;
stage4=stage3;
stage3=RCREG;
if((stage4==0XFE)&&(stage3==0X68))
{ begin=1;j=0; }
if(begin==1)
{
receive[j++]=stage3;
if((receive[j-1]==0X16)&&(j==9))
{ begin=0;j=0;
data=receive[3];
if((receive[1]==0x13)&&(receive[3]==0x01))
ccpint();
if((receive[1]==0X13)&&(receive[3]==0x00))
PIE1=0x00;
}
if(j==20)
{ j=0; begin=0;}
}}
if(CCP1IF==1)
{ CCP1IF=0;
counter++;
RD4=!RD4;
TXREG=counter;
}
}
其中从串口发过来的指令是FE 68 13 68 01 00 00 00 00 16,关键指令就在第五位上。
学习中,多谢分享。
额,这个略有问题,我还等着大神来帮我呢~
这个论坛怎么就没人帮忙的,看来完事还得靠自己啊~
万事得靠自己呀~
自己的问题真的得自己动手,顺利解决,并没有想象中的那么难嘛~
顶!d=====( ̄▽ ̄*)b
下次发代码 最好把注释写上 都不知道你要实现什么功能 怎么分析
另外:看别人代码 很痛苦的
不错,过来看看,浏览一下。
谢谢,小编提供的场地。
MICROCHIP 原装正品,另有可替换单片机(无需修改PCB资料,程序可共用PIC的) 有用到的兄弟多多支持! 电话13430885511(微信同号),QQ2355910801