BASIC4MCU | 질문게시판 | 답변 : 시리얼통신 4거리 신호등 제어 질문
페이지 정보
작성자 master 작성일2019-11-05 11:54 조회3,573회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=10542
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-11-05 오전 11:53:34// by Ok-Hyun Park//#define F_CPU 16000000L#include <avr/io.h>#include <avr/interrupt.h>#include <util/delay.h>//char mode; // 정지//void walker_G(void){PORTA=0x21; PORTB=0x11; PORTC=0xaa; PORTD=0x96; _delay_ms(250);PORTA=0x21; PORTB=0x11; PORTC=0xaa; PORTD=0x82; _delay_ms(250);}//void walker_B(void){PORTA=0x11; PORTB=0x21; PORTC=0x96; PORTD=0xaa; _delay_ms(250);PORTA=0x11; PORTB=0x21; PORTC=0x82; PORTD=0xaa; _delay_ms(250);}//void walker_P(void){PORTA=0x02; PORTB=0x02; PORTC=0x69; PORTD=0x69; _delay_ms(250); //주행 중이던 신호 노란불PORTA=0x02; PORTB=0x02; PORTC=0x28; PORTD=0x28; _delay_ms(250); //주행 중이던 신호 노란불}//ISR(USART0_RX_vect){char r;r=UDR0;if(r=='2')mode=0; // 2누르면 정지if(r=='1')mode=1; // 1누르면 출발if(r=='3')mode=2; // 3누르면 초기화}//int main(void){int i;DDRA=0xff; DDRB=0xff; DDRC=0xff; DDRD=0xff;UCSR0B=0x98; UBRR0L=103; SREG=0x80; // 9600start:;PORTA=0; PORTB=0; PORTC=0; PORTD=0; // 초기화mode=0; // 정지while(1){if(mode){PORTA=0xc1; PORTB=0x11; PORTC=0xaa; PORTD=0x96; //초록 선일 때 LED점등for(i=0;i<800;i++){ _delay_ms(10); if(mode==2)goto start; while(mode==2); }//for(i=0; i<4; i++)walker_G(); //노란불,보행자 깜빡임//PORTA=0x11; PORTB=0xc1; PORTC=0x96; PORTD=0xaa; //파란 선일 때 LED점등for(i=0;i<800;i++){ _delay_ms(10); if(mode==2)goto start; while(mode==2); }//for(int i=0; i<4; i++)walker_B(); //노란불,보행자 깜빡임//PORTA=0x18; PORTB=0x18; PORTC=0x69; PORTD=0x69; //보라 선일 때 LED점등for(i=0;i<800;i++){ _delay_ms(10); if(mode==2)goto start; while(mode==2); }//for(int i=0; i<4; i++)walker_P(); //노란불,보행자 깜빡임//PORTA=0x14; PORTB=0x14; PORTC=0xaa; PORTD=0xaa; //빨간 선일 때 LED점등for(i=0;i<800;i++){ _delay_ms(10); if(mode==2)goto start; while(mode==2); }//PORTA=0x02; PORTB=0x02; PORTC=0xaa; PORTD=0xaa; //주행 중이던 신호 노란불for(i=0;i<200;i++){ _delay_ms(10); if(mode==2)goto start; while(mode==2); }}}}
댓글 0
조회수 3,573등록된 댓글이 없습니다.