BASIC4MCU | 질문게시판 | 아트메가128>이해를 할려려고 더 열심히 보니깐 헷갈립니다.!
페이지 정보
작성자 세계제일초보 작성일2019-11-07 18:11 조회3,119회 댓글0건본문
안녕하세요 선생님들,,
어떻게 보면 간단해 보이는것데.. 하나씩 하나씩 보면서 갈려고 하니깐 헷갈려요...ㅠㅠ
C언어 포인트를 더 공부를 해야 하나요 ㅠㅠ
제가 이해한대로 작동순서를 적었습니다.. 잘못된 부분있으면 지적 부탁 드려요
#include<avr/io.h>
#define F_CPU 16000000UL
#define
__DELAY_BACKWARD_COMPATIBLE__#define<util/delay.h>
void buzzer( int hz, int count);
int main () ---①
{
int i;
DDRB=0x10;
while(1)
{
for(i=0;i<20;i++)
{
buzzer(480,12);
buzzer(320,18);
}
_delay_ms(2000);
}
}void buzzer(int hz,int conut) ---②
{
int i,ms,us;
ms=500/hz;
us=500%hz;
for(i=0;i<count;i++)
{
PORTB=0x10; _delay_ms(ms); _delay_us(us);
PORTB=0x00; _delay_ms(ms); _delay_us(us);
}
}1.메인에있는 포트 B랑 while문이 먼저 작동한다.
2.while문에 있는 for문을 돌린다.
3.i=0일떄 void buzzer(int hz,int conut) --②
main에 있는 buzzer(480,12)값을 아래 처럼 넣어서 계산한다.PORTB=0x10; _delay_ms(ms); _delay_us(us);
PORTB=0x10; _delay_ms(ms=500/hz) =(ms=500/480); _delay_us(us=500%12);(ms=500/480)=1.0416666666 이 숫자를 주파수로 변환
PORTB=0x00; _delay_ms(ms); _delay_us(us);
PORTB=0x00; _delay_ms(ms=500/hz) =(ms=500/320); _delay_us(us=500%18);계산되어 나온 값을 buzzer로 발생 한다.
댓글 0
조회수 3,119등록된 댓글이 없습니다.