BASIC4MCU | 질문게시판 | ATmega128을 이용하여 CLCD랑 키패드랑 연결해서 사칙연산 하기를 하고 싶습니다.
페이지 정보
작성자 YDyd 작성일2019-05-01 15:34 조회6,236회 댓글2건본문
ATmega128을 이용하여 clcd랑 키패드랑 연결해서 사칙연산을 하고 싶은데 잘 안되네요 ㅠㅠ .. 좀 도와주세요ㅠㅠ
![]()
키패드는 위에껄 사용하고 있습니다.
#include
#include "CLCD.h"
char KeyScan(void)
{
char KeyBuf=0xff;
PORTD=0xff;
DDRD=0x0f;
PORTD&=~1; delay_us(5);//1번
if((PIND&0x10)==0)KeyBuf='1';
if((PIND&0x20)==0)KeyBuf='2';
if((PIND&0x40)==0)KeyBuf='3';
PORTD|=1; //1번
PORTD&=~2; delay_us(5); //2번
if((PIND&0x10)==0)KeyBuf='4';
if((PIND&0x20)==0)KeyBuf='5';
if((PIND&0x40)==0)KeyBuf='6';
PORTD|=2; //2번
PORTD&=~4; delay_us(5); //3번
if((PIND&0x10)==0)KeyBuf='7';
if((PIND&0x20)==0)KeyBuf='8';
if((PIND&0x40)==0)KeyBuf='9';
PORTD|=4; //3번
PORTD&=~8; delay_us(5);
if((PIND&0x10)==0)KeyBuf='+';
if((PIND&0x20)==0)KeyBuf='=';
if((PIND&0x40)==0)KeyBuf='-';
PORTD|=8; //4번
return KeyBuf;
}
int main(void)
{
char key;
int a=0;
DDRA=0xff;
PORTA=0x00;
LCD_init();
char q[100]={};
char w=0;
int mode=0;
while(1)
{
key=KeyScan();
if(key!=0xff)
{
LCD_DisplayChar(1,a+1,key);
PORTD=0xff;
delay_ms(300);
q[a]=key;
if(key=='+') mode=1;
if(key=='-') mode=-1;
if(key=='=') mode=2;
if(a>1)
{
if(mode==1)
{
w=(q[a-2])+(q[a])-48;
mode=0;
}
if(mode==-1)
{
w=(q[a-2])-(q[a])+48;
mode=0;
}
if(mode==2)
{
a++;
if(w>57)
{
LCD_DisplayChar(1,a+1,'1');
LCD_DisplayChar(1,a+2,w-10);
mode=0;
}
else
{
LCD_DisplayChar(1,a+1,w);
mode=0;
}
}
}
a++;
}
}
}
위 소스는 연산자와 피연산자를 더하고 빼주는것만 되는 소스 입니다.저기서 제가 사칙연산을 할려고 곱하기랑 나눗셈을 추가했는데도 오류가 계속 떠서 미치 겠습니다.어떻게 해야 하나요? ㅠㅠ
댓글 2
조회수 6,236master님의 댓글
master 작성일
컴파일 오류가 문제인가요?
컴파일 해보려면 헤더파일까지 빠진 것 없이 전체 소스가 있어야합니다.
master님의 댓글
master 작성일
https://www.basic4mcu.com/bbs/board.php?bo_table=gesiyo10&wr_id=245
https://www.basic4mcu.com/bbs/board.php?bo_table=gesiyo10&wr_id=254