《定时器0的舵机控制(任意角度包括往复运动).doc》由会员分享,可在线阅读,更多相关《定时器0的舵机控制(任意角度包括往复运动).doc(3页珍藏版)》请在金锄头文库上搜索。
1、#include #include#define uint unsigned int#define uchar unsigned char/#define D_1 PORTB|=0X02/#define D_0 PORTB&=0XFd#define SET_BIT(x,y) (x|=(1y)/置位#define CLR_BIT(x,y) (x&=(1y)/取反uint i=0,j=5,k; void delay_1ms(uint z) uint x,y; for(x=0;xz;x+ ) for(y=0;y1141;y+); void port_init() DDRA=0XFF; DDRB=0X
2、ff; DDRC=0XFF; PORTA=0Xff; PORTB=0XFF; PORTC=0XFF;void timer0_init() TCCR0=0X00;/STOP TCNT0=0xe0;/设定定时器0.125ms的定时初值 /OCR0=0X7D; TCCR0=0X03;/64分频#pragma interrupt_handler timer0_ovf_isr:10void timer0_ovf_isr(void) TCNT0=0Xe0;/重装0.125ms初值 if(i=80) i=0; void device_init() SREG=0X00;/关中断 port_init(); ti
3、mer0_init(); MCUCR=0X00; GICR=0X00; TIMSK=0X01; SREG=0X80;/开中断 SEI(); /re-enable interruptsvoid main() device_init(); /while(1) j=2;delay_1ms(150);j=3;delay_1ms(150);j=4;delay_1ms(150);j=5;delay_1ms(1000);j=4;delay_1ms(150);j=3;delay_1ms(150);j=2;delay_1ms(150);/*j=6;delay_1ms(150);j=7;delay_1ms(150);j=0;*/