BASIC4MCU | 질문게시판 | Atmega128 USART 질문입니다.
페이지 정보
작성자 dnjsjj 작성일2023-12-13 00:38 조회1,003회 댓글1건본문
microchip studio , atmega128 사용입니다
USART사용한 간단한 야구 게임인데
tera term에서
"숫자 3개를 입력하세요! (예 : 1 2 3 ) " 까지는 나오는데
입력값을 받지않고 결과값도 나오지 않습니다..
어디를 수정해야할까요..?ㅠㅠ
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <avr/interrupt.h>
char data;
int computer[3];
int player[3];
volatile int strike, ball;
void Port_Init(void)
{
UCSR1A = 0x00;
UCSR1C = (1 << UCSZ11) | (1 << UCSZ10);
UCSR1B = (1 << RXCIE1) | (1 << RXEN1) | (1 << TXEN1);
UBRR1H = 0x00;
UBRR1L = 0x07;
}
void putch_USART1(char data)
{
while (!(UCSR1A & (1 << UDRE1)))
;
UDR1 = data;
}
void puts_USART1(const char *str)
{
while (*str != 0)
{
putch_USART1(*str);
str++;
}
_delay_ms(10); // 메시지 전송 후 지연 추가
}
char getch_USART1(void)
{
while (!(UCSR1A & (1 << RXC1)))
;
return UDR1;
}
void gets_USART1(char *str)
{
char c;
while ((c = getch_USART1()) != '\n')
{
*str = c;
str++;
}
*str = '\0'; // 문자열을 null로 종료
}
void init_devices(void)
{
Port_Init();
sei();
}
void randomize(void)
{
srand((unsigned int)time(NULL));
while (1)
{
computer[0] = rand() % 10;
if (computer[0] != 0)
{
computer[1] = rand() % 10;
if (computer[1] != computer[0])
{
computer[2] = rand() % 10;
if (computer[2] != computer[1] && computer[2] != computer[0])
{
break;
}
}
}
}
strike = 0;
ball = 0;
}
void check(void)
{
if (computer[0] == player[0])
strike++;
if (computer[1] == player[1])
strike++;
if (computer[2] == player[2])
strike++;
if (computer[0] == player[1] || computer[0] == player[2])
ball++;
if (computer[1] == player[0] || computer[1] == player[2])
ball++;
if (computer[2] == player[0] || computer[2] == player[1])
ball++;
if (strike == 3)
{
puts_USART1("\n\r 축하합니다! 승리하셨습니다! \n");
puts_USART1("\n\r 새 게임 시작! \n");
randomize();
}
else
{
printf("\n\r 당신의 점수 -> %dS %dB ", strike, ball);
strike = 0;
ball = 0;
}
}
int main(void)
{
init_devices();
randomize();
while (1)
{
puts_USART1("\r 숫자 3개를 입력하세요! (예 : 1 2 3 ) \n\r -> ");
gets_USART1(player);
check();
}
return 0;
}
댓글 1
조회수 1,003master님의 댓글
master 작성일
정확한 이유를 추적하려면 시간상 어렵습니다만
int computer[10];
int player[10];
저라면 배열 크기를 늘려잡겠습니다.