1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > pic pwm 占空比可调 源码_PWM占空比 调节实例

pic pwm 占空比可调 源码_PWM占空比 调节实例

时间:2024-07-22 01:13:38

相关推荐

pic pwm 占空比可调 源码_PWM占空比 调节实例

今天做了个PWM占空比调节的例子,已经调试通过,供大家参考.

以下是原理图:

(原文件名:PWM 调节实例原理图.jpg)

以下是程序清单:

#include "iom16v.h"

#define SLEEP()asm("sleep")

#define WDR() asm("wdr")

#define NOP() asm("nop")

#define KEY1 (1<<6)

#define KEY2 (1<<7)

//------------------------------------------------------------------

//000000000000000000000000000000000000000000000000000000000000000000

//------------------------------------------------------------------

//按键子程序:

char key1_ci=0,key1_down=0;

char key2_ci=0,key2_down=0;

void kb_scan_pro()

{

if(!(PINB&KEY1))

{

if(!key1_down)

{ key1_ci++;

if(key1_ci>=200)

{ OCR1A++;//按键KEY1按下,则增大OCR1A,占空比增大

key1_ci=0;

key1_down=1;

}

}

}

else

key1_down=0;

if(!(PINB&KEY2))

{if(!key2_down)

{

key2_ci++;

if(key2_ci>=200)

{

OCR1A--;//按键KEY2按下,则减小OCR1A,占空比减小

key2_ci=0;

key2_down=1;

}

}

}

else

key2_down=0;

}

//按键子程序结束.

//------------------------------------------------------------------

//000000000000000000000000000000000000000000000000000000000000000000

//------------------------------------------------------------------

//主程序开始:

void main()

{

PORTA=PORTB=PORTC=PORTD=0x00;

DDRA=DDRB=DDRC=DDRD=0xff;

DDRB&=~(KEY1|KEY2); //按键输入

PORTB|=(KEY1|KEY2);

SFIOR&=~(1<

//SREG|=1<<7; //状态寄存器

WDTCR=(1<

TCCR1A=0B10000001; //比较匹配时清零OC1A/OC1B, OC1A/OC1B在TOP 时置位 这样OCR1A越大,则占空比越大

TCCR1B=0B00001001; //WGM13:0=5,快速PWM, TOP=0X00FF

OCR1A=100;

while(1)

{

kb_scan_pro();

WDR();

}

}

//------------------------------------------------------------------

//000000000000000000000000000000000000000000000000000000000000000000

//------------------------------------------------------------------

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。