欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
通過單片機定時器產生PWM波的源程序
[打印本頁]
作者:
saber韓武
時間:
2016-3-27 21:30
標題:
通過單片機定時器產生PWM波的源程序
通過單片機定時器產生PWM波 PWM(脈寬調制)在很多場合都用得上,例如LED亮度控制,開關電源輸出電圧控制等。 這里采用簡單的定時器實現PWM波輸出,通過更改定時器定時參數,
控制IO口輸出 波形高低電平持續時間,實現PWM波。 代碼如下:
#include<reg52.h>
#define T0_INTERRUPT 1 //T0中斷向量號
#define PWMH_L 0x9C
#define PWMH_H 0xFF //PWM低電平時間0.1ms
#define PWML_L 0xCE #define PWML_H 0xFF
//PWM高電平時間0.05ms sbit LED1 = P1^0; //常亮LED,作為對比,仿真看不出效果
sbit LED2 = P1^1; //PWM驅動LED
typedef unsigned char uchar; typedef unsigned int uint;
void Init_T0();
void main() {
LED1 = 0; //點亮LED1
LED2 = 1; //熄滅LED2
Init_T0(); //初始化定時器0
while(1) {
PCON |= 0x01; //單片機進入休眠模式,節省功耗
}
}
void Init_T0() {
TMOD &= 0xF0;
TMOD |= 0x01; //16位定時器模式
TH0 = PWML_H;
TL0 = PWML_L;
EA = 1; //開全局中斷
ET0 = 1; //允許T0中斷
TR0 = 1; //啟動定時器
}
void T0_Interrupt() interrupt T0_INTERRUPT
{
TF0 = 0;
if(LED2 == 1)
{
LED2 = 0; //設置低電平持續時間,LED2亮
TH0 = PWMH_H;
TL0 = PWMH_L;
}
else
{
LED2 = 1; //設置高電平持續時間,LED2滅
TH0 = PWML_H;
TL0 = PWML_L;
}
}
作者:
idealize
時間:
2016-10-20 22:09
單片機睡眠模式挺有趣的
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1