51单片机002:利用定时/计数器T0从P1^0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHZ

这篇具有很好参考价值的文章主要介绍了51单片机002:利用定时/计数器T0从P1^0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHZ。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        题目解析:

        让发光二极管以1HZ闪烁,周期为频率的倒数,也就是发光二极管以1s为周期闪烁。闪0.5s,灭0.5s。

        思路解析:

        1、选择一个发光二极管体现实验现象。

        2、要用到定时器,肯定要写定时器初始化函数中断服务函数,定时器初始化函数要配置相关寄存器和参数,定时器中断服务函数描述中断具体执行的任务。

        定时器初始化函数:
        主要配置寄存器有:TCON、TMOD、高八位寄存器(定时器0:TH0;定时器1:TH1)、低八位寄存器(定时器0:TL0;定时器1:TL1)
。TMOD不同的是TMOD寄存器不可位寻址,因此对TMOD的配置需要对这个8bit寄存器整体赋值。根据具体的情况对相应寄存器赋值即可,如选择定时器0模并选择工作方式1,TMOD寄存器就为0000 0001,所以对TMOD赋值为0x01。

     

  中断服务函数:

        1、如果TMOD工作模式未选择自动重装,则需要对TH0和TL0寄存器重新赋值。        

        2、进行计数变量的累加

        3、执行简单的中断任务文章来源地址https://www.toymoban.com/news/detail-772220.html

完整代码:

#include "reg52.h"

typedef unsigned int u16;	//对系统默认数据类型进行重定义
typedef unsigned char u8;

//定义LED1管脚
sbit LED1=P2^0;

void time0_init(void)
{
	TMOD|=0X01;               //选择为定时器0模式,工作方式1
	TH0=(65535-50000)/256;    //50ms定时20次
	TL0=(65535-50000)%256;
	ET0=1;                    //打开定时器0中断允许
	EA=1;                     //打开总中断
	TR0=1;                    //打开定时器		
}

void main()
{	
	time0_init();//定时器0中断配置

	while(1)
	{			
							
	}		
}

void time0() interrupt 1 //定时器0中断函数
{
	static u16 i;             //定义静态变量i
	TH0=(65535-50000)/256;    //50ms定时20次
	TL0=(65535-50000)%256;
	i++;
	if(i==10)
	{
		i=0;
		LED1=!LED1;	
	}						
}

 

到了这里,关于51单片机002:利用定时/计数器T0从P1^0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHZ的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包