BASIC4MCU | 질문게시판 | 답변 : atmega128에서 스위치1개는LED, 스위치 1개는 세그먼트의 동작하게 하려는데..
페이지 정보
작성자 master 작성일2022-05-26 14:09 조회1,657회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=20185
본문
지금 현재 상황에서는 스위치두개다 LED랑세그먼트가 같이 나옵니다..두개가 개별로 동작하게하려는데 어떻게 해야하나요?//#include <avr/io.h>#include <util/delay.h>//unsigned char FND_DATA_TBL []={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x67,0x77,0x7C,0x39,0x5E,0x79,0x71,0x08,0x80};unsigned char LED_Data=1,cnt=0,flag1=0,flag2=0;//int main(){DDRB=0xFF; DDRD=0x0F; DDRE=0xFF;while(1){PORTE=FND_DATA_TBL[cnt];if(PIND&2){ // PD1if(flag1==0){ flag1=1; if(++cnt>18)cnt=0; _delay_ms(50); }}else{if(flag1){ flag1=0; _delay_ms(50); }}//-----------------------------------PORTB=LED_Data;if(PIND&1){ // PD0if(flag2==0){ flag2=1; LED_Data<<=1; if(LED_Data==0)LED_Data=1; _delay_ms(50); }}else{if(flag2){ flag2=0; _delay_ms(50); }}}return 0;}개별로 나오지 않는다는 말이 무슨 뜻일까요?스위치를 누르지 않아도 세그먼트가 증가되고, LED가 쉬프트 되나요?if((PIND&2)==0){ // PD1if((PIND&2)==0){ // PD0누를 때 0이 되는 회로라면 이렇게 수정하세요//PD1 스위치를 누르면 세그먼트만 동작하고, LED는 꺼져있고PD0 스위치를 누르면 LED만 쉬프트하고, 세그먼트는 꺼져있기를 바라는 건가요?#include <avr/io.h>#include <util/delay.h>//unsigned char FND_DATA_TBL []={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x67,0x77,0x7C,0x39,0x5E,0x79,0x71,0x08,0x80};unsigned char LED_Data=1,cnt=0,mode=0,ms=0;//int main(){DDRB=0xFF; DDRD=0x0F; DDRE=0xFF;while(1){if(PIND&2)mode=0; // PD1 // 세그먼트만 동작if(PIND&1)mode=1; // PD0 // LED만 동작//-----------------------------------if(mode==0){PORTB=0; // LED OFFPORTE=FND_DATA_TBL[cnt];if(++ms>=100){ ms=0; // 10ms*100=1000msif(++cnt>18)cnt=0;}}//-----------------------------------if(mode==1){PORTE=0; // 세그먼트 OFFPORTB=LED_Data;if(++ms>=100){ ms=0; // 10ms*100=1000msLED_Data<<=1; if(LED_Data==0)LED_Data=1;}}//-----------------------------------_delay_ms(10);}return 0;}
댓글 1
조회수 1,657aasdw님의 댓글
aasdw 작성일
답변감사합니다!!!
제가 납땜을 잘못했었는지 결선오류였습니다.
납땜을 처음부터 다시했더니 동작을 확인했습니다.
바쁘신와중에 답변달아주셔서 감사합니다