51单片机定时器中断方式实现P1.0输出周期1s的方波的方法

2025-02-03 04:09:29
推荐回答(4个)
回答1:

方法有很多的,给你一个,你可以调试一下,你可以通过不同的晶振去计算定时器初值,如果你懂定时器这部分很好调通的
#include
sbit p1_0=P1^0;
int i; //全局变量

void timing(void) //晶振为3.6864M
{
TMOD|=0x01; //定时器T0,工作方式1
TH0=0xC3;
TL0=0xC7; //这两个寄存器存的是计数器的计数开始的值,这两个值累加至溢出后正好是50ms
ET0=1; //使T0中断可以溢出
EA=1; //开启总中断
TF0=0; //溢出位清零
TR0=1; //开启T0
}
/********定时中断函数*********/
void time0_int () interrupt 1 //定时中断函数
{
TH0=0xC3;
TL0=0xC7;
i++;
}

main()
{
i=0;
timing();
while(;)
{
if(i==20)
{
p1_0=~p1_0; //p1.0口状态翻转
i=0;
}
}
}

回答2:

让定时器每0.5秒进入一次中断。
每进入一次中断,就改变一次P1.0的电平状态。
这样你用示波器看到的P1.0就是周期1秒的方波了。

回答3:

有几种方法,可以用89S52的定时器2工作在始终输出模式。最高频率可达晶振的1/4,还可以用任何一个定时器定时一秒,中断里写P1.0取反的程序就可以了

回答4:

这是个基本的啊……查查电子钟的程序,把定时中断摘出来。获取知识的过程是要有的,不能指望现成的一模一样的程序