BASIC4MCU | 질문게시판 | 답변 : atmel studio 코딩 관련 질문드립니다!!
페이지 정보
작성자 master 작성일2019-02-11 21:28 조회1,011회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=7704
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-02-11 오후 9:23:40// by Ok-Hyun Park//#include <avr/io.h>#include <util/delay.h>//void delay(int d){ int i; for(i=0; i<d;++i)_delay_ms(1); }//int main(void){unsigned char param=0x01,changer=0;DDRB=0xff;while(1){PORTB=param;//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;}//delay(500);}}
PORTB=param;if(param==??){변수 체크와 포트 출력의 순서를 어느 것을 먼저 하는지에 따라서 달라집니다.
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-02-11 오후 9:24:33// by Ok-Hyun Park//#include <avr/io.h>#include <util/delay.h>//void delay(int d){ int i; for(i=0; i<d;++i)_delay_ms(1); }//int main(void){unsigned char param=0x01,changer=0;DDRB=0xff;while(1){if(changer==0){param=param<<1; PORTB=param;if(param==0x80)changer=1;}//if(changer==1){param=param>>1; PORTB=param;if(param==0x01)changer=0;}//delay(500);}}예를들면 쉬프트 하자마자 포트 출력하면 원하는대로 켜집니다.
단, 제일 처음에 포트B 출력이 비트0부터 시작하는 것이 아니고, 비트1부터 시작하는 문제가 있습니다.
0x80 또는 0x01을 체크하지말고 (쉬프트 모두 하고나면 0이므로) 0인 것을 체크하면 됩니다.
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-02-11 오후 9:33:07// by Ok-Hyun Park//#include <avr/io.h>#include <util/delay.h>//void delay(int d){ int i; for(i=0; i<d;++i)_delay_ms(1); }//int main(void){unsigned char param=1,changer=1;DDRB=0xff;while(1){PORTB=param;//if(changer){ param=param<<1; if(param==0){ changer=0; param=0x40; } }else { param=param>>1; if(param==0){ changer=1; param=0x02; } }//delay(500);}}
왕복 쉬프트는 고민하면 여러가지 방법이 나올 수 있습니다.
댓글 0
조회수 1,011등록된 댓글이 없습니다.