烧死单片机?

2020-02-02 09:16发布

我在程序中如下写,
烧了一次之后就烧录不了,
int main()
{
        Init_MCU();       

                   Send_RS232_PC_Byte(0x01);
        Send_RS232_PC_Byte(0xa1);

        while(1){
          ;
        }
       
        return 0;
}

void INT0_PRG() interrupt 0         
{
        if (TH0 > 0x13){                         //开始
                IRByteCount = 0;         
                IRBitCount = 0;
                Send_RS232_PC_Byte(TH0);
        }else if(( TH0 < 0x10)&&(TH0 > 0x03)){
                 Send_RS232_PC_Byte(TH0);
               
            }
        }  
        TH0 = 0x00; //Clear Counter
        TL0 = 0x00;

}

重新换一个mcu(51核)就可以烧了,


现在有点疑惑,1,是不是我这样写上mcu不能再烧了,还是有其他原因,(程序应该还是在跑,因为我开启了外中断,并在外中断中打印数据到串口中,)
              2,以前只知道用烧录口的第二功能的话,烧一次下次这个烧录口就不能用了,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
xujianglun1
2020-02-03 14:08
        if (TF0) TF0 = 0;

        if (TH0 > 0x13){
                Send_RS232_PC_Byte(TH0);
                IRByteCount = 0;         
                IRBitCount = 0;
               
        }else if(( TH0 < 0x10)&&(TH0 > 0x03)){
                Send_RS232_PC_Byte(TH0);        
               
                /*
                IRShift = IRShift >> 1;                             //右移一位,接收低电平在前
                if (TH0 > 0x07){
                    //Send_RS232_PC_Byte(TH0);
                    IRShift = IRShift | 0x80;         //检测电平时间超过0x0d就确定为 1                         或运算;只要有一个为1就为1
                }else{
                    //Send_RS232_PC_Byte(TH0);
                    IRShift = IRShift & 0x7f;          //参与运算的两个位都为1则为1       
                }

                IRBitCount++;
                if (IRBitCount == 7){                       
                        IRBuff[IRByteCount] = IRShift;
                        IRShift = 0;
                        IRByteCount++;                       
                        #if(_FLAG)
                        Send_RS232_PC_Byte(IRBuff[0]);
                        //Send_RS232_PC_Byte(0x01);
                        #endif
                }
                if(IRBitCount == 11){                            
                   IRBuff[IRByteCount] = IRShift;
                   IRShift = 0;
                   IRByteCount++;                          
                   #if(_FLAG)
                   Send_RS232_PC_Byte(IRBuff[1]);
                   //Send_RS232_PC_Byte(0x02);
                   #endif
                 
            }  */
        }
        TH0 = 0x00;
        TL0 = 0x00;  

确切地说是加了上面的代码mcu就烧不了,
是注式掉的那部分加上就不能烧录了,

一周热门 更多>