急求利用定时中断方式0实现led每0.4秒闪烁一次的c语言程序!谢谢!!!

来源:百度知道 编辑:UC知道 时间:2024/05/11 04:20:05
c语言程序哈 !谢谢了 !我急用!!!

#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++; //计数加一
}

可在线讨论,时间你自己改。。。我在单片机上试过,可以...
#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)
{}

}
<