|
#include "STC89.H" //頭文件包含
#include <intrins.h> //頭文件包含
typedef unsigned char u8; //重新定義數(shù)據(jù)類型名
typedef unsigned short u16; //重新定義數(shù)據(jù)類型名
typedef unsigned long u32; //重新定義數(shù)據(jù)類型名
sbit PWM_OUT=P2^1;
u8 idata PWM_Write_Byte[3]=0;
// 定時(shí)器0初始化 晶振11059200,12T,輸出50Hz的PWM,占空比0~255
// 定時(shí)器初值為:256-(11059200÷12÷50Hz÷256) = 184 = 0xB8
//***************************祁緒電子 2020年5月***
void PWM_Init(void)
{
TMOD &= 0xF0; //配置定時(shí)器工作模式
TMOD |= 0x02; //配置定時(shí)器工作模式 8位自動(dòng)重裝模式
TL0 = 0xB8;; //定時(shí)器初值
TH0 = 0xB8; //定時(shí)器重裝初值
TR0 = 1; //啟動(dòng)定時(shí)器0
ET0=1; //允許定時(shí)器0申請(qǐng)中斷
EA=1; //中斷總閘閉合
}
//定時(shí)器0的CPU處理函數(shù),位置任意寫都行
//****************************祁緒電子 2020年5月***
void PWM_Display_timer0() interrupt 1
{
static u8 pwm_t=0; //局部變量,不丟失數(shù)據(jù)
if(pwm_t<PWM_Write_Byte[0])
{
PWM_OUT=1;
}
else PWM_OUT=0;
pwm_t++;
}
// PWM 數(shù)模變換數(shù)據(jù)分配
//**************************祁緒電子 2020年5月***
void PWM_Allot()
{
static u8 kkk=0;
static u8 count=0;
count++;
if(count>100)
{
count=0;
kkk++;
PWM_Write_Byte[0]=kkk; //kkk為占空比自動(dòng)增加
PWM_Write_Byte[1]=10;
PWM_Write_Byte[2]=10;
}
}
void main() //主函數(shù)
{
PWM_Init();
while(1) //主函數(shù)大循環(huán)
{
PWM_Allot();
}
} |
|