#include<reg52.h>
#define uchar unsigned char
sbit p1_1=P1^0 ;
sbit p2_1=P1^1;
uchar a ;
void main()
{ while(1)
{ TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
a=0;
p1_1=0;
p2_1=0;
if(a==20)
{ p1_1=1;
p2_1=1;
a=0;
}
}
}
void timer0() interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
} 本来想让p1_1和P2_1每秒闪一次但是就是不能闪
你掉到while死胡同里去了!我写一段你直接烧进去你看看闪不闪啊
#include<reg52.h>
#define uchar unsigned char
sbit p1_1=P1^0 ;
sbit p2_1=P1^1;
uchar a ;
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
a=0;
while(1)
{
if(a==20)
{
p1_1=~p1_1;
p2_1=~p2_1;
a=0;
}
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
你的我没改,直接把while的位置调整了一下,我没试,你下下来试试看。你这个活着直接把LED的判断语句直接放在中断里面也可以,main放初始化活着干脆空着。还有就是干脆把while删掉也可以试试看
/*话说这个代码测试后也可以用*/
#include<reg52.h>
#define uchar unsigned char
sbit p1_1=P1^0 ;
sbit p2_1=P1^1;
uchar a ;
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(a==20)
{
p1_1=~p1_1;
p2_1=~p2_1;
a=0;
}
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |