BASIC4MCU | 질문게시판 | atmel studio 코딩 관련 질문드립니다!!
페이지 정보
작성자 전기초보 작성일2019-02-11 19:26 조회946회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=7703
첨부파일
본문
#include <avr/io.h>#include <util/delay.h>void delay(int);int main(void){DDRB=0xff;unsigned char param=0x01, changer=0;while (1){PORTB=param;delay(500); //여기다 delay하면 param이 바뀔때마다 delay함수가 실행되는것같다.if(changer==0){param=param<<1;if(param==0x80)changer=1;}if(changer==1) //이렇게 하면 0~6까지 켜지고 7이 안켜진다 왜 그럴까{param=param>>1;if(param==0x01)changer=0;}}}void delay(int delaytime){int i;for(i=0;i<delaytime;++i)_delay_ms(1);}코드는 LED를 0~7까지 켜고 다시 7~0까지 순차적으로 켜지고 꺼지는 코드입니다 문제는위와같은 코드로 빌드를 하였을 때 0~6까지 켜지고 6~0까지 꺼집니다.if(changer==1) 부분을 else로 고치면 정상동작하는데 이유를 모르겠습니다. 디버깅을해봐도이유를 잘 모르겠습니다.. 디버깅상으로 param = 128 (10진수) 까지 증가하여 16진수로 0x80이 되는데changer=1이되면서 위로올라가 PORTB=param;문장을 실행할때 param값이 128에서 64로 바뀝니다. 이유를 모르겠습니다.초보한테 많은 도움 부탁드립니다
댓글 0
조회수 946등록된 댓글이 없습니다.