Page 1073 - 3-3
P. 1073
Top_Motor_Up();
if (floor == 2) F2_1_qrd(); //2 층 white qrd 신호 대기
else if(floor == 3) F2_2_qrd(); //2 층 blue qrd 신호 대기
else if (floor == 4){ F3_Micro(); delay_ms(300);} // 층 마이크로 스위치 신호 대기
Top_Motor_Stop(); // 엘리베이터 상단 모터 정지
}
void Lift_Down() // 엘리베이터를 하강시키는 함수
{
Top_Motor_Down();
F1_qrd(); //1 층 qrd 신호 대기
Top_Motor_Stop(); // 엘리베이터 상단 모터 정지
}
void EnterOrExit() // 현재 차가 들어오는지 나가는지 판별하는 함수
{
#asm("sei"); // 인터럽트 허용
if (status[place - 1]){ // 출차 하는 경우
status[place - 1] = 0; // 해당 위치의 배열을 0 으로 바꿔준다.
Ready_to_Out(); // 출차 대기 함수 호출
}
else // 주차 하는 경우
{
status[place - 1] = 1; // 해당 위치의 배열을 1 로 바꿔준다.
Ready_to_Park(); // 주차 대기 함수 호출
}
delay_ms(10);
#asm("cli"); // 인터럽트 차단
}
void LCD_Input(unsigned char a) //lcd 표시 함수
{
unsigned char str[16]; //lcd 에 입력할 문자열을 저장할 배열
lcd_clear(); //lcd cldar
lcd_gotoxy(0, 0); // 첫 번째 줄의 맨 처음 칸부터
lcd_putsf(" Parking Tower"); //"Parking Tower" 를 표시한다.
lcd_gotoxy(0, 1); // 두 번째 줄 맨 처음 칸부터
if (a == 0) //a 가 0 일 경우에 현재 동작중인 주차 위치를, LCD 로 나타냄
{
switch (place)
{
case 0: lcd_putsf(" Input Error"); break;
case 2:
case 3:
case 4: sprintf(str, "B%d is Operating", place - 1); break;
- 1073 -