求51单片机使led灯亮800ms灭200ms的代码 使用下面代码修改过来的 50
#include<reg51.h>sbitled1=P0^0;sbitled2=P0^1;chari;charj;voiddelayms(unsignedcharms)/...
#include<reg51.h>
sbit led1=P0^0;
sbit led2=P0^1;
char i;
char j;
void delayms(unsigned char ms)
//延时子程序
{
unsigned char i;
while(ms--)
{
for(i=0;i<250;i++);
}
}
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
EA=1;ET0=1;ET1=1;
i=0;
j=0;
TR0=1;
TR1=1;
while(1);
}
void time0_int(void) interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
i++;
if(i==20){
delayms(100);
led1=! led1; i=0;}}
void time1_int(void) interrupt 3
{
j++;
if(j==50){
delayms(120);
led2=! led2; j=0;}
} 展开
sbit led1=P0^0;
sbit led2=P0^1;
char i;
char j;
void delayms(unsigned char ms)
//延时子程序
{
unsigned char i;
while(ms--)
{
for(i=0;i<250;i++);
}
}
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
EA=1;ET0=1;ET1=1;
i=0;
j=0;
TR0=1;
TR1=1;
while(1);
}
void time0_int(void) interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
i++;
if(i==20){
delayms(100);
led1=! led1; i=0;}}
void time1_int(void) interrupt 3
{
j++;
if(j==50){
delayms(120);
led2=! led2; j=0;}
} 展开
4个回答
展开全部
#include<reg51.h>
sbit led1=P0^0;
sbit led2=P0^1;
char i;
char j;
void delayms(unsigned char ms)
//延时子程序
{
unsigned char i;
while(ms--)
{
for(i=0;i<250;i++);
}
}
void time0_int(void) interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
i++;
if(i<80)led1=0;
else led1=1;
if(i>1000)i=0;
}
void time1_int(void) interrupt 3
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
j++;
if(j<80)led2=0;
else led2=1;
if(j>1000)j=0;
}
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
EA=1;ET0=1;ET1=1;
i=0;
j=0;
TR0=1;
TR1=1;
while(1);
}
sbit led1=P0^0;
sbit led2=P0^1;
char i;
char j;
void delayms(unsigned char ms)
//延时子程序
{
unsigned char i;
while(ms--)
{
for(i=0;i<250;i++);
}
}
void time0_int(void) interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
i++;
if(i<80)led1=0;
else led1=1;
if(i>1000)i=0;
}
void time1_int(void) interrupt 3
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
j++;
if(j<80)led2=0;
else led2=1;
if(j>1000)j=0;
}
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
EA=1;ET0=1;ET1=1;
i=0;
j=0;
TR0=1;
TR1=1;
while(1);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
111
2024-12-20 广告
2024-12-20 广告
作为合肥鑫义达科技有限公司的工作人员,我认为工业级LCD显示屏之所以被广泛使用,主要归因于其高可靠性、耐用性和多功能性。在工业环境中,设备需长时间运行并面临恶劣条件,如温度变化、震动和尘埃,而工业级LCD显示屏采用特殊材料和工艺,能有效抵御...
点击进入详情页
本回答由111提供
展开全部
程序有好几个问题。
1、中断函数里不要用延时函数,那样会乱的;
2、LED1和LED2不能达到亮800灭200的效果;
3、中断函数没有和TMOD匹配,0x01表明T0工作于方式1,T1工作于方式0,方式0是13位计数,溢出值是8192,不是65536,且不会自动重装,中断函数里也要给计数器重新赋值
1、中断函数里不要用延时函数,那样会乱的;
2、LED1和LED2不能达到亮800灭200的效果;
3、中断函数没有和TMOD匹配,0x01表明T0工作于方式1,T1工作于方式0,方式0是13位计数,溢出值是8192,不是65536,且不会自动重装,中断函数里也要给计数器重新赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<reg51.h> // 试试
sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^7;
char i;
char j;
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
EA=1;ET0=1;ET1=1;
i=0;
j=0;
TR0=1;
TR1=1;
while(1);
}
void time0_int(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(j==0){
i++;
}
if(i==20){ // 修改i=20 数值 改变时间
led1=! led1; i=0;
led3=1; j++;
}}
void time1_int(void) interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
if(i==0){
j++;
}
if(j==80){ // 修改i=80 数值 改变时间
led2=! led2; j=0;
led3=0; i++;
}}
sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^7;
char i;
char j;
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
EA=1;ET0=1;ET1=1;
i=0;
j=0;
TR0=1;
TR1=1;
while(1);
}
void time0_int(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(j==0){
i++;
}
if(i==20){ // 修改i=20 数值 改变时间
led1=! led1; i=0;
led3=1; j++;
}}
void time1_int(void) interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
if(i==0){
j++;
}
if(j==80){ // 修改i=80 数值 改变时间
led2=! led2; j=0;
led3=0; i++;
}}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这中断怎么可以在main函数里面。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询