#include<reg51.h>
#define uchar char
sbit led1=P1^0;
sbit led2=P1^7;
uchar con1=0,con2=0;
void main(void)
{
TMOD|=0x12;
TH0=15536/256;
TL0=15536%256;
TR0=1;
EA=1;
ET0=1;
while(1);
}
void t1_(void) interrupt 1
{
TH0=15536/256;
TL0=15536%256;
if(++con1==20)
{ con1=0;
led1=led1; } }
void t0_(void) interrupt 2
{ if(con2==2000)
{ con2=0;
led2=led2;
(已经写了第一部分了,就是不知道怎么实现第二个要求)
#include <REGX51.H>//何汗宇 2022/10/30
#define chuar unsigned char;
#define uint unsigned int ;
int cnt0 = 0;
int cnt1 = 0;
sbit LED0 = P1^7;
sbit LED1 = P1^0;
void Timer1_init() //定时器T1
{
TMOD|=0x10; //定时器T1方式1 方式1 需要软件重新装初始值
EA=1;
TR1=1; //启动 T1 定时器
ET1=1; //打开 T1 中断
TH1=(65536-5000)/250; //为 T1 赋初值 ,定时 定时 50000us=50ms
TL1=(65536-5000)%250;
}
void Timer0_init() //定时器T0
{
TMOD|=0x02; //定时器T0方式2 方式2 不需要软件重新装初始值
EA=1;
TR0=1; //启动 T0 定时器
ET0=1; //打开 T0 中断
TH0=256-250; //为 T0 赋初值,定时 25us 6到256需要 25us
TL0=256-250;
}
void t1_int(void) interrupt 3 //定时器T1 工作方式1 1s
{
TH1=(65536-50000)/250; //为 T1 重装赋初值 ,定时 50000us=50ms
TL1=(65536-50000)%250;
cnt1++;
if(cnt1==20)
{
cnt1=0;
LED1=~LED1;
}
}
void t0_int(void) interrupt 1 //定时器T0 工作方式2 0.5s
{
cnt0++;
if(cnt0==2000)
{
cnt0=0;
LED0=~LED0;
}
}
void main(void)
{
Timer0_init();
Timer1_init();
while(1);
}
不懂帮顶。