BASIC4MCU | 질문게시판 | 답변 : Avr atmega128 led 제어 질문드리겠습니다
페이지 정보
작성자 master 작성일2022-04-04 10:40 조회7,667회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=19581
본문
#define F_CPU 1600000UL#include <avr/io.h>#include <util/delay.h>//int main(void){int t;PORTA=0xFF; DDRA=0xFF;while(1){if(PIND&1==0){PORTA=0XFE; _delay_ms(50);t=0;while(t<2000){ _delay_ms(1); t++; if(PIND&1)break; }if(t>=2000)PORTA=0x00; // 2초이상 누르면 8개 점등else PORTA=0xF0; // 2초미만 누르면 4개 점등while(PIND&1==0); _delay_ms(50);}else PORTA=0xFF; // OFF}}질문의 코드를 정리한 것입니다.//#define F_CPU 1600000UL#include <avr/io.h>#include <util/delay.h>//int main(void){int t=2000,mode=0;PORTA=0xFF; DDRA=0xFF;while(1){if(PIND&1==0){ t=0; // 버튼 클릭if(mode<5)mode++;_delay_ms(50); while(PIND&1==0); _delay_ms(50); // 채터링방지용 딜레이}else PORTA=0xFF; // OFF//if(mode==0)PORTA=0xFF; // OFFif(mode==1){ // 1번 누르면 순차적으로 LED가 들어온다(0~7)}if(mode==2){ // 2번 누르면 LED가 들어온다(7~0)}if(mode==3){ // 3번 누르면 7과 0,그리고 6과 1, 그리고 5와 2, 그리고 4와 3이 점등된다}if(mode==4){ // 4번 누르면 0에서 7로 그리고 7에서 0으로 왔다갔다 한다.(좌우 시프트)}if(mode==5){ // 5번 누르면 0에서 4까지 on, 그리고 5부터 7까지 on을 반복한다(1초간격)}//_delay_ms(1);if(t<2000)t++; // 클릭까지 대기시간은 2초else{ mode=0; }}}내용은 직접 만들어서 채워보세요
댓글 1
조회수 7,667임연수구이님의 댓글
임연수구이 작성일정말 감사합니다