一、利用定时器实现:
/预处理命令/
#include<reg52h>
#define OUT P0
//晶振:12MHZ
/重新定义数据类型/
typedef unsigned char unit8;
typedef unsigned short unit_16;
/
函数名:main()
函数功能: 主函数
输入:无
输出:无
/
void main()
{
TMOD = 0x01;
TR0 = 1;
ET0 = 1;
EA = 1;
while(1);
}
/
函数名:Timer0_Rountine() interrupt 1
函数功能:内部中断T0 服务函数
输入: 无
输出:无
/
void Timer0_Rountine() interrupt 1
{
static unit_16 Count=0;
static unit8 Count_Sign=0;
static bit Sign=0;
TH0 = 0xfc;
TL0 = 0x18;
Count++;
if(!Sign)
OUT = 0xaa; //奇数 (1秒)
if(Count>=1000)
{
Sign=1;
Count=0;
if(Count_Sign<3) //2秒
OUT = 0xaa; //奇数
else if(Count_Sign>=3&&Count_Sign<=10) //8秒
OUT = 0x55; //偶数
else if(Count_Sign>10&&Count_Sign<=22) //12秒
OUT = 0x00; //全部
else if(Count_Sign>22)Count_Sign=Sign=0;
Count_Sign++;
}
}
二、利用软件延时实现:
#include<reg52h>
#define OUT P0
typedef unsigned char unit8;
typedef unsigned int unit16;
/
函数名:delay_ms(unit16 x)
函数功能: 延时函数1MS
输入:x
输出:无
/
void delay_ms(unit16 x)
{
unit8 a,b;
while(x--)
{
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
}
/
函数名:main()
函数功能: 主函数
输入:无
输出:无
/
void main()
{
while(1)
{
OUT = 0xaa; //奇数
delay_ms(3000); //3秒
OUT = 0x55; //偶数
delay_ms(8000); //8秒
OUT = 0x00; //全部
delay_ms(12000);//12秒
}
}
#include<reg51h> 包含单片机专用头文件
#include<intrinsh> 这个是什么俺也不知道,但这个程序不需要这个头文件
void Delay10ms(unsigned int c); 自定义的延时函数声明
main() 主函数
{
unsigned int LED; 建立一个数值型变量,变量名 LED
LED=0xfe; 给这个变量赋值,0xfe 换成二进制数为 1111 1110
while(1) 主循环
{
P2=LED; 点亮发光管,即先点亮右边的第一个
Delay10ms(50); 延时一段时间
LED=LED<<1; 点亮的发光管,向左移动一位
if (P2==0x00) 判断是否8个全部点亮了
{
LED=0xff; 如果全部点亮,则将全部发光管熄灭
}
}
}
void Delay10ms(unsigned int c)延时函数主程序
{
unsigned char a, b;建立两个变量 a b
for(;c>0;c--)循环语句,不断改变变量数值,已达到延时目的
{
for(b=38;b>0;b--)
{
for(a=130;a>0;a--);
}
}
}
给你翻译了,希望能帮到你
#include <reg52h> //包括一个52标准内核的头文件
#define uchar unsigned char
/主函数/
void timer0();
void main() // 主程序
{
TMOD=0x01; //定时器0工作方式1
EA=1;
ET0=1; //定时器0中断
TR0=1; //启动定时器0
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
while(1); //程序循环
}
/定时器0中断/
void timer0() interrupt 1
{
uchar t;//定义变量
TF0=0;//定时器清0
t++; //中断一次累加1
if(t==20) //预置值,溢出20次就是1秒钟,晶振12MHZ
{
t=0;
P3=~P3; //反转LED灯的亮灭
}
}
//
以上就是关于51单片机定时器控制8个LED灯亮3秒灭8秒再亮12秒的程序全部的内容,包括:51单片机定时器控制8个LED灯亮3秒灭8秒再亮12秒的程序、51单片机如何控制8个led程序、求51单片机定时LED闪烁程序代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)