BASIC4MCU | 질문게시판 | 답변 : atmega128A 코드 한번 봐주세요 ㅠㅠ
페이지 정보
작성자 master 작성일2018-12-03 01:52 조회6,120회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=6179
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-03 오전 1:57:32// by Ok-Hyun Park//ATMEGA과제 관련해서 질문있습니다.1.LED가 3초 동안 켜져야합니다.2.FND가 "1234" 디스플레이 돼야합니다.3.Buzzer가 3초 동안 소리나야합니다.4.1,2,3번이 한 거 번에 나타나야합니다.위가 바로 저희 과제의 조건입니다.아래는 저희가 짠 코드인데,Putty에 Select가 뜨지 않고 바로 숫자만 나옵니다.그리고 출력을 했을때 상대의 아트메가에 뜨지 않고 제 아트메가에 출력이 됩니다.어디를 수정을 해야 오류를 잡을 수 있을까요?//#define F_CPU 16000000UL#include <avr/io.h>// AVR 기본 include#include <util/delay.h>//#define NULL 0//unsigned char digit[4]={0x06,0x5b,0x4f,0x66};unsigned char fnd_sel[4]={0x08,0x04,0x02,0x01};//char getchar0(){ while(!(UCSR0A&0x80)); return(UDR0); }char getchar1(){ while(!(UCSR1A&0x80)); return(UDR1); }void putchar0(char c){ while(!(UCSR0A&0x20)); UDR0=c; }void putchar1(char c){ while(!(UCSR1A&0x20)); UDR1=c; }void puts0(char*s){ while(*s)putchar0(*s++); }void puts1(char*s){ while(*s)putchar1(*s++); }//int main(){char c,*ptr,prompt[]="Youngju Lee>>"; // 본인이름 입력할것.UBRR0L=8; UCSR0B=0x18;UBRR1L=8; UCSR1B=0x18;_delay_ms(2000);puts0(prompt);while(1){if(UCSR0A&0x80){c=getchar0(); // 1 character를 받아서switch(c){case '1':{ putchar1(c); DDRA=0xff; PORTA=0xff; _delay_ms(3000); PORTA=0x00; break; }case '2':{DDRC=0xff; DDRG=0x0f;putchar1(c);for(int j=0; j<150; j++){for(int i=0; i<4; i++){ PORTC=digit[i]; PORTG=fnd_sel[i]; _delay_ms(5); }}PORTC=0x00; PORTG=0x00;break;}case '3':{putchar1(c);for(int i=0; i<1499; i++){ PORTB=0x10; _delay_ms(1); PORTB=0x00; _delay_ms(1); }break;}case '4':{putchar1(c); DDRA=0xff; DDRC=0xff; DDRG=0x0f; DDRB=0x10;for(int z=0; z<375; z++){for(int i=0; i<4; i++){PORTA=0xff; PORTC=digit[i]; PORTG=fnd_sel[i]; PORTB=0x10; _delay_ms(1); PORTB=0x00; _delay_ms(1);}}PORTA=0x00; PORTC=0x00; PORTG=0x00; PORTB=0x00;break;}}}//if((UCSR1A&0x80)){c=getchar1(); putchar0(c);if(c=='\r'){ putchar0('\n'); puts0(prompt); }}}}
댓글 0
조회수 6,120등록된 댓글이 없습니다.