BASIC4MCU | 질문게시판 | iar 소스코드 수정 도와주세요ㅠㅠ
페이지 정보
작성자 이민호 작성일2018-09-09 19:30 조회10,740회 댓글1건본문
안녕하십니까!!
마스터님 어제 알려주신 코드를 이용하여 디코딩을 하는 중입니다!!
문제가 있어서 질문드립니다!
일단 첫번째로 아트메가128전원을 키면 세븐세그먼트에 on/off스위치에 on을 누르지 않아도 30이 떠있어야합니다!!
두번째는 A1포트입력 포트에 신호를 줘도 받지 않는 다는 점입니다 그래서 A1입력 포트를 E0포트로 변경해야합니다!!
이렇게 수정 부탁드립니다,,,
자꾸 부탁드려서 죄송합니다...
감사합니다!
#include <iom128.h>
#include <ina90.h>
//
volatile unsigned char fnd[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
volatile char flag=0,run=0,mode=0,buf[2];
volatile int cnt=0;
//
#pragma vector=TIMER0_OVF_vect
__interrupt void TIMER0_OVF_Isr(void){ // 1ms
static char fnd_cnt=0;
TCNT0=131;
PORTC&=~0x80; PORTD=0x7F; // 세그먼트 OFF
if(run){
switch(fnd_cnt){
case 0: PORTD=fnd[buf[0]]; PORTD|=0x80; break;
case 1: PORTD=fnd[buf[1]]; PORTC|=0x80; break;
}
if(++fnd_cnt>1)fnd_cnt=0;
//
if(mode==0){ if(++cnt>15000)cnt=0; } // 30 // 15sec
if(mode==1){ if(++cnt>10000)cnt=0; } // 60 // 10sec
if(mode==2){ if(++cnt> 5000)cnt=0; } // 90 // 5sec
if(cnt==0){
if(PORTC&1){ PORTC&=~1; PORTC|=2; }
else { PORTC&=~2; PORTC|=1; }
}
}
else{ PORTC&=~3; }
}
//
void main(){
DDRC=0x83; DDRD=0xFF;
TCCR0=4; TCNT0=131; TIMSK=1; //8000000/64/(256-131),1ms
__enable_interrupt();
while(1){
if(PINA&1==0)run=1;
else run=0; // PA0 // 토글스위치 // ON/OFF
//
if(PINA&2==0){
if(flag==0){ flag=1; if(++mode<2)mode=0; cnt=0; } // PA1 // 푸쉬스위치
}
flag=0;
//
if(mode==0){ buf[0]=3; buf[1]=0; } // 30 // 15sec
if(mode==1){ buf[0]=6; buf[1]=0; } // 60 // 10sec
if(mode==2){ buf[0]=9; buf[1]=0; } // 90 // 5sec
}
}
댓글 1
조회수 10,740이민호님의 댓글
이민호 작성일
일단 포트를 사용하려고 이렇게 변경해봤습니다!
void main(){
DDRA=0xfe;
DDRE=0xfe;
DDRC=0x83;
DDRD=0xFF;
TCCR0=4; TCNT0=131; TIMSK=1; //8000000/64/(256-131),1ms
__enable_interrupt();
while(1){
PORTB=0x01;
if(PINA==0x00)run=1;
else run=0; // PA0 // 토글스위치 // ON/OFF
//
if(PINE==0x00){
if(flag==0){ flag=1; if(++mode<2)mode=0; cnt=0; } // PA1 // 푸쉬스위치
}
flag=0;
//
if(mode==0){ buf[0]=3; buf[1]=0; } // 30 // 15sec
if(mode==1){ buf[0]=6; buf[1]=0; } // 60 // 10sec
if(mode==2){ buf[0]=9; buf[1]=0; } // 90 // 5sec
}
}