BASIC4MCU | 질문게시판 | 답변 : ATmega j-kit질문있습니다.
페이지 정보
작성자 master 작성일2019-05-29 15:13 조회3,990회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=8978
본문
동시에 처리하기 까다로운 두가지 동작을 동시에 처리하려면
어느 하나를 인터럽트로 처리하든지 둘 다 인터럽트로 처리하면 됩니다.
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-05-29 오후 3:20:13// by Ok-Hyun Park//#include <avr/io.h>#define F_CPU 16000000UL#include <util/delay.h>#include <avr/interrupt.h>//#define CDS_value 871//ISR(TIMER0_COMP_vect){ // 1msstatic char f=0; int i;i=ADC;if(i>CDS_value){ //일정량 이상의 빛이 들어오면 FND에 OPEN띄우기switch(f){case 0: PORTC=0x3f; PORTG=0x08; break;case 1: PORTC=0x73; PORTG=0x04; break;case 2: PORTC=0x79; PORTG=0x02; break;case 3: PORTC=0x37; PORTG=0x01; break;}if(++f>3)f=0;}else{ PORTC=PORTG=0; } // OFF}//int main(void){int i,j;DDRE=0x00; //PE4입력 DDR처리DDRC=0xff; // fnd 데이터DDRG=0x0f; //fnd신호DDRB=0x10; //부저ADCSRA=0xE7;TCCR0=0x0C; OCR0=249; TIMSK=2; //16000000/64/(1+249),1mssei();while(1){if(!(PINE&0x10)){ //SW1=PE bit4,버튼 뗴져있을 때for(i=0; i<10; i++){ //경고음(부저)for(j=0; j<240; j++){ // 1.04ms*240=249.6msPORTB=0x10; _delay_ms(1.04); PORTB=0x00; _delay_ms(1.04);}for(j=0; j<180; j++){ // 1.39*180=250.2msPORTB=0x10; _delay_ms(1.39); PORTB=0x00; _delay_ms(1.39);}}}else{ PORTB=0; } // 버튼이 눌러져있을 떄 //부저 OFF}}
댓글 1
조회수 3,990상욱님의 댓글
상욱 작성일감사합니다 구세주님