7. 타이머/카운터0 Normal Mode 실습 Atmega3282023. 12. 6. 22:24
#include <mega328p.h>
#include <delay.h>
unsigned char cnt=0;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0x64;
cnt++;
if(cnt==100) //TCNT0=0x64, 16Mhz의 경우 약 1초
{
PORTB=0<<PORTB7) | (0<<PORTB6) | (1<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) |
(0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);// PORTB=0x00;
delay_ms(500);
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) |
(0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); //PORTB=0xFF;
cnt=0;
}
}
void main(void)
{
DDRB=(0<<DDB7) | (0<<DDB6) | (1<<DDB5) | (0<<DDB4) | (0<<DDB3) |
(0<<DDB2) | (0<<DDB1) | (0<<DDB0);
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) |
(0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00);
TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (1<<CS00);
TCNT0=0x64;
OCR0A=0x00;
OCR0B=0x00;
TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (1<<TOIE0);
#asm("sei")
while (1)
{
}
}//

'Atmega328' 카테고리의 다른 글
| 9. 타이머/카운터0 CTC Mode 실습 (1) | 2023.12.06 |
|---|---|
| 8. 타이머/카운터0 Count Mode 실습 (1) | 2023.12.06 |
| 6. 외부 인터럽트 제어실습 (1) | 2023.12.05 |
| 5. 포트 입력 실습 2 (1) | 2023.12.05 |
| 4. 포트 입력 실습 1 (1) | 2023.12.05 |
