标题:
关于单片机呼吸灯的一点问题,就是这个程序不理解怎么回事,怎么弄呀
[打印本页]
作者:
134849694164151
时间:
2018-6-7 22:40
标题:
关于单片机呼吸灯的一点问题,就是这个程序不理解怎么回事,怎么弄呀
单片机源程序如下:
#include <reg52.h>
//--定义使用的IO口--//
sbit PWM=P2^1;
bit DIR;
//--定义一个全局变量--//
unsigned int count,value,timer1;
void Time1Config();
void main(void)
{
Time1Config();
while(1)
{
if(count>100)
{
count=0;
if(DIR==1) //DIR控制增加或减小
{
value++;
}
if(DIR==0)
{
value--;
}
}
if(value==1000)
{
DIR=0;
}
if(value==0)
{
DIR=1;
}
if(timer1>1000) //PWM周期为100*1us
{
timer1=0;
}
if(timer1 <value)
{
PWM=1;
}
else
{
PWM=0;
}
}
}
void Time1Config()
{
TMOD|= 0x10; //设置定时计数器工作方式1为定时器
//--定时器赋初始值,12MHZ下定时1us--//
TH1 = 0xFF;
TL1 = 0xff;
ET1 = 1; //开启定时器1中断
EA = 1;
TR1 = 1; //开启定时器
}
void Time1(void) interrupt 3 //3 为定时器1的中断号 1 定时器0的中断号 0 外部中断1 2 外部中断2 4 串口中断
{
TH1 = 0xFF; //重新赋初值
TL1 = 0xFf;
timer1++;
count++;
}
复制代码
作者:
devcang
时间:
2018-6-8 00:08
这是一路的,那PWM 先熟悉一下这原理,就清楚了。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1