BASIC4MCU | 질문게시판 | LED패턴
페이지 정보
작성자 슬레이브 작성일2020-12-08 18:18 조회2,464회 댓글1건본문
#include <mega128.h>
#include <delay.h>
typedef unsigned char u_char;
flash u_char seg_pat[10] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
char table[]={ 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff, 0x80,0x81,0xc1,0xc3,0xe3,0xe7,0xf7,0xff };
u_char N1 =0;
void main(void) {
unsigned char led=0x00;
char i;
DDRB= 0xF0;
DDRD= 0xF0;
DDRG= 0x0F;
DDRC= 0xFF;
PORTG=0b00001000;
PORTC=led;
while(1) {
for(i=0; i<24; i++) {
PORTC= ~(table[i]); delay_ms(500);
PORTD = ((seg_pat[N1] &0x0F)<<4) | (PORTD & 0x0F);
PORTB = (seg_pat[N1] &0x70) | (PORTB & 0x0F);
if(led== 0xFF){ led= 0x00; N1=N1+1; } //led가 다 켜지면 N1이 1 증가
PORTC=led;
}
}
}
총 3개의 led 패턴을 만들었습니다.
led가 다 켜질때마다 세그먼트를 1증가시키고 싶습니다. 또한 세그먼트가 증가할 수 있는 숫자는 led패턴의 숫자와 동기화 시키고 싶습니다. (ex 패턴이 3개면 세그먼트의 수를 3까지만 증가시키고 싶습니다.)
현재 코드로 구동하면 3가지 led패턴만 반복실행 되고 세그먼트 수는 0으로 고정되어 있습니다.
어디를 고쳐야 할까요?
댓글 1
조회수 2,464master님의 댓글
master 작성일
for(i=0; i<24; i++) {
PORTC= ~(table[i]);
PORTD = ((seg_pat[i] &0x0F)<<4) | (PORTD & 0x0F); PORTB = (seg_pat[i] &0x70) | (PORTB & 0x0F);
delay_ms(500);
}
N1++; //led가 다 켜지면 N1이 1 증가