一段很简单的代码,没有任何错误和警告,烧写下去跑的很正常,但是编译器编译后单步执行到?处却飞啦 为什么呢?请指点,谢谢!
#include<reg51.h> #include<intrins.h>
#define uint unsigned int #define uchar unsigned char
sfr AUXR = 0x8e;
uchar STATE; uint counter;
void INI(); void receive(); void send_onebyte(uchar n); void Delay(uint n);
void main() { counter=0;
STATE=0;
INI(); // TR0=1; while(1) { if(STATE==0x10) { send_onebyte(0x22); TR0=1; STATE=0; }
Delay(2); }
} /*******************************************************************************************/ void Delay(uint n) { uint i; while(n--) { for(i=0;i<80;i++) { }; } } /*******************************************************************************************/ //*******************************************************************************//
/*void INI_INTERRUPT() { ES=0;// ;禁止串口中断 TMOD=0x21;// ;设置T1为波特率发生器,定时器模式二运行,自动重装初值 SCON=0x50;// ;8位数据位,无奇偶校验 TH1=0xFD;TL1=0xFD;// //11.0592MHZ 晶振,波特率9600 TH0=0xee;TL0=0x00; //2^16-1ms/(12/11.0592us); AUXR &=0xbf;// ;定时器工作在12T模式下,与普通8051相同 RI=0; EA=1; ET0=1; ET1=1; TR1=1; ES=1; }*/
void INI() { ES=0; TMOD=0x21; SCON=0x50; TH1=0xFD;TL1=0xFD; TH0=0xee;TL0=0x00; AUXR&=0xbf; RI=0; EA=1; ET0=1; ET1=1; TR1=1; ES=1;//????????????????????????????????????? }
//*******************************************************************************//
//*******************************************************************************// void send_onebyte(uchar n) { ES=0; TI=0; SBUF=n; while(TI==0); TI=0; ES=1; }
//*******************************************************************************// void timer0(void)interrupt 1 using 1 { counter++; TH0=0Xee;TL0=0X00;//about 5ms //TH0=0X80;TL0=0X00;about 22ms send_onebyte(counter); if(counter==100) { send_onebyte(counter); counter=0; } } //*******************************************************************************//
void receive()interrupt 4 using 3 { uchar temp; if(RI) { RI=0; temp=SBUF; STATE=SBUF; temp++; send_onebyte(temp); } else {TI=0;} }
|