◆◆ ATmega128 : Interrupt 제어 - FND P.151 ◆◆
/*
외부 인터럽트 제어 - FND
SW8(INT4) - FND 1의 자리 / SW14(INT5) - FND 10의 자리
SW15(INT6) - FND 100의자리 / SW16(INT7) - FND 1000의 자리 카운트 되는
0211A_Interrupt_p151.c
*/
#include <mega128.h>
#include <delay.h>
char Seg_pat[10] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f };
char N1 = 0, N10 = 0, N100 = 0, N1000 = 0;
void Seg4_out(void);
void main(void)
{
DDRB = 0xff;
DDRF = 0b11110000;
EICRB = 0b10101010;
EIMSK = 0b11110000;
SREG = 0x80;
while(1) Seg4_out();
}//end main
void Seg4_out(void){
PORTF = 0b11100000;
PORTB = Seg_pat[N1];
delay_ms(5);
PORTF = 0b11010000;
PORTB = Seg_pat[N10];
delay_ms(5);
PORTF = 0b10110000;
PORTB = Seg_pat[N100];
delay_ms(5);
PORTF = 0b01110000;
PORTB = Seg_pat[N1000];
delay_ms(5);
}//endSeg4_out
interrupt [EXT_INT7] void External_int7(void){
N1 = (N1 +1) % 10; // 1자리 +1
}//end7
interrupt [EXT_INT6] void External_int6(void){
N10 = (N10 +1) % 10; // 10자리 +1
}//end6
interrupt [EXT_INT5] void External_int5(void){
N100 = (N100 + 1) %10; // 100자리 +1
}//end5
interrupt [EXT_INT4] void External_int4(void){
N1000 = (N1000 +1 ) %10;
}//end4
◆◆ ATmega128 : Interrupt 제어 - FND P.155 ◆◆
/*
외부 인터럽트 제어 응용 - FND p.155
ABCD 생산라인 중 MCU100A 모델은 AB라인,
MCU200A모델은 CD라인에서 생산 , 구분제어~
0211B_Interrupt_p155.c
*/
#include <mega128.h>
#include <delay.h>
int i, j, k, l = 0;
char Seg[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 };
void main(void)
{
DDRB = 0xff;
DDRF = 0xf0;
DDRE = 0x00;
EICRB = 0b10101010;
EIMSK = 0b11110000;
SREG = 0x80;
while(1){
PORTF = 0b11100000;
PORTB = Seg[i];
if( i>=10) i = 0, k++;
delay_ms(5);
PORTF = 0b11010000;
PORTB = Seg[k];
if( k >=10 ) k = 0;
delay_ms(5);
PORTF = 0b10110000;
PORTB = Seg[j];
if( j >= 10 ) j = 0, l++;
delay_ms(5);
PORTF = 0b01110000;
PORTB = Seg[l];
if( l >=10 ) l = 0;
delay_ms(5);
}//endwhlie
}//end main
interrupt [EXT_INT4] void Ex_int4(void){
i++;
}//end4
interrupt [EXT_INT5] void Ex_int5(void){
i++;
}//end5
interrupt [EXT_INT6] void Ex_int6(void){
j++;
}//end6
interrupt [EXT_INT7] void Ex_int7(void){
j++;
}//end7