|
我调了好久了,引脚一点反应都没有,以下是我的程序,在时钟1中断里改变OCR1A,OCR1B,OCR1C的值来调节占空比,请各位帮我看看吧:
unsigned char angle0_h=0x05,angle0_l=0xDC;
unsigned char angle1_h=0x05,angle1_l=0xDC;
unsigned char angle2_h=0x05,angle2_l=0xDC;
static void io_init(void)//
{
PORTA = 0x08;
DDRA = 0xFF;
PORTB = 0xFF;
DDRB = 0xFF;
PORTC = 0x00;
DDRC = 0x00;
PORTD = 0xFF;
DDRD = 0xFF;
PORTE = 0xFF;
DDRE = 0x0F;
PORTF = 0xFF;
DDRF = 0xFF;
PORTG = 0x1F;
DDRG = 0x1F;
}
///////////////////////////////////////////
//时钟初始化:
void timer1_init(void)
{ TCCR1B = 0x00; //stop
TCNT1H = 0x00; //setup
TCNT1L = 0x00;
OCR1AL = 0xDC;
OCR1AH = 0x05;//1500
OCR1BH = 0x05;
OCR1BL = 0xDC;//1500
OCR1CH = 0x05;
OCR1CL = 0xDC;//1500
ICR1H = 0x4E;
ICR1L = 0x20;//20000
TCCR1A = 0xAA;//COM1A1 COM1A0 COM1B1 COM1B0 COM1C1 COM1C0 WGM11 WGM10
//1 0 1 0 1 0 1 0
TCCR1B = 0x1A;//ICNC1 ICES1 – WGM13 WGM12 CS12 CS11 CS10
} //0 0 0 1 1 0 1 0 8分频
////////////////////////////////////////////////////////////////////////////
#pragma interrupt_handler timer1_ovf_isr:15
void timer1_ovf_isr(void)
{
OCR1AH = angle0_h;
OCR1AL = angle0_l;
OCR1BH = angle1_h;
OCR1BL = angle1_l;
OCR1CH = angle2_h;
OCR1CL = angle2_l;
}
void DeviceInit(void)
{
CLI();
io_init;
timer1_init();
TIMSK = 0x04; //timer interrupt sources
MCUCR = 0x00;
SEI();
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。
|