📄 zhenghe.c
字号:
/*-----------------------------------------------
名称:定时器1
日期:2009.5
修改:无
内容:通过定时让LED灯闪烁
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
sbit PWM=P1^0; //定义LED端口
sbit PWM1=P1^1;
sbit PWM2=P1^2;
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer1(void)
{
TMOD |= 0x10; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH1=0xFF; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
TL1=0xA3;
EA=1; //总中断打开
ET1=1; //定时器中断打开
TR1=1; //定时器开关打开
}
void delay(unsigned int j)
{
while(--j);}
int a,m,n,o;
int flag;
void main()
{
Init_Timer1();
PWM=0;
PWM1=0;
PWM2=0;
PWM=0;
PWM1=0;
PWM2=0;
a=0;
while(1)
{
if(m==100&&n==100&&o==100)
{
m=0;
n=0;
o=0;
}
if(m<100)
{
if(a<5)
{
PWM1=1;
PWM=1;
}
else if (a>5&&a<25)
{
PWM=0;
PWM1=1;
}
else if (a>25&&a<200)
{
PWM=0;
PWM1=0;
}
else if (a==200)
{
a=0;
m++;
}
}
else if (m==100)
{
if (n<100)
{
if(a<5)
{
PWM=1;
PWM2=1;
}
else if (a>5&&a<25)
{
PWM=1;
PWM2=0;
}
else if (a>25&&a<200)
{
PWM=0;
PWM2=0;
}
else if (a==200)
{
a=0;
n++;
}
}
else if (n==100)
{
if (o<100)
{
if(a<5)
{
PWM1=1;
PWM2=1;
}
else if (a>5&&a<25)
{
PWM1=0;
PWM2=1;
}
else if (a>25&&a<200)
{
PWM1=0;
PWM2=0;
}
else if (a==200)
{
a=0;
o++;
}
else if (o==100)
{
a=0;
m=0;
n=0;
o=0;
}
}
}
}
}
}
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer1_isr(void) interrupt 3 using 1
{
TH1=0xFF; //中赂持
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -