BASIC4MCU | 질문게시판 | ATMEGA128 0 9999 카운터 질문입니다
페이지 정보
작성자 초보전공자 작성일2021-04-05 01:42 조회11,890회 댓글1건본문
#include <mega128.h>
#include <delay.h>
unsigned char Port_char[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xd8, 0x80, 0x90,
0x88, 0x83, 0xc4, 0xa1, 0x84, 0x8e};
unsigned int Port_fnd[] = {0x1f, 0x2f, 0x4f, 0x8f};
void PORT_lnit (void)
{
DDRE = 0xf0;
DDRB = 0xff;
}
void main (void)
{
unsigned char FND0, FND1, FND2, FND3;
PORT_lnit();
while(1)
{
for(FND3= 0; FND3<10; FND3++)
{
for(FND2= 0; FND2<10; FND2++)
{
for(FND1= 0; FND1<10; FND1++)
{
for(FND0= 0; FND0<10; FND0++)
{
PORTE = Port_fnd[0];
PORTB = Port_char[FND0];
delay_ms(10);
PORTE = Port_fnd[1];
PORTB = Port_char[FND1];
delay_ms(10);
PORTE = Port_fnd[2];
PORTB = Port_char[FND2];
delay_ms(10);
PORTE = Port_fnd[3];
PORTB = Port_char[FND3];
delay_ms(10);
}
}
}
}
}
}
0 부터 9999 까지 카운터 되는 코드를 만들었습니다
여기서 PORT.D 에 연결된 DIP 스위치가 ON 되면 FND 10 증가와 같이 원하는 숫자만큼 카운트를 증가 시키고 싶은데요
if( (PIND&0x80) == 0x00) ){
이 뒤에 어떤 코드를 넣어야 10증가 혹은 10감소가 되는지 궁금합니다
댓글 1
조회수 11,890master님의 댓글
master 작성일
#include <mega128.h>
#include <delay.h>
//
unsigned char seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90,0x88,0x83,0xc4,0xa1,0x84,0x8e};
signed char n0=0,n1=0,n2=0,n3=0;
//
void disp(){ // 100ms
char k;
for(k=0;k<100;k++){ // 1ms * 100 = 100ms
PORTB=seg[n0]; PORTE=0x10; delay_us(250); PORTE=0;
PORTB=seg[n1]; PORTE=0x20; delay_us(250); PORTE=0;
PORTB=seg[n2]; PORTE=0x40; delay_us(250); PORTE=0;
PORTB=seg[n3]; PORTE=0x80; delay_us(250); PORTE=0;
}
}
//
void main (void){
DDRE=0xf0; DDRB=0xff;
while(1){
if(!PIND.7){ // 1 증가
if(++n0>9){ n0=0;
if(++n1>9){ n1=0;
if(++n2>9){ n2=0; if(++n3>9)n3=0; }
}
}
}
//---------------------------------------------
if(!PIND.6){ // 1 감소
if(--n0<0){ n0=9;
if(--n1<0){ n1=9;
if(--n2<0){ n2=9; if(--n3<0)n3=9; }
}
}
}
//---------------------------------------------
if(!PIND.5){ // 10 증가
if(++n1>9){ n1=0;
if(++n2>9){ n2=0; if(++n3>9)n3=0; }
}
}
//---------------------------------------------
if(!PIND.4){ // 10 감소
if(--n1<0){ n1=9;
if(--n2<0){ n2=9; if(--n3<0)n3=9; }
}
}
//---------------------------------------------
if(!PIND.3){ // 100 증가
if(++n2>9){ n2=0; if(++n3>9)n3=0; }
}
//---------------------------------------------
if(!PIND.2){ // 100 감소
if(--n2<0){ n2=9; if(--n3<0)n3=9; }
}
//---------------------------------------------
if(!PIND.1){ // 1000 증가
if(++n3>9)n3=0;
}
//---------------------------------------------
if(!PIND.0){ // 1000 감소
if(--n3<0)n3=9;
}
//---------------------------------------------
disp(); // 100ms
}
}