|
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key =P3^0; //開始結(jié)束按鍵
sbit LED1=P3^2; //開始綠燈
sbit LED2=P3^3; //停止紅燈
sbit relay =P3^4; //開始繼電器
sbit relay1=P3^5; //結(jié)束繼電器
uint count;//計(jì)時(shí)存儲(chǔ)器
void DelayMS(uint x)
{
uchar i;
while(x--);
{
for(i=0;i<120;i++);
}
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0 =1;
TR0 =0;
EA =1;
}
void main()
{
relay1=1;
relay=1;
LED1=1;
LED2=0;
init();
while (1)
{
if (key==0)//按鍵按下
{
TR0 =1;//啟動(dòng)定時(shí)器
}
}
}
void timer0()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if (count ==1 && LED2==0)//到達(dá)設(shè)定時(shí)間
{
relay =~relay;
DelayMS(50000);
relay =~relay;
}
if (count ==1 && LED1==0)
{
relay1 =~relay1;
DelayMS(50000);
relay1 =~relay1;
}
if (count <=450 && LED1==0)
{
LED1=~LED1;
DelayMS(3000);
LED1=~LED1;
}
else
{
LED2=~LED2;
DelayMS(3000);
LED2=~LED2;
}
if (count >=450)
{
LED1=~LED1;
LED2=~LED2;
count =0;
TR0 =0;
}
}
---------------------------------------------------------------------------------------------------------
把以上程序下載到STC15F104W里運(yùn)行不正常,LED不閃爍,始終常亮,搞不懂哪里問題。Proteus里仿真是正常的(這個(gè)程序仿真效果是2個(gè)指示燈切換顯示和原先要求不一樣,類似紅綠燈切換方式)。
下載程序的時(shí)候發(fā)現(xiàn)下載不進(jìn)去,始終再檢測(cè)。3.0和3.1口只接了開關(guān),沒有其他元件,后來發(fā)現(xiàn)3.4和3.5口要把限流電阻(控制三極管B極)拆掉才能下載…… |
|