最初设定是P0口控制8盏灯以1秒的频率慢闪,中断控制中间的一个灯以500ms的频率快闪。结果编译出来后只有一个灯在中断后长亮,好像没有再切回主程序了。。这是什么情况?求解
//C51
单片机头文件
#include <reg51.H>
//宏定义,定义IO口名称
sbit LED_power=P0^5 ;
//函数声明
void
timer0_Init(void);
void Delay_ms(unsigned int ms);
//定义数据类型
static unsigned char sun;
unsigned char i;
//主函数
void main(void)
{
P0=0x00;
Timer0_Init();
while(1);
{
LED_power=0;
Delay_ms(1000);
P0=0xff;
Delay_ms(1000);
}
}
void Timer0_Init(void)
{
TMOD=0X01; //设置定时器T0和T1工作方式,0000 0001
TH0=0X4C; //十六位计数器中的高8位赋值
TL0=0x00; //十六位计数器中的低8位赋值
EA=1; //全局中断控制
ET0=1; //打开T0中断
TR0=1; //允许T0
}
void Timer0_ISR(void) interrupt 1 //定时器0的序号为1,若用定时器2需要写成 interrupt 3
{
TH0=0X4C; //重装定时器
TL0=0x00;
sun++;
if(sun==20)
{
sun=0;
LED_power=1;
}
}
//延时
void Delay_ms(unsigned int ms)
{
unsigned int i;
while((ms--)!=0)
{
for(i=0;i<600;i++);
}
}
评分
查看全部评分
一周热门 更多>