51单片机定时器中断方式实现P1.0输出周期1s的方波的方法
4个回答
展开全部
方法有很多的,给你一个,你可以调试一下,你可以通过不同的晶振去计算定时器初值,如果你懂定时器这部分很好调通的
#include <reg52.h>
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;
}
}
}
#include <reg52.h>
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;
}
}
}
展开全部
让定时器每0.5秒进入一次中断。
每进入一次中断,就改变一次P1.0的电平状态。
这样你用示波器看到的P1.0就是周期1秒的方波了。
每进入一次中断,就改变一次P1.0的电平状态。
这样你用示波器看到的P1.0就是周期1秒的方波了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有几种方法,可以用89S52的定时器2工作在始终输出模式。最高频率可达晶振的1/4,还可以用任何一个定时器定时一秒,中断里写P1.0取反的程序就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是个基本的啊……查查电子钟的程序,把定时中断摘出来。获取知识的过程是要有的,不能指望现成的一模一样的程序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询