달력

5

« 2026/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2023. 12. 6. 22:24

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
:
Posted by gonlab