标题:
单片机定时器2(采用定时器2控制小灯亮灭)Proteus仿真+代码
[打印本页]
作者:
狙击手78
时间:
2019-6-5 23:46
标题:
单片机定时器2(采用定时器2控制小灯亮灭)Proteus仿真+代码
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(12.32 KB, 下载次数: 28)
下载附件
2019-6-6 20:00 上传
单片机源程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint time;
sbit led=P1^0;
/*************************延时程序*********************/
void delay(uint count) //1ms延时
{
uint x,y;
for(x=0;x<count;x++)
for(y=0;y<120;y++);
}
/*void delay(uint z)
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 114; y > 0 ; y--);
}
*/
void timer2_main()
{
// T2MOD=0; //配置定时器2控制寄存器,这里其实不用配置,T2CON上电默认就是0
// T2CON=0; //配置定时器2工作模式寄存器,这里其实不用配置,T2MOD上电默认就是0
TH2=(65536-50000)/256; //定时器2赋初值
TL2=(65536-50000)%256; //50ms
ET2=1; //开定时器2中断
EA=1;
TR2=1; //启动定时器2
}
/*
void UART_init()
{
TMOD = 0x20; //T1工作模式2 8位自动重装
TH1 = 0xfd;
TL1 = 0xfd; //比特率9600
TR1 = 1; //启动T1定时器
SM0 = 0;
SM1 = 1; //串口工作方式1 10位异步
// REN = 1; //串口允许接收
EA = 1; //开总中断
// ES = 1; //串口中断打开
}
void UART() //interrupt 4
{
SBUF = "你好";// 06 02 78;
while(!TI);
TI = 0;
}*/
void main()
{
timer2_main(); //定时器T2初始化
// UART_init(); //串口初始化
while(1){
/* if(SET==0) //设定按键按下
{
delay(5);
if(SET==0)
{ //延时去除抖动再次判断是否按下按键
UART();
while(!SET);
}
} */
}
}
void timer2() interrupt 5
{
TF2=0; //!!!注意!!! 定时器2必须由软件对溢出标志位清零,硬件不能清零
time++;
if(time==100) //定时50ms×100=5000ms即5秒钟
{
time=0;
led=~led;
}
}
复制代码
所有资料51hei提供下载:
定时器TOME2.zip
(81.29 KB, 下载次数: 52)
2019-6-5 23:46 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
电控1999
时间:
2019-9-6 12:05
没有1602的程序呀
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1