智能车制作

标题: 程序问题 望帮忙 [打印本页]

作者: lhqc212    时间: 2009-10-14 11:50
标题: 程序问题 望帮忙
本帖最后由 chenrunshe_007 于 2009-11-16 17:41 编辑

我的程序单步运行没问题,可是连续运行就不可控,串口中断如上,就是将寄存器的值读出,然后判断,符合条件后调用那几个函数,Start里面是判断字符串,符合的话进入RTI中断开始计时,我就是按这个思路做的,可是出现不可控的情况,不知道是我程序哪里的问题,希望各位前辈指点一下!我已经纠结很久了......
  1. interrupt void SCI1_ISR(void)
  2. {   
  3.    byte iRece,receData;
  4.    receData = SCI1SR1;
  5.    receData = SCI1DRL;
  6.    ReceBuffer[fram_num++] = receData;
  7.    
  8.    if(fram_num == 1){
  9.    if(ReceBuffer[0] != 0x26) fram_num = 0;
  10. }
  11.    else if(fram_num == 2){
  12.    if(ReceBuffer[1] != 0x30) fram_num = 0;
  13. }
  14.   if(fram_num == 3){
  15.    if(ReceBuffer[2] != 0x31) fram_num = 0;
  16.   }
  17.    for(iRece = 3;iRece < 16;iRece++){
  18.       if(ReceBuffer[iRece] == 0x0d){
  19.          fram_num = 0;
  20.          Start();
  21.          Stop();
  22.          Standard();
  23.          Thinner();
  24.          Wash();
  25.       }
  26.    }
  27. }

  28. void Start(void) {
  29.   a=0;
  30.   if(start[a]==ReceBuffer[a]){
  31.     a++;
  32.     if(a == 9){
  33.      count = 0;
  34.      sec = 0;
  35.      min = 0;
  36.      CRGINT = 0x80;
  37.     }
  38.   }
  39. }
复制代码

作者: zdhly0401    时间: 2009-10-14 12:09
1# lhqc212
清中断标志没
作者: lhqc212    时间: 2009-10-15 08:09
清了呀
作者: lhqc212    时间: 2009-10-15 08:38
读SCISR1不是清标志位的么?
作者: chiusir    时间: 2009-10-15 19:29
void start(void) ---------void main(void)---------没看明白你的程序,最好附上完整的。
作者: lhqc212    时间: 2009-10-16 10:47
5# chiusir
我把程序发来了。。。程序是要通过串口接收数据,然后比较是否与原来设定的字符串相同,再做动作,其他控制都没有问题了,就是没有处理没用的代码,现在就是串口接收中断和判断这边,总是不能很好的控制,而且如果想回发的话也不可以,我用的是232-485串口,真的很纠结~~~~~~~~~




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2