- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
avr利用pwm控制led光暗和蜂鸣器
//ICC-AVR燼pplication燽uilder?/燭arget?燤16?
//燙rystal:?.0000Mhz?
#include?iom16v.h?
#include?macros.h?
#define爑char爑nsigned燾har
#define爑int爑nsigned爄nt
void爌ort_init(void);
void爐imer0_init(void);
void爄nit_devices(void);
void燿elay_short(uint爐);
uchar爏can_key(void);
voi d爌ort_init(void)?
{?
燩ORTA??x00;?
燚DRA牋=?x00;?
燩ORTB?燘IT(PB3);?
燚DRB牋=燘IT(PB3);?
燩ORTC??x00;?/m103爋utput爋nly?
燚DRC牋=?x00;?
燩ORTD??x00;?
燚DRD牋=?x00;?
}?
//燱GM:燩WM燩has e?correct
//?desired?value:?1KHz
//?actual?value:??0.980KHz?(-2.0%)
void?timer0_init(void)?
{?
?TCCR0?=?0x00;?//stop?
?TCNT0?=?0x01;?//set?count?
?OCR0??=?0xFF;??//set?compare?
?TCCR0?=?0x62;?//start?timer?;?相位修正,?8分頻
}?
//call?this?routine?to?initialize燼ll爌eripherals?
void爄nit_devices(void)?
{?
?/stop爀rrant爄nterrupts爑ntil爏et爑p?
燙LI();?/disable燼ll爄nterrupts?
爌ort_init();?
爐imer0_init();?
燤CUCR??x00;?
燝ICR牋=?x00;?
燭IMSK??x00;?/timer爄nterrupt爏ources?
燬EI();?/ re-enable爄nterrupts?
?/all爌eripherals燼re爊ow爄nitialized?
}
void燿elay_short(uint爐)?/? 短延時
{
??uint?i;
??for?(i=0;it;i++);
}
uchar?scan_key(void)??//?按鍵掃瞄
{?
??uchar?v;
??
??v?=?0;?????
??
??if?((PIND??0x07)?!=?0x07)
??{
?
??if?((PIND??0x01)?==?0)?
??{
???v?=?1;
????delay_short(1000);??
??}
??
??if?((PIND??0x2)?==?0)?
??{
????v?=?2;
????delay_short(1000);??
??}
???
??if?((PIND??0x4)?==?0)?
??{
????v?=?3;
????delay_short(1000);??
??}
??};
??while((PIND??0x07)?!=?0x07);???//?判斷按鍵是不是放開???
??return?v;??
}
void?main(void)?
{??
?uchar?key,?OCR0_V;
?
?init_devices();?
?OCR0_V?=?0xff;
?
?while(1)
?{
???key?=?scan_key();
???
???if?(key??0)
???{
?????if?(key==1)?//?減少佔空比
????{?
??????OCR0_V?-=?10;
??????OCR0?=?OCR0_V;
????};
????
?????if?(key==2)?//?增加佔空比
????{?
??????OCR0_V?+=?10;
??????OCR0?=?OCR0_V;
????};????
????
?????if?(key==3)?//?全黑,佔空比為100%?
????{?
??????OCR0_V?=?0xff;
??????OCR0?=?OCR0_V;
????};??????
文档评论(0)