预备知识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交替闪烁。
----------------------------------------我是一条分割线--------------------------------------------------------------------
作者水平有限,如有错误,欢迎指正。