/*
* Ko_Timer_Counter_SL.c
*
* Created: 2021-01-07 오후 9:25:09
* Author : Ko
*/
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 16000000UL
volatile unsigned long timer0; // 오버플로마다 1씩 증가될 변수
volatile unsigned int number; // 증가되어 7-세그먼트 LED에 디스플레이 될 숫자
unsigned char led[]={0x48, 0x7D, 0xC4, 0x64, 0x71, 0x62, 0x43, 0x7C, 0x40, 0x70};
// 타이머 / 카운터0 인터럽트 서비스 루틴
ISR(TIMER0_OVF_vect) {
timer0++;
// 오버플로 횟수가 4의 배수일 때 10자리 또는 2의 배수일때 1자리 디스플레이
if(timer0 % 2 ==0){
PORTC = (timer0%4==0) ? led[(number%100) / 10] : led[number%10];
PORTD = (PORTD | 0xC0) & ~(1<<((timer0 % 4 == 0) ? PD7 : PD6));
}
}
int main(void){
DDRC = 0xFF;
DDRD |= 1 << PD7 | 1<<PD6; // 번갈아가며 7-세그먼트 LED를 켜기 위한 출력
TCCR0 = 1<<CS02 | 1<<CS01; // 256 프리스케일 설정
TIMSK |= 1<<TOIE0; // 타이머/카운터0 인터럽트 활성화
timer0 = 0;
sei();
number = 12;
while(1);
return 0 ;
}
12가 떠야하는데 2와 1이 겹쳐져서
ㅡ
ㅣ
ㅡ
ㅣ ㅣ
ㅡ 이렇게 뜸.. 7segment를 두자리껄 쓰지말고 한자리수 두개를 써볼것?
'임베디드 > Atmega128' 카테고리의 다른 글
JMOD-128-1 AtmelStudio 7.0 에서 연결하기 (0) | 2021.01.21 |
---|---|
atmega128 timer/counter0 위상정정 PWM 이용한 DC모터 속도제어 (0) | 2021.01.09 |
atmega128 timer/counter0 normal 모터 (0) | 2021.01.07 |
고속pwm으로 똑같이 동작하게 (0) | 2021.01.06 |
atmega128 timer/counter0 normal LED깜빡이기 (0) | 2021.01.06 |