我的设计思想如下,单片机的P15口通过一个1K的电阻(外部没上拉)连接到一个NPN三极管,通过控制三极管的通断,来控制继电器的吸合与关断,即P15为1继电器线圈吸合,P15为0继电器断开,程序设置P15为推挽输出,定时器中断为100ms,每3000次进入定时器中断,即5分钟(300s),改变下P15的状态,如果原来为1变为0,如果为0则为1,但是程序运行后,问题出现了: 
每隔三百秒,可以听到继电器瞬间吸合,瞬间断开,P15不能维持高电平,麻烦帮忙看看了 
 
#include"reg51.h" 
#include"intrins.h" 
 
typedef unsigned int WORD; 
 
#define FOSC 5800000L 
#define T1MS (65536-FOSC/120) 
 
sfr P1M1=0x91; 
sfr P1M0=0x92; 
 
sfr AUXR=0x8e; 
sfr CLK_DIV=0x97; 
sbit P15=P1^5; 
 
WORD count=0,mode; 
 
 
void T0_isr() interrupt 1 using 1 
{ 
TL0= T1MS; 
TH0=T1MS>>8; 
if(count--==0) 
{ 
count=3000; 
if(mode==0) 
{P15=1;mode=1;} 
else 
{P15=0;mode=0;} 
 
} 
} 
void main() 
{ 
count=3000; 
AUXR=0x00; //12T 
CLK_DIV=0x00;//不分频 
TMOD=0x01;//定时器,16位 
TL0=T1MS;// 
TH0=T1MS>>8; 
 
//P1.5推 
P1M0=0x20; 
P1M1=0x00; 
P15=0;//挽方式输出 
  mode=0; 
 
ET0=1; 
PT0=1; 
TR0=1; 
EA=1; 
while(1); 
} 
 
如果不在中断里操作P15口,在初始化里把P15=1;或者P15=0;都没有问题,所以我搞不懂,这样在终端里操作有什么问题呢 |   
     
  
 |