BASIC4MCU | 질문게시판 | KUT_128_COM 답변입니다.
페이지 정보
작성자 master 작성일2022-12-16 10:16 조회110회 댓글0건본문
#include <mega128.h>
#include <delay.h>
//
//char seg_pat[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//
char seg_H[16]={0x30,0x00,0x50,0x40,0x60,0x60,0x70,0x00,0x70,0x60,0x70,0x70,0x30,0x50,0x70,0x70};
char seg_L[16]={0xf0,0x60,0xb0,0xf0,0x60,0xd0,0xd0,0x70,0xf0,0xf0,0x70,0xc0,0x90,0xe0,0x90,0x10};
//
char key_flag=0,adc_flag=0,d[4];
int ad_val,key_val=0,disp_val=0,adc_cnt=0;
long sum=0;
//
void clac(int n){ d[0]=n/1000; d[1]=n/100%10; d[2]=n/10%10; d[3]=n%10; }
//
interrupt [EXT_INT4] void external_int4(void){ key_val+=1; if(key_val>1500)key_val=0; key_flag=1; } // KEY1
interrupt [EXT_INT5] void external_int5(void){ key_val+=10; if(key_val>1500)key_val=0; key_flag=1; } // KEY2
interrupt [EXT_INT6] void external_int6(void){ key_val+=100; if(key_val>1500)key_val=0; key_flag=1; } // KEY3
interrupt [EXT_INT7] void external_int7(void){ key_val+=1000; if(key_val>1500)key_val=0; key_flag=1; } // KEY4
//
interrupt [TIM0_COMP] void timer0_comp_isr(void){ // 매치 인터럽트 1ms
static char c=0;
PORTG=0; PORTD=seg_L[d[c]]; PORTB=seg_H[d[c]]; PORTG=1<<c;
//
sum+=ADCW;
if(++adc_cnt>99){ adc_cnt=0; ad_val=sum*5/1023; sum=0; adc_flag=1; }
}
//
void main(void){
DDRB=0xF0; DDRD=0xF0; DDRG=0x0F; // 세그먼트
ADMUX=0x40: ADCSRA=0xE7;
TCCR0=0x0C; OCR0=249; TIMSK=0x02; // 16000000/64/(1+249),1ms
EICRB=0xAA; EIMSK=0xF0; // 외부인터럽트 4,5,6,7 하강 에지
SREG=0x80;
while(1){
if(key_flag){ key_flag=0; disp_val=ad_val+key_val; clac(disp_val); }
if(adc_flag){ adc_flag=0; disp_val=ad_val+key_val; clac(disp_val); }
}
}
https://manager3.dotname.kr/OHM_DATA/lE060408D/manual/kut128_comm_board_manual.pdf
댓글 0
조회수 110등록된 댓글이 없습니다.