질문게시판 > 답변 : atmega128변환도와주세요....ㅠㅠ

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

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

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

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

BASIC4MCU > 질문게시판

답변 : atmega128변환도와주세요....ㅠㅠ

페이지 정보

작성자 master 작성일18-12-11 16:31 조회4,161회 댓글0건

본문

 

// DateTime : 2018-12-11 오후 4:36:53
// by Ok-Hyun Park
//
#include <mega128.h
#include <delay.h>
#include <stdio.h>
#include <stdlib.h>
//
#define SEG    PORTA //Port A 7-SEG data로 사용
#define Q      PORTB
#define KEY_C  PORTC //Port C Key Matrix 입력신호
#define KEY_L  PINC //Port C Key Matrix 출력신호
//
char fnd[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x98,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f};
unsigned char count=0;
int time=10;
//unsigned char flag=0;
int com_number;
int life=8;
char user_number[6]={0,};
int user_num=0;
char up=0;
int seed=0;
//
//char Getch(){ while(!(UCSR0A&0x80)); return UDR0; }
//
void Putch(char d){ while(!(UCSR0A&0x20)); UDR0=d; }
//
void PutSt(char *s){ while(*s)Putch(*s++); }
//
void light(int l){
  switch(l){
    case 8PORTE=0b11110000PORTG=0b00001111break;
    case 7PORTE=0b01110000PORTG=0b00001111break;
    case 6PORTE=0b00110000PORTG=0b00001111break;
    case 5PORTE=0b00010000PORTG=0b00001111break;
    case 4PORTE=0b00000000PORTG=0b00001111break;
    case 3PORTE=0b00000000PORTG=0b00000111break;
    case 2PORTE=0b00000000PORTG=0b00000011break;
    case 1PORTE=0b00000000PORTG=0b00000001break;
  }
}
//
interrupt [EXT_INT0void ext_int0_isr(void){
  PutSt("\n\n\r=========================\n\r Game Start \n\r=========================\n\r");
  PutSt("0~100 사이의 수를 맞춰보세요!\n\r");
  life=8;
  time=10;
  printf("=>기회가%d번 남았습니다.\n\r",life); delay_ms(500);
  TCCR0=0x07;
  srand(seed);
  com_number=rand()%100+1;
  light(life);
}
//
interrupt [TIM0_OVFvoid timer0_ovf_isr(void){ 
  TCNT0=131;
  if(++count==125){ count=0;
    time--;
    SEG=fnd[time];
    if(time==0){ time=10;
      life--;
      printf("\n\rwarning!!입력에 실패했습니다!!\n\r");
      up=0;
      if(life>0){ light(life); printf("=>기회가%d번 남았습니다.\n\r",life); }
      else{
        printf("당신은 패배했습니다.\n\r아쉽네요.정답은%d입니다.\n\r",com_number);
        TCCR0=0// 타이머 정지
        PutSt("=========================\n\r Game End \n\r=========================\n\n\r");
      }
    }
  }
}
//
void main(void){
  unsigned char buff=0;
  DDRA=0xff;
  DDRB=0x0f;
  PORTC=0x0FDDRC=0x0F//(c0-c3: 출력,c4-c7: 입력)
  DDRE=0xff;
  DDRG=0xff;
  SEG=fnd[0]; //7-Segment에 '0'출력
  Q=0x0e// 모든 7-Seg 선택
  EICRA=0x0AEIMSK=0x01// INT0 하강레벨감지
  UCSR0B=0x18UBRR0L=0x08// 115200 bps
  TCNT0=131TIMSK=0x01;
  SREG=0x80;
  while(1){
    seed++;
    KEY_C=0xFe//Port B에 1111 1110 출력 3 7 B C line Enable
    delay_ms(1); //시간지연 함수 호출
    buff=KEY_L//buff에 PortC 값을 저장한다.
    buff=buff&0xF0//buff값에 0x0f AND Mask
    switch(buff>>4){
      case 0x0ePutch('0'); user_number[up++]='0'delay_ms(200); break// 1110
      case 0x0dPutch('4'); user_number[up++]='4'delay_ms(200); break// 1101
      case 0x0bPutch('8'); user_number[up++]='8'delay_ms(200); break//1011
    }
    delay_ms(1);
    KEY_C=0xFC//Port B에 1111 1101 출력 1 5 9 D line Enable
    delay_ms(1); //시간지연 함수 호출
    buff=KEY_L//buff에 PortC 값을 저장한다.
    buff=buff&0xF0//buff값에 0x0f AND Mask
    switch(buff>>4){
      case 0x0ePutch('1'); user_number[up++]='1'delay_ms(200); break// 1110
      case 0x0dPutch('5'); user_number[up++]='5'delay_ms(200); break// 1101
      case 0x0bPutch('9'); user_number[up++]='9'delay_ms(200); break//1011
    }
    delay_ms(1);
    KEY_C=0xFB//Port B에 1111 1011 출력 2 6 A E line Enable
    delay_ms(1); //시간지연 함수 호출
    buff=KEY_L//buff에 PortC 값을 저장한다.
    buff=buff&0xF0//buff값에 0x0f AND Mask
    switch(buff>>4){
      case 0x0ePutch('2'); user_number[up++]='2'delay_ms(200); break// 1110
      case 0x0dPutch('6'); user_number[up++]='6'delay_ms(200); break// 1101
      case 0x0b//1011
      // 입력 완료
      PutSt("\n\r");
      count=0time=0user_number[up++]='\0';
      life--;
      user_num=atoi(user_number);
      if(life>0){
        if(user_num==com_number){ PutSt("당신이 이겼습니다.축하합니다!\n\r"); }
        else if(user_num>com_number){
          printf("정답보다 입력한 숫자가 큽니다.\n\r=>기회가%d번 남았습니다.\n\r",life);
          light(life);
          time=10;
        }
        else{
          light(life);
          printf("정답보다 입력한 숫자가 작습니다.\n\r=>기회가%d번 남았습니다.\n\r",life);
          time=10;
        }
      }
      else{
        TCCR0=0// 타이머 정지
        printf("당신은 패배했습니다.\n\r아쉽네요.정답은%d입니다.\n\r",com_number);
        PutSt("=========================\n\r Game End \n\r=========================\n\n\r");
      }
      up=0delay_ms(200);
      break;
    }
    delay_ms(1);
    KEY_C=0xF7//Port B에 1111 0111 출력 3 7 B F line Enable
    delay_ms(1); //시간지연 함수 호출
    buff=KEY_L//buff에 PortC 값을 저장한다.
    buff=buff&0xF0//buff값에 0x0f AND Mask
    switch(buff>>4){
      case 0x0ePutch('3'); user_number[up++]='3'delay_ms(200); break// 1110
      case 0x0dPutch('7'); user_number[up++]='7'delay_ms(200); break// 1101
    }
    delay_ms(1);
  }
}

 

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

댓글 : 0

조회수 : 4,161

등록된 댓글이 없습니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 아두이노 센서 쉴드 v5.0 과 음성인식 모듈(V2)통… 첨부파일AutoSun 새글 17:58
질문 초음파 센서를 사용한 dc모터 제어에 관해 질문 있습니… 첨부파일뉴비에오 새글 22-07-04
답변 답변 : 초음파 센서를 사용한 dc모터 제어에 관해 질… 댓글[2] master 새글 10:56
질문 아두이노 Sensor Shield 5.0 시리얼 통신 … 댓글[2] AutoSun 새글 22-07-04
질문 Atmega 코드 좀 봐주세요. 댓글[1] 첨부파일chelsea 새글 22-07-04
질문 아두이노 while문 탈출 질문 yhj2644  22-07-01
답변 답변 : 아두이노 while문 탈출 질문 댓글[8] master  22-07-01
질문 ESP32-C3 리튬폴리머 ADC 전압 체크 관련 문의… 댓글[3] cansad  22-06-30
질문 ESP32-C3 리튬폴리머 ADC 전압 체크 관련 문의 댓글[3] cansad  22-06-30
질문 빵판없이 디스플레이 넣을 수 있을까요? 댓글[2] 첨부파일오소로롯  22-06-29
질문 라즈베리파이4 신형 선택문제 댓글[1] maximum  22-06-26
질문 음전압 ADC 댓글[2] 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
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전