📄 #main.c#
字号:
/** ----------------------------------------------------------------------------* "THE BEER-WARE LICENSE" (Revision 42):* <joerg@FreeBSD.ORG> wrote this file. As long as you retain this notice you* can do whatever you want with this stuff. If we meet some day, and you think* this stuff is worth it, you can buy me a beer in return. Joerg Wunsch* ----------------------------------------------------------------------------** Simple AVR demonstration. Controls a LED that can be directly* connected from OC1/OC1A to GND. The brightness of the LED is* controlled with the PWM. After each period of the PWM, the PWM* value is either incremented or decremented, that憽痵 all.** $Id: simple-demo.c,v 1.3 2002/02/11 19:51:51 j Exp $*/#include <avr/io.h>#include <avr/interrupt.h>#include <sig-avr.h>#if defined(__AVR_AT90S2313__)# define OC1 PB3# define OCR OCR1L# define DDROC DDRB#elif defined(__AVR_AT90S2333__) || defined(__AVR_AT90S4433__)# define OC1 PB1# define DDROC DDRB# define OCR OCR1L#elif defined(__AVR_AT90S4414__) || defined(__AVR_AT90S8515__) || \defined(__AVR_AT90S4434__) || defined(__AVR_AT90S8535__) || \defined(__AVR_ATmega163__)# define OC1 PD5# define DDROC DDRD# define OCR OCR1AL#else# error "Don憽痶 know what kind of MCU you are compiling for"#endifvolatile uint16_t pwm;volatile enum{ UP, DOWN} direction;SIGNAL(SIG_OVERFLOW1){ switch (direction) { case UP: if (++pwm == 1023) direction = DOWN; break; case DOWN: if (--pwm == 0) direction = UP; break; } outw(OCR, pwm);}void ioinit(void){ #if defined(COM11) outp(BV(PWM10)|BV(PWM11)|BV(COM11), TCCR1A); /* tmr1 is 10-bit PWM */ #elif defined(COM1A1) outp(BV(PWM10)|BV(PWM11)|BV(COM1A1), TCCR1A); /* tmr1 is 10-bit PWM */ #else # error "need either COM1A1 or COM11" #endif outp(BV(CS10), TCCR1B); /* tmr1 running on full MCU clock */ outw(OCR, 0); /* set PWM value to 0 */ outp(BV(OC1), DDROC); /* enable OC1 and PB2 as output */ timer_enable_int(BV(TOIE1)); sei(); /* enable interrupts */}int main(void){ ioinit(); for (;;) /* wait forever, the interrupts are doing the rest */; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -