求助!!!!用单片机的定时器T1怎么写一个LED亮2秒灭3秒的程序 C语言
关注:120 答案:4 mip版
解决时间 2021-02-05 00:55
提问者習慣邇的習慣
2021-02-04 14:09
求助!!!!用单片机的定时器T1怎么写一个LED亮2秒灭3秒的程序 C语言
最佳答案
二级知识专家柚旅时光机
2021-02-04 14:29
#include
#defineuchar unsigned char
uchar time,time1;
sbit LED=P2^7;
void InitT1( )
{
TMOD=0x10; //定时器1,工作方式1
TH1=0x3c;
TL1=0xb0; //50ms中断一次
EA=1;
ET1=1;
TR1=1;
}
void main()
{
InitT1();
while(1)
{
if(time1==2)
LED=0; //P2.7上的LED亮2s
if(time1==5)
{
time1=0;
LED=1;//P2.7上的LED灭3s
}
}
}
void T1Int( ) interrupt 3
{
TH1 = 0x3c;
TL1 = 0xb0;
time++;
if(time==20) //中断20次,1s
{
time=0;
time1++;
}
}
全部回答
1楼全球变暖丶我心却变冷
2021-02-04 16:52
给你个提纲,自己写吧,如下:
sbit LED=Px^x
void main()
{
1.定时器设置、中断设置,
while(1)
{
2.LED=1; //假设高电平亮
3.定时中断次数设置X=m //2秒等于m次中断
4.开定时器中断
5.While(x); //未到时间停在这一步
6.关定时器中断
7.LED=0;
8.定时中断次数设置X=n //3秒等于n次中断
9.开定时器中断
10.While(x); //未到时间停在这一步
11.关定时器中断
}
}
void intr() interrupt0 //中断服务函数
{
重装初值; //装入的初值时间要能被2秒、3秒整除
x--;
}
2楼帞蕥
2021-02-04 16:27
思路大概是这样:
设置 定时器定时1秒
先亮灯,2秒后灭灯,
再3秒后再亮灯,
循环
3楼相忘于江湖
2021-02-04 15:48
#include"reg52.h" //包含52头文件
#define true 1 //定义布尔量'1':真
#define false 0 //定义布尔量'0':假
#define uchar unsigned char //定义 无符号字符型数据 简称
#define uint unsigned int //定义 无符号整型数据 简称
#define th0 0x3c
#define tl0 0xb0 //50ms at 12mhz(定时器工作模式1 状态)
#define flicktimeat50ms 20; //50ms×20=1s
sbit led=p1^0;
void timer0() interrupt 1
{
static uchar t50ms=0;
tl0=tl0;
th0=th0;
t50ms=++t50ms%flicktimeat50ms; //先对50ms计时变量加1,后对变量范围进行限制(0~19)(即对20取模)
if(!t50ms) led=~led;
}
void timerinit() //系统初始化函数
{
tmod=0x01; //关闭定时器1,开启定时器0,并工作在模式1
th0=th0;
tl0=tl0;
tr0=1; //启动计时
et0=1; //允许定时器0中断
ea=1; //开启系统中断功能
}
void main()
{
timerinit();
while(1);
}
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
→点此我要举报以上信息!←
推荐资讯
大家都在看