BASIC4MCU | 질문게시판 | atmega128 uart FND 연동
페이지 정보
작성자 avrdream 작성일2018-12-12 19:04 조회6,312회 댓글2건본문
항상 답변 잘읽고 있습니다 매우 감사합니다 !! 정말 도움됩니다
그러다가 또 막혀서 질문 올립니다 ㅜ
#include <mega128.h>
#include <delay.h>unsigned RXD(void)
{
while(!(UCSR0A & 0x80)); // RXC0=1? (수신완료) :: 수신완료하면 while(0)이 되 빠져나온다
return UDR0;
}void TXD(char ch)
{
while(!(UCSR0A & 0x20)); // UDRE0=1? (전송데이터 레지스터빔) ;; 버퍼 받을준비 됬다
UDR0=ch;
}
void main()
{
unsigned char FND[]={0x3F,0X06,0X5B,0X4F,0X66,0X6D,0X7C,0X07,0X7F,0X67}; // 0~9
unsigned char ch;
DDRA=0xff; // port A 출력 -> FND 숫자
DDRC=0xff; // port C 출력 -> FND 자리 선택
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x86;
UBRR0H=0;
UBRR0L=103; //
while(1) // UART - 컴퓨터 송수신
{
ch=RXD();
TXD(ch);
}
while(ch) //uart로 받아 온 숫자 FND 출력
{
delay_ms(100);
PORTA=FND[ch] ;
PORTC=0x0e;
}
}
여기서 FND 출력 부분 while(ch)~~
이 소스는
uart로 키보드 값을 수신받아
FND로 키보드 값을 출력하는건데
FND는 안들어오네요 ..
어디가 어떻게 잘못된건가요 ??
혹시 ch가 숫자는 안받는다 이런거 떄문인가요 ?
댓글 2
조회수 6,312master님의 댓글
master 작성일
while(1){
ch=RXD(); TXD(ch); // UART - 컴퓨터 송수신
}
무한루프에서 밖(아래)에 있기 때문에 실행되지 않는겁니다.
master님의 댓글
master 작성일
while(1){
ch=RXD(); TXD(ch); // UART - 컴퓨터 송수신
PORTA=FND[ch] ; PORTC=0x0e;
}