BASIC4MCU | 질문게시판 | atmega128 FND 자릿수 변환
페이지 정보
작성자 avrdream 작성일2018-12-13 11:36 조회9,187회 댓글1건본문
코드비전 쓰고요
게속 해봣는데 너무 안되서 글올려봅니다 ㅜㅜ
if(ch>=9) // 한 자리수 입력
{
PORTA=FND[ch-0x30]; //
PORTC=0x07;
delay_ms(100);
}
else if(ch<=99 && ch>=10 ) // 두 자리수 입력
{
PORTA=FND[(ch-0x30)/10 ];
PORTC=0x0b;
delay_ms(100);
PORTA=FND[(ch-0x30)%10 ];
PORTC=0x07;
}
else if(ch<=999 && ch>=100) // 세 자리수 입력
{
PORTA=FND[(ch-0x30)/100 ];
PORTC=0x0b;
delay_ms(100);
PORTA=FND[((ch-0x30)%100)/10 ];
PORTC=0x07;
delay_ms(100);
PORTA=FND[((ch-0x30)%100)%10 ];
PORTC=0x0d;
delay_ms(100);
}
보기 편하게 중간부분을 빼왓는데
한 자리수는 잘되는데
두 자리수 세 자리수가 가면
1의 자리수에서 숫자가 생기다가 금새 마지막 자리수값으로 바뀌네요 애초에 십의자리 백의자리 되지도 않네요
예를 들어 123을 입력하면
1이랑 2가 순식간에 지나가고 3만 남습니다
어디가 오류있는걸까요 ??
댓글 1
조회수 9,187master님의 댓글
master 작성일
if (ch>=9){} // 한 자리수 입력 <--- 0~8 을 제외한 모든 조건에서 동작
else if(ch<=99 && ch>=10 ){} // 두 자리수 입력 <-- 동작안함
else if(ch<=999 && ch>=100){} // 세 자리수 입력 <-- 동작안함
조건식을 다시 만드세요