一、利用定时器实现:
/*****************************预处理命令*****************************/
#include
#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
#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秒
}
}