急求利用定时中断方式0实现led每0.4秒闪烁一次的c语言程序!谢谢!!!
发布网友
发布时间:2024-02-09 20:57
我来回答
共3个回答
热心网友
时间:2024-08-12 21:40
#include<reg52.h>
sbit P10=P1^0;//控制LED闪烁
unsigned char count=0;//计数变量
void main()
{
TMOD = 0x01; //设定时器0为模式1,16位模式
TH0=0xdc;
TL0=0x00; //设定时值为10ms,此时晶振频率是11.0592MHZ
//若晶振频率是12MHZ,则初值应为 TH0=0xd8; TL0=0xf0;
ET0 = 1; //定时器0中断打开
EA = 1; //允许CPU中断
TR0 = 1;//启动定时器0
while(1)
{
if(count==40) //0.4秒时间是否到
{
count=0; //计数变量清零,为下一次计数做准备
P10=!P10; //IO口取反,即LED亮灭变化
}
}
}
//定时器0中断处理子程序
void Time0() interrupt 1 using 0
{
TH0=0xdc;
TL0=0x00; //设定时值为10ms
count++; //计数加一
}
热心网友
时间:2024-08-12 21:41
可在线讨论,时间你自己改。。。我在单片机上试过,可以...
#include<reg51.h>
sbit P10=P1^0;//LED
void main()
{
EA = 1; //允许CPU中断
ET0 = 1; //定时器0中断打开
TMOD = 0x1; //设定时器0为模式1,16位模式
TH0=0xB1;
TL0=0xDF; //设定时值为20000us(20ms)
TR0 = 1;
while(1)
{}
}
//定时器0中断外理中键扫描和显示
void KeyAndDis_Time0(void) interrupt 1 using 2
{
TH0=0xB1;
TL0=0xDF; //设定时值为20000us(20ms)
P10=!P10;
}
热心网友
时间:2024-08-12 21:47
#include
sbit
p00=p0^0;
sbit
key=p1^0;
unsigned
int
i=0;
void
main(void)
{
tmod=0x10;//设定定时器的工作模式为定时器1方式1
th1=15536/256;//向定时器装入初值高八位
tl1=15536%256;//向定时器装入初值低八位
ea=1;//开总开关
et1=1;//开分开关
tr1=1;//启动定时器
while(1)
{
if(key==0)tr1=0;
else
tr1=1;
}
}
void
t1(void)
interrupt
3//定时器0服务函数
{
th1=15536/256;//向定时器装入初值高八位
tl1=15536%256;//向定时器装入初值低八位
if(++i==30)//延时1.5s
{
i=0;
p00=~p00;//闪烁
}
}