BASIC4MCU | 질문게시판 | 답변 : atmega128 uart 255이상 수입력
페이지 정보
작성자 master 작성일2018-12-16 15:45 조회6,427회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=6943
본문
// 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~9bit 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~9unsigned 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; // clearrx_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
조회수 6,427등록된 댓글이 없습니다.