avr程序.docxVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
avr程序

#includestdio.h#includeavr\io.h#includeutil\delay.h#includeavr\interrupt.h#define BIT(x) (1x)#define uint unsigned int#define uchar unsigned char/*舵机的控制模块*/volatile uint hightime=760;void pwm_servo(void) /*控制舵机的pwm波初始设定,定时器1,周期为10ms*/{ DDRB=0XFF;PORTB=0XFF;DDRD=0XFF;TCCR1A=0X63;/*设置1A为50占空比,1B任意可调占空比,相位修正模式*/TCCR1B=0X12;/*8分频*/OCR1A=10000;OCR1B=hightime;TIMSK|=(1OCIE1B);}SIGNAL(SIG_OUTPUT_COMPARE1B)//中断,高电平时间为hightime{PORTB^=0XFF;OCR1B=hightime;}/*电机的控制模块*/volatile uint speed;void pwm_motor(int speed){TCCR0|=BIT(WGM00)|BIT(COM01)|BIT(CS02)|BIT(CS00); //相位修正模式,1024分频,32msOCR0=speed;TIMSK|=BIT(OCIE0);DDRA|=BIT(PA1)|BIT(PA2)|BIT(PA3);PORTA=~BIT(PA3);PORTA|=BIT(PA1);PORTA|=BIT(PA2);}SIGNAL(SIG_OUTPUT_COMPARE0){PORTA^=0X02;OCR0=speed;}/*ad转换模块*/void init_ad(){DDRA=~BIT(PA0); PORTA=~BIT(PA0);}uint adda(){uint addata;ADMUX=0x40;/*设置参考电压为AVCC,0x00为外部参考源AREF*/ADCSRA=0x87;/*BIT(ADEN)|BIT(ADATE)|BIT(ADIE)|BIT(ADPS2)|BIT(ADPS1)|BIT(ADPS0)使能+128分频*/sei();ADCSRA|=BIT(ADSC);/*开启AD转换*/while(!(ADCSRABIT(ADIF)));addata=ADCL;addata+=ADCH*256;return addata;}/*超声波传感器模块*/volatile uint count0=0,count1=0,count2=0,count3=0,distance0=0,flag0=0,flag1=0,distance1=0,flag2=0,distance2=0;void INT_init(){DDRD=~BIT(PD2);PORTD=~BIT(PD2);DDRD=~BIT(PD3);PORTD=~BIT(PD3);DDRB=~BIT(PB2);PORTB=~BIT(PB2);GICR|=BIT(INT1)|BIT(INT0)|BIT(INT2);MCUCR|=BIT(ISC10)|BIT(ISC10)|BIT(ISC00)|BIT(ISC01);/*高电平产生中断*/MCUCSR|=BIT(ISC2);}void CLK2_init(){DDRC|=BIT(PC5);PORTC=~BIT(PC5);TCCR2|=BIT(WGM21)|BIT(WGM20)|BIT(CS20);/*0分频 160us计时器溢出*/TCNT2=0x00;TIMSK|=BIT(TOIE2)|BIT(OCIE2);OCR2=0xA0;}SIGNAL(SIG_INTERRUPT0){flag0++;if(flag0==1){GICR=~BIT(INT0);MCUCR=~BIT(CS00);/*低电平产生中断*/GICR|=BIT(INT0);}if(flag0==2){distance0=count0/4;flag0=0;GICR=~BIT(INT0);MCUCR|=BIT(ISC00);/*高电平产生中断*/GICR|=BIT(INT0);}count0=0;}SIGNAL(SIG_INTERRUPT1){flag1++;if(flag1==1){GICR=~BIT(INT1);MCUCR=~BIT(CS10);GICR|=BIT(INT1);}if(flag1==2){distance1=count1/4;flag1=0;GICR=~BIT(INT1);MCUCR|=BIT(ISC10);GICR|=BIT(INT1);}count1=0;}SIGNAL(SIG_INTERRUPT2)

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档