질문게시판 > 답변 : 디버깅 오류가 있습니다 ㅜㅜ

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

답변 : 디버깅 오류가 있습니다 ㅜㅜ

페이지 정보

작성자 master 작성일18-12-13 17:46 조회3,577회 댓글0건

본문

 

// DateTime : 2018-12-13 오후 5:51:51
// by Ok-Hyun Park
//
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 16000000
#include <util/delay.h>
//
#define KEY_DN      1
#define EV_DN       2
#define EV_UP       4
#define EV_LONGDN   8
#define EV_DBCLICK  16
//
#define MIN_TERM    8
#define MAX_TERM    60
#define _DEBOUNCE   60
#define _LONG_HOLD  1000
#define _DC_GAP     250
//
typedef struct key_tag_type{
  volatile char  *INPORT;
  char            pin;
  volatile int8_t key;
  volatile int8_t tmr;
key_tag;
//
static int8_t _debounce_ticks;
static int8_t _long_hold_ticks;
static int8_t _dc_gap_ticks;
//모스부호,/ 0=null/1=./ 2=ㅡ /
int A[4]={ 1,2,0,0 },B[4]={ 2,1,1,1 },C[4]={ 2,1,2,1 },D[4]={ 2,1,1,0 },E[4]={ 1,0,0,0 },F[4]={ 1,1,2,1 },
G[4]={ 2,2,1,0 },H[4]={ 1,1,1,1 },I[4]={ 1,1,0,0 },J[4]={ 1,2,2,2 },K[4]={ 2,1,2,0 },L[4]={ 1,2,1,1 },
M[4]={ 2,2,0,0 },N[4]={ 2,1,0,0 },O[4]={ 2,2,2,0 },P[4]={ 1,2,2,1 },Q[4]={ 2,2,1,2 },R[4]={ 1,2,1,0 },
S[4]={ 1,1,1,0 },T[4]={ 2,0,0,0 },U[4]={ 1,1,2,0 },V[4]={ 1,1,1,2 },W[4]={ 1,2,2,0 },X[4]={ 2,1,1,2 },
Y[4]={ 2,1,2,2 },Z[4]={ 2,2,1,1 };
//
int curr=0,num=1,chanel=0,morse[4];
//
void LCD_command(unsigned char command){
  PORTB=commandPORTD=0x00PORTD=0x01PORTD=0x00_delay_us(50); PORTD=0x00;
}
//
void LCD_data(unsigned char data){
  PORTB=dataPORTD=0x02PORTD=0x03PORTD=0x02_delay_us(50); PORTD=0x00;
}
//
void LCD_clear(){ LCD_command(0x01); _delay_ms(2); }
//
void LCD_initialize(void){
  PORTD=0x03PORTD=0x02_delay_ms(2);
  LCD_command(0x38); LCD_command(0x0c); LCD_command(0x06); LCD_clear();
}
//
void LCD_string(unsigned char command,char *string){
  LCD_command(command);
  while(*string!='\0'){ LCD_data(*string); string++; }
}
//
void char_position(char x,char y){
  unsigned char position;
  if(y>1)y=1;
  if(x>15)x=15;
  position=y?x+0xc0x+0x80;
  LCD_command(position);
}
//
void Port_init(void){
  DDRB=0xff;
  PORTB=0x00;
  DDRD=0xff;
  PORTD=0x00;
}
//
void Port_Init(void){
  DDRE=0x00//BUTTON
  PORTE=0x00;
  DDRF=0xff;
  PORTF=0x00;
  DDRB=0xff//LCD
  PORTB=0x00;
  DDRD=0xff;
  PORTD=0x00;
  DDRF=0xff;
  PORTF=0x00;
  DDRE=0xff;
}
//
char GetBN(void){
  if((PINE&0x01)==0){ return '1'_delay_ms(100); while(PINE&0x01); _delay_ms(100); }
  if((PINE&0x02)==0){ return '2'_delay_ms(100); while(PINE&0x02); _delay_ms(100); }
  if((PINE&0x04)==0){ _delay_ms(100); return '3'_delay_ms(100); while(PINE&0x04); _delay_ms(100); }
  if((PINE&0x08)==0){ return '4'_delay_ms(100); while(PINE&0x08); _delay_ms(100); }
  if((PINE&0x10)==0){ return '5'_delay_ms(100); while(PINE&0x10); _delay_ms(100); }
  if((PINE&0x20)==0){ return '6'_delay_ms(100); while(PINE&0x20); _delay_ms(100); }
  return '0';
}
//
void spelling(char arr){
  char arr1=arr+65;
  switch(arr1){
    case'A'LCD_string(0x8f,"A"); break;
    case'B'LCD_string(0x8f,"B"); break;
    case'C'LCD_string(0x8f,"C"); break;
    case'D'LCD_string(0x8f,"D"); break;
    case'E'LCD_string(0x8f,"E"); break;
    case'F'LCD_string(0x8f,"F"); break;
    case'G'LCD_string(0x8f,"G"); break;
    case'H'LCD_string(0x8f,"H"); break;
    case'I'LCD_string(0x8f,"I"); break;
    case'J'LCD_string(0x8f,"J"); break;
    case'K'LCD_string(0x8f,"K"); break;
    case'L'LCD_string(0x8f,"L"); break;
    case'M'LCD_string(0x8f,"M"); break;
    case'N'LCD_string(0x8f,"N"); break;
    case'O'LCD_string(0x8f,"O"); break;
    case'P'LCD_string(0x8f,"P"); break;
    case'Q'LCD_string(0x8f,"Q"); break;
    case'R'LCD_string(0x8f,"R"); break;
    case'S'LCD_string(0x8f,"S"); break;
    case'T'LCD_string(0x8f,"T"); break;
    case'U'LCD_string(0x8f,"U"); break;
    case'V'LCD_string(0x8f,"V"); break;
    case'W'LCD_string(0x8f,"W"); break;
    case'X'LCD_string(0x8f,"X"); break;
    case'Y'LCD_string(0x8f,"Y"); break;
    case'Z'LCD_string(0x8f,"Z"); break;
  }
}
//
void Eng(void){
  LCD_clear();
  LCD_string(0x80,"Enter Message"); LCD_string(0x8f,"?");
  char spell[]={ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
  int i=0;
  char Strings[20];
  int j=0;
  int force=0;
  while(chanel==1){
    //스펠링이 들어갈 곳.
    char btn=GetBN();
    //force=0;
    switch(btn){
      case '1'if(i== 0){ i=26; } i--; spelling(i); if(force<3){ _delay_ms(500); force++; } else_delay_ms(200); } break;
      case '2'if(i==25){ i=-1; } i++; spelling(i); if(force<3){ _delay_ms(500); force++; } else_delay_ms(200); } break;
      case '3'Strings[j]=spell[i]; j++; LCD_string(0xc0,Strings); _delay_ms(1000); break;
      case '5'for(int k=0k<26k++)Strings[k]=' 'j=0LCD_string(0xc0,Strings); break;
      case '6'chanel=0break;
    } //switch
  } //while
}
//
void EGtoMS(void){ _delay_ms(500);
  chanel=1;
  LCD_clear();
  // LCD_command(0x0e);
  Eng();
}
//
void test(void){
  char test='A';
  switch(test){
    case 'A'LCD_string(0x8f,"A"); break;
  }
}
//
void hook_key(key_tag *k){
  if(k->tmr>0){
    if(k->tmr<_debounce_ticks)k->tmr++;
    else{
      if((*(k->INPORT)&k->pin)!=0){ k->key&=~KEY_DNk->key|=EV_UPk->tmr=-1; }
      else{
        if(k->tmr<_long_hold_ticks){ k->tmr++; if(k->tmr==_long_hold_ticks)k->key|=EV_LONGDN; }
      }
    }
  }
  else if(k->tmr<0){
    if(-k->tmr<_debounce_ticks)k->tmr--;
    else{
      if(((*k->INPORT)&(k->pin))==0){
        if(-k->tmr<_dc_gap_ticks)k->key|=EV_DBCLICK;
        k->key|=(KEY_DN|EV_DN);
        k->tmr=1;
      }
      elseif(k->tmr<_dc_gap_ticks)k->tmr--; }
    }
  }
  else{
    if((*(k->INPORT)&k->pin)!=0){ k->key=0k->tmr=-_dc_gap_ticks; }
    elsek->key=KEY_DNk->tmr=1; }
  }
}
//
int8_t getEV(key_tag *k){
  int8_t c;
  cli();
  c=k->key;
  k->key&=KEY_DN;
  sei();
  return c;
}
//
/*
void init_key(key_tag *k,volatile char *PORTE,int8_t pin_num,uint8_t term){
  *((volatile char*)(PORTE-1))&=~_BV(pin_num);
  k->INPORT=(volatile char*)(PORTE-2);
  k->pin=_BV(pin_num);
  if     (term<MIN_TERM)term=MIN_TERM;
  else if(term>MAX_TERM)term=MAX_TERM;
  _debounce_ticks=(_DEBOUNCE/term);
  _long_hold_ticks=(_LONG_HOLD/term);
}
*/
//
int main(void){
  char sceneNo='0',sceneNo0='0';
  Port_init();
  _delay_ms(50); //cache
  LCD_initialize();
  LCD_clear();
  _delay_ms(10);
  //main stage
  LCD_string(0x80,"1.ENG to MORSE");
  LCD_string(0xc0,"2.MORto ENG Ini2");
  while(chanel==0){
    //get a button main
    sceneNo=GetBN();
    if(sceneNo==sceneNo0)continue;
    switch(sceneNo){
      case '1'LCD_string(0x80,"--ch0ch0"); break;
      case '2'LCD_string(0x80,"ch0ch0ch0"); break;
      case '3'LCD_clear(); EGtoMS(); break;
      case '6'LCD_clear(); LCD_string(0x80,"1.ENG to MORSE"); LCD_string(0xc0,"2.MORto ENG Home"); break;
    }
  } //while
  return 0;
//main

 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 0

조회수 : 3,577

등록된 댓글이 없습니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 라즈베리파이4 신형 선택문제 maximum 새글 22-06-26
질문 음전압 ADC 댓글[1] 412904 새글 22-06-26
질문 아두이노 센서값 출력 질문입니다! 댓글[1] 아궁2  22-06-24
질문 ATmega128, ATmega28 RS232통신 첨부파일Moon4201  22-06-24
답변 답변 : ATmega128, ATmega28 RS232… 댓글[1] master 새글 22-06-25
질문 서보모터, 온습도센서 코드 질문 댓글[2] 첨부파일kshdlfaldfh  22-06-22
답변 답변 : 서보모터, 온습도센서 코드 질문 댓글[15] master  22-06-22
질문 steppermulti5 질문 응애  22-06-21
답변 답변 : steppermulti5 질문 댓글[1] master  22-06-22
질문 atmega128 avr usart 질문 snoflak  22-06-21
답변 답변 : atmega128 avr usart 질문 댓글[5] master  22-06-21
질문 사용자 정의 함수 변환 하는 방법 댓글[2] 첨부파일da0800  22-06-21
질문 atmega128 댓글[1] 양의노래  22-06-20
질문 아두이노 동시동작 재질문 댓글[9] 첨부파일죠르디  22-06-20
질문 초음파센서로 dc모터 제어하기 댓글[1] 첨부파일난쟁2  22-06-20
질문 아두이노 동시동작 댓글[7] 죠르디  22-06-19
질문 ATMEGA128 UART,FND 연동 질문 JMOD  22-06-19
답변 답변 : ATMEGA128 UART,FND 연동 질문 댓글[1] master  22-06-20
질문 atmeg128 질문이요 댓글[1] 첨부파일공대생er  22-06-18
질문 atmega128 초음파 센서로 신호등 시간초 늘리기 서동씨  22-06-18
답변 답변 : atmega128 초음파 센서로 신호등 시간초… 댓글[1] master  22-06-18
질문 atmega128 댓글[2] 망경이  22-06-18
질문 앱인벤터 이용해서 수동 자동 할라고하는데 ..잘안됩니다… 댓글[1] 따랑해영  22-06-18
답변 질문 : 앱인벤터 이용해서 수동 자동 할라고하는데 ..… 댓글[1] 첨부파일따랑해영  22-06-19
답변 질문 : 앱인벤터 이용해서 수동 자동 할라고하는데 .… 첨부파일따랑해영  22-06-19
질문 서보모터와 초음파센서 댓글[1] 브링미히어  22-06-17
질문 LCD 도와주세요 ㅜㅠㅠㅠ 댓글[2] 첨부파일dentist22  22-06-17
질문 안녕하세요 atmega128 질문드리고 싶습니다. (자… 댓글[3] dlcldl  22-06-17
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전