BASIC4MCU | 질문게시판 | 답변 : codevision avr atmega128a 사용중입니다
페이지 정보
작성자 master 작성일2023-12-13 18:31 조회1,005회 댓글0건본문
#include <mega128a.h>
#include <delay.h>
//
#define FLOOR_1_BTN PINA.0 // 각 층의 버튼 핀 번호 설정
#define FLOOR_2_BTN PINA.1
#define FLOOR_3_BTN PINA.2
#define FLOOR_4_BTN PINA.3
//
unsigned char seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d}; // 0~5
unsigned char target_floor=1,current_floor=1;
//
void elevator_move(){
unsigned char i;
if(target_floor>current_floor){
while(target_floor>current_floor){ current_floor++; PORTD=seg[current_floor]; delay_ms(500); } // 위층으로 이동
}
else if(target_floor<current_floor){
while(target_floor<current_floor){ current_floor--; PORTD=seg[current_floor]; delay_ms(500); } // 아래층으로 이동
}
}
//
void main(void){
DDRD=0xFF; // 7segment
DDRC=0x01; PORTC=0x01; // digit
update_display();
while(1){
if(FLOOR_1_BTN==0){ target_floor=1; delay_ms(200); }
if(FLOOR_2_BTN==0){ target_floor=2; delay_ms(200); }
if(FLOOR_3_BTN==0){ target_floor=3; delay_ms(200); }
if(FLOOR_4_BTN==0){ target_floor=4; delay_ms(200); }
//
if(target_floor!=current_floor)elevator_move();
}
}
댓글 0
조회수 1,005등록된 댓글이 없습니다.