1.6 STC89C52定时器控制LED闪烁(proteus仿真)

预备知识keil5和proteus基本操作

前言;

        前面我们已经用过延时函数了,这节将会介绍另一种延时方式(定时器

void Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

)。

上面这种延时函数虽然会达到延时目的,但是会占用单片机资源。所以我们需要更合适的记时。

1,keil5编写代码

        接下来新建工程

添加main.c   Timer.c   Timer.h这三个文件,为了我们进行模块化编程,界面如下

接下来我们写代码,先在Timer.c中添加定时器初始化代码。

#include <REGX52.H>

//初始化T0
void Timer0Init(void)
{
	TMOD &= 0xF0;		//设置定时器模式
	TMOD |= 0x01;		//设置定时器模式
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	
}

然后在Timer.h中声明我们写的这个函数。(防止重复编译报错)

#ifndef __TIMER0_H__
#define __TIMER0_H__

void Timer0Init(void);

#endif

最后,我们在main.c中写下使LED以0.5s闪烁

#include <REGX52.H>
#include "Timer.h"

int  ms=0;

void main()
{
	Timer0Init();//初始化T0
	while(1)
	{
		while(ms<500)
		{
			while(TF0==0);//等待
			TL0 = 0x18;		//设置定时初值
			TH0 = 0xFC;		//设置定时初值
			TF0=0;
			ms++;
			
		}
			ms=0;
		P2_0=~P2_0;
	}
	
	}

.可以看到代码中我们把P2_0以0.5s置位和复位。

2,proteus搭建环境

接下来我们打开proteus新建工程

找到这些元件

添加完这些元件后开始搭建环境

然后我们把刚刚keil5编译生成的.hex文件与芯片连接

点击运行仿真,我们会看到LED以0.5s闪烁

3,思考

3,思考         3.1        查找芯片手册,理解在keil5中代码为什么要这么写?含义何在?

                      3.2        在proteus中我们的电路为什么要这么连,与我们写的代码有什么关联?

                      3.3        根据现有环境,更改代码,控制两个LED交替闪烁。
----------------------------------------我是一条分割线--------------------------------------------------------------------

作者水平有限,如有错误,欢迎指正。
 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盛一碗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值