[AVR 기초] 스탑워치2
*키트는 Atmega128A를 사용하였습니다* //StopWatch SW1 인터럽트 발생시 시간 o #include #include //인터럽트 헤더파일 선언 >> 인터럽트 사용 가능 #define F_CPU 16000000UL #include volatile int currenttime, stoptime = 0; volatile int go = 1;//변수 GO 만듬. GO 의 값 : 1 설정 unsigned char fnd[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x67}; unsigned char fnd_pos[4] = {0x01, 0x02, 0x04, 0x08}; volatile int count = 0; ISR(INT4_vec..
[AVR 기초] 스탑워치 1
*키트는 Atmega128A를 사용하였습니다* //StopWatch SW1 인터럽트 발생시 시간X #include #include #define F_CPU 16000000UL//실제 동작 clock Hz -> 16MHz #include //딜레이 헤더파일 선언 volatile int currenttime, stoptime = 0;//변수를 선언할 때 앞에 volatile 을 붙이면 컴파일러는 해당 변수를 최적화에서 제외하여 항상 메모리에 접근하도록 만듬 //currenttime, stoptime 이라는 변수만듬 unsigned char fnd[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x67}; unsigned char fnd_pos[4..
[AVR 기초] 스위치를 이용한 FND 4자리 1씩 증가하기
*키트는 Atmega128A를 사용하였습니다* 스위치를 이용해 FND 4자리 스위치 1씩 증가하기 입니다. 예시를 보겠습니다. 코드는 다음과 같습니다. #include #include //인터럽트 헤더파일 선언 #define F_CPU 16000000UL #include unsigned char fnd[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x67}; unsigned char fnd_pos[4] = {0x01, 0x02, 0x04, 0x08}; volatile int count = 0;//변수 count =0. 인터럽트와 메인에서 함께 사용하는 변수는 volatile을 선언하는것이 안전 ISR(INT4_vect){//Interrupt..
[AVR 기초] FND 4자리를 한번에 나타내기
*키트는 Atmega128A를 사용하였습니다* #include #define F_CPU 16000000UL #include unsigned char fnd[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x27, 0x7f, 0x6f}; unsigned char fnd_pos[4] = {0x01, 0x02, 0x04, 0x08} ; void fourth(int x){//fnd의 4번째 자리를 나타내는 함수 PORTG = fnd_pos[3];//PORTG에 fnd_pos[3]의 값 PORTC = fnd[x];//PORTC에 main 함수에서 x의 값을 받아 fnd[x] 저장 } void third(int y){//fnd의 3번째 자리를 나타내는 함수 PORTG = f..
[AVR 기초] FND 0~9까지 나타낸 후 한칸씩 옮겨가기
*키트는 Atmega128A를 사용하였습니다* 왼쪽서부터 0~9까지 나타낸 후 한칸씩 옮겨가는 코드입니다. #include #define F_CPU 16000000UL #include int main(void) { /* Replace with your application code */ DDRC = 0xff;//fnd의 포트는 portc. PORT C를 입/출력으로 설정 DDRG = 0x0f;//fnd의 자리를 결정하는 포트. 4개의 자리만 있기 때문에 0x0f unsigned char fnd[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x27, 0x7f, 0x6f};//0~9를 나타내는 HEX값 unsigned char fnd_pos[4] = {0x01, 0..