BASIC4MCU | 질문게시판 | 답변 : 함수들을 합치는방법 질문드려요
페이지 정보
작성자 master 작성일2019-05-23 14:10 조회5,315회 댓글2건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=8731
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-05-23 오후 2:17:31// by Ok-Hyun Park//#define F_CPU 16000000UL // 16 MHz#include <avr/io.h>#include <avr/interrupt.h>#include <util/delay.h>//#define DO 0#define RE 1#define MI 2#define FA 3#define SOL 4#define RA 5#define SI 6#define DDO 7#define HI 8#define HI2 9#define EOS -1 // End Of Song 표시//#define ON 0#define OFF 1//unsigned char digit[10] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67};unsigned char fnd_sel[4] ={0x01,0x02,0x04,0x08};volatile char f_table[10]={17,43,66,77,97,114,117,137,253,254}; //각 음계volatile int song1[] ={DDO,HI,DDO,HI,DDO,HI,DDO,HI,DDO,HI,EOS}; //당첨 노래//volatile int sw1=0,tone,state;//void display_fnd(int sw1){int i,fnd[4];if (sw1==0){ fnd[3]=0; fnd[2]=0; fnd[1]=0; fnd[0]=0; }else if(sw1==1){ fnd[3]=0; fnd[2]=0; fnd[1]=0; fnd[0]=rand()%10; }else if(sw1==2){ fnd[3]=0; fnd[2]=0; fnd[1]=rand()%10; fnd[0]=fnd[0]; }else if(sw1==3){ fnd[3]=0; fnd[2]=rand()%10; fnd[1]=fnd[1]; fnd[0]=fnd[0]; }else if(sw1==4){ fnd[3]=rand()%10; fnd[2]=fnd[2]; fnd[1]=fnd[1]; fnd[0]=fnd[0]; }//for(i=0; i<4; i++){ PORTC=digit[fnd[i]]; PORTG=fnd_sel[i]; _delay_us(2500); }}//ISR(INT4_vect){ sw1++; _delay_ms(10); }//ISR(TIMER0_OVF_vect){if(state==ON){ PORTB=0x00; state=OFF; }else { PORTB=0x10; state=ON; }TCNT0=f_table[tone];}//int main(void){int i=0,j=0;DDRB=0x10;DDRC=0xff;DDRE=0xef;DDRG=0x0f;TCCR0=0x03; TIMSK=0x01; TCNT0=f_table[song1[i]]; //32분주 // 오버플로EICRB=0x02; EIMSK=0x10;sei();tone=song1[i++];while(1){display_fnd(sw1); // 10ms//if(++j>=10){ j=0; // 10ms*10=100mstone=song1[i++];if(tone==EOS){ i=0; tone=song1[i++]; }}}}////int main(){sei();}
//
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-05-27 오후 3:01:40// by Ok-Hyun Park//#define F_CPU 16000000UL // 16 MHz#include <avr/io.h>#include <avr/interrupt.h>#include <util/delay.h>#include <stdlib.h>//#define DO 0#define RE 1#define MI 2#define FA 3#define SOL 4#define RA 5#define SI 6#define DDO 7#define HI 8#define HI2 9#define EOS -1 // End Of Song 표시//#define ON 0#define OFF 1//unsigned char digit[10] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67};unsigned char fnd_sel[4] ={0x01,0x02,0x04,0x08};volatile char f_table[10]={17,43,66,77,97,114,117,137,253,254}; //각 음계volatile int song1[] ={DDO,HI,DDO,HI,DDO,HI,DDO,HI,DDO,HI,EOS}; //당첨 노래//volatile int sw1=0,tone,state;//void display_fnd(int sw1){int i,fnd[4];if (sw1==0){ fnd[3]=0; fnd[2]=0; fnd[1]=0; fnd[0]=0; }else if(sw1==1){ fnd[3]=0; fnd[2]=0; fnd[1]=0; fnd[0]=rand()%10; }else if(sw1==2){ fnd[3]=0; fnd[2]=0; fnd[1]=rand()%10; fnd[0]=fnd[0]; }else if(sw1==3){ fnd[3]=0; fnd[2]=rand()%10; fnd[1]=fnd[1]; fnd[0]=fnd[0]; }else if(sw1==4){ fnd[3]=rand()%10; fnd[2]=fnd[2]; fnd[1]=fnd[1]; fnd[0]=fnd[0]; }//for(i=0; i<4; i++){ PORTC=digit[fnd[i]]; PORTG=fnd_sel[i]; _delay_us(2500); }}//ISR(INT4_vect){ sw1++; _delay_ms(10); }//ISR(TIMER0_OVF_vect){if(state==ON){ PORTB=0x00; state=OFF; }else { PORTB=0x10; state=ON; }TCNT0=f_table[tone];}//int main(void){int i=0,j=0;DDRB=0x10;DDRC=0xff;DDRE=0xef;DDRG=0x0f;TCCR0=0x03; TIMSK=0x01; TCNT0=f_table[song1[i]]; //32분주 // 오버플로EICRB=0x02; EIMSK=0x10;sei();tone=song1[i++];while(1){display_fnd(sw1); // 10ms//if(++j>=10){ j=0; // 10ms*10=100mstone=song1[i++];if(tone==EOS){ i=0; tone=song1[i++]; }}}}
댓글 2
조회수 5,315김재욱님의 댓글
김재욱 작성일죄송한데 에러가 납니다 ㅠㅠ 아 Atmega128입니다!!
master님의 댓글
master
아래쪽에 추가한 소스로 사용하세요