?? pwm.c
字號:
#define uchar unsigned char //定義一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h> //包括一個52標準內(nèi)核的頭文件
sbit P10 = P1^0; //要控制的LED燈
sbit K1= P3^2; //按鍵K1
uchar scale;//用于保存占空比的輸出0的時間份額,總共10份
char code dx516[3] _at_ 0x003b;//這是為了仿真設置的
//模擬PWM輸出控制燈的10個亮度級別
void main(void) // 主程序
{
uint n;
RCAP2H =0xF3; //賦T2的預置值,溢出1次是1/1200秒鐘
RCAP2L =0x98;
TR2=1; //啟動定時器
ET2=1; //打開定時器2中斷
EA=1; //打開總中斷
while(1) //程序循環(huán)
{ ;//主程序在這里就不斷自循環(huán),實際應用中,這里是做主要工作
for(n=0;n<50000;n++); //每過一會兒就自動加一個檔次的亮度
scale++;
if(scale==10)scale=0;
}
}
//1/1200秒定時器2中斷
timer2() interrupt 5
{
static uchar tt; //tt用來保存當前時間在一秒中的比例位置
TF2=0;
tt++;
if(tt==10) //每1/120秒整開始輸出低電平
{
tt=0;
if(scale!=0) //這里加這一句是為了消除滅燈狀態(tài)產(chǎn)生的鬼影
P10=0;
}
if(scale==tt) //按照當前占空比切換輸出高電平
P10=1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -