답변 : atmega128 uart 255이상 수입력
페이지 정보
작성자 master 작성일18-12-16 15:45 조회5,644회 댓글0건본문
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2018-12-16 오후 3:38:34
// by Ok-Hyun Park
//
#include <mega128.h>
#include <delay.h>
//
char FND[]={0x3F,0X06,0X5B,0X4F,0X66,0X6D,0X7d,0X07,0X7F,0X6f}; // 0~9
bit flag=0;
unsigned int tp=0,val=0;
//
void TX0_char(char c){ while(!(UCSR0A&0x20)); UDR0=c; }
void TX0_STR(char *s){ while(*s)TX0_char(*s++); }
//
interrupt[USART0_RXC]void INT_RX(){
char r;
r=UDR0;
UDR0=r;
//
if(r=='\n'){
val=tp; // val에 값을 저장하고
tp=0; // 초기화
flag=1; // 입력 완료 되었음을 알려줌
}
else if((r>='0')&&(r<='9')){
tp%=1000; // 천의 자리를 삭제하고
tp*=10; // 10을 곱해준 후
tp+=r&0x0F; // 1의 자리를 더해줌
}
}
//
void main(){
unsigned char d1=0,d2=0,d3=0,d4=0;
DDRA=0xff; DDRC=0xff;
UCSR0B=0x98; UBRR0L=103;
SREG=0x80;
while(1){
if(flag){ flag=0;
d1=val/1000;
d2=val/100%10;
d3=val/10%10;
d4=val%10;
}
//
PORTC=~1; PORTA=FND[d1]; delay_ms(1);
PORTC=~2; PORTA=FND[d2]; delay_ms(1);
PORTC=~4; PORTA=FND[d3]; delay_ms(1);
PORTC=~8; PORTA=FND[d4]; delay_ms(1);
}
}
여러 바이트 전송은 쉽지 않습니다.
포멧을 정해서 주고 받아야하죠
여러가지 방법이 있습니다만 아래에 한 가지 더 알려드리죠
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2018-12-16 오후 3:50:58
// by Ok-Hyun Park
//
#include <mega128.h>
#include <delay.h>
//
char FND[]={0x3F,0X06,0X5B,0X4F,0X66,0X6D,0X7d,0X07,0X7F,0X6f}; // 0~9
unsigned int tp=0,val=0;
char rx_cnt=0,rx_buf[100];
char d[4];
//
void TX0_char(char c){ while(!(UCSR0A&0x20)); UDR0=c; }
void TX0_STR(char *s){ while(*s)TX0_char(*s++); }
//
interrupt[USART0_RXC]void INT_RX(){
char r,i;
r=UDR0;
UDR0=r;
//
if(r=='\n'){
for(i=0;i<4;i++)d[i]=0; // clear
rx_cnt--;
for(i=3;i>=0;i--){
d[i]=rx_buf[rx_cnt]&0x0F;
rx_cnt--;
if(rx_cnt<0)break; // 수신갯수가 작으면 빠져나감
}
rx_cnt=0; // 초기화
}
else if((r>='0')&&(r<='9')){
rx_buf[rx_cnt++]=r;
}
}
//
void main(){
DDRA=0xff; DDRC=0xff;
UCSR0B=0x98; UBRR0L=103;
SREG=0x80;
while(1){
PORTC=~1; PORTA=FND[d[0]]; delay_ms(1);
PORTC=~2; PORTA=FND[d[1]]; delay_ms(1);
PORTC=~4; PORTA=FND[d[2]]; delay_ms(1);
PORTC=~8; PORTA=FND[d[3]]; delay_ms(1);
}
}
댓글 : 0
조회수 : 5,644
등록된 댓글이 없습니다.