#include <reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
unsigned char cd=0;//增变量
sbit led=P1.0;
unsigned char sd=40;//设定计数值
void ini(void)//定时器0初始化函数
{
TMOD = 0x01; //模式1,
TH0=0xdc;
TL0=0x00;
ET0 = 1; //定时器0开
EA = 1; //允许中断
TR0 = 1;}//启动定时器0
void Time0() interrupt 1 using 0 //中断程序
{ TH0=0xdc;
TL0=0x00; //设定时值为10ms
cd++; } //加一
void delay(unsigned int sd )//延时函数
{ ini();//初始化
while(1)
{ if(cd==sd) //中断次数到设定次数时,
{ cd=0; //清零,
} } }
void main() //主程序
{ while(1)
delay(40);//调用延时0.4秒
{led=!led; }}灯闪
程序运行,但是不出结果?定时器不能调用?除了循环延时外,如何多次调用延时呢?先谢谢了
此帖出自
小平头技术问答
typedef unsigned char uint8;
typedef unsigned int uint16;
unsigned char cd=0;//增变量
sbit led=P1^0;
unsigned char sd=40;//设定计数值
void main()//定时器0初始化函数
{
TMOD=0x01; //模式1,
TH0=0xdc;// (65536-45872)/256;
TL0=0x00;// (65536-45872)%256;
ET0=1; //定时器0开
EA=1; //允许中断
TR0=1;
while(1);
}//启动定时器0
void Time0() interrupt 1 using 0 //中断程序
{
TH0=0xdc;//
TL0=0x00; //设定时值为10ms
cd++;
if(cd==sd)
{
cd=0;
led=!led;
}
} //加一
/*void delay(unsigned int sd )//延时函数
{
ini();//初始化
while(1)
{
if(cd==sd) //中断次数到设定次数时,
{
cd=0; //清零,
}
}
}*/
/*void main() //主程序
{
while(1)
delay();//调用延时0.4秒
{
if(cd==sd)
{
cd=0;
led=!led;
}
}
} */
一周热门 更多>