#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
//--定義使用的IO口--//
sbit PWM=P2^1;
bit DIR;
//--定義一個全局變量--//
u16 count,value,timer0;
void Timer0Init()
{
TMOD=0X01;
TH0 =(65536-1)/256 ;
TL0 =(65536-1)%256 ;
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時器
}
void main()
{
Timer0Init(); //定時器1初始化
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(timer0>1000) //PWM周期為1000*1us
{
timer0=0;
}
if(timer0<value)
{
PWM=1;
}
else
{
PWM=0;
}
}
}
void Timer(void) interrupt 1
{
TH0 =(65536-1)/256 ;
TL0 =(65536-1)%256 ;
timer0++;
count++;
}
|