<div>#include<avr/io.h></div> <div>#include<util/delay.h></div> <div>#define FREQ(x) (unsigned int)(7372800/(2*(x)))</div> <div><br></div> <div>void Change_FREQ(unsigned int freq);</div> <div>void STOP_FREQ();</div> <div>void Pop_Button();</div> <div>unsigned char Push_Button();</div> <div>unsigned int key2DoReMi(unsigned char key);</div> <div><br></div> <div><br></div> <div>int main(){</div> <div>unsigned char piano=0;</div> <div>DDRE = 0x08;</div> <div>DDRD = 0x00;</div> <div><br></div> <div>TCCR3A |= 0x40;</div> <div>TCCR3B |= 0x19;</div> <div>TCCR3C = 0x00;</div> <div><br></div> <div>TCNT3 = 0x0000;</div> <div><br></div> <div>STOP_FREQ();</div> <div><br></div> <div>while(1){</div> <div>piano = Push_Button();</div> <div>Change_FREQ(key2DoReMi(piano));</div> <div>Pop_Button();</div> <div>STOP_FREQ();</div> <div>}</div> <div>return 0;</div> <div>}</div> <div><br></div> <div>void Change_FREQ(unsigned int freq){</div> <div>unsigned int x;</div> <div>TCCR3A |= 0x40;</div> <div>TCCR3B |= 0x19;</div> <div><br></div> <div>do{</div> <div>x=TCNT3;</div> <div>}while(x>=FREQ(freq));</div> <div>ICR3 = FREQ(freq);</div> <div>}</div> <div><br></div> <div>void STOP_FREQ(){</div> <div>TCCR3A = 0x00;</div> <div>TCCR3B = 0x00;</div> <div>TCNT3 = 0;</div> <div>ICR3 = FREQ(0);</div> <div>PORTE = 0xFF;</div> <div>}</div> <div><br></div> <div>void Pop_Button(){</div> <div>while((PIND & 0xFF)!=0x00);</div> <div>}</div> <div><br></div> <div>unsigned char Push_Button(){</div> <div>while((PIND & 0xFF)==0x00);</div> <div>return PIND;</div> <div>}</div> <div><br></div> <div>unsigned int key2DoReMi(unsigned char key){</div> <div>unsigned int _ret = 0;</div> <div>switch(key){</div> <div>case 0x01:</div> <div>_ret = 523;</div> <div>break;</div> <div><br></div> <div>case 0x02:</div> <div>_ret = 587;</div> <div>break;</div> <div><br></div> <div>case 0x04:</div> <div>_ret = 659;</div> <div>break;</div> <div><br></div> <div>case 0x08:</div> <div>_ret = 698;</div> <div>break;</div> <div><br></div> <div>case 0x10:</div> <div>_ret = 783;</div> <div>break;</div> <div><br></div> <div>case 0x20:</div> <div>_ret = 880;</div> <div>break;</div> <div><br></div> <div>case 0x40:</div> <div>_ret = 987;</div> <div>break;</div> <div><br></div> <div>case 0x80:</div> <div>_ret = 1046;</div> <div>break;</div> <div>}</div> <div>return _ret;</div> <div>}</div> <div><br></div> <div>이게 각각 8개 버튼 누르면 피에조부저? 에서 도레미파솔라시 음계나오는 코드인데요 </div> <div>이거를 버튼하나만 누르면 자동으로 솔솔라라솔솔미 나오게 할 수 있나요?</div> <div>저녁에 하다가 안되서 화가나서 능력자님들께 여쭤 봅니다.</div> <div>Atmeg128 입니다.</div> <div>기초가 없는 상태에서 할려니까 힘이 드네요 ㅠㅠ</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.