8051/PIC > DT516-005.c LED 좌시프트

TODAY456 TOTAL680,494
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 8051/PIC | DT-516 강좌 | DT516-005.c LED 좌시프트

페이지 정보

작성자 키트 작성일2017-08-21 16:15 조회292회 댓글0건

첨부파일

본문

//-------------------------------------------------------------
// 82G516 E/V BOARD ( DT-516 )
//-------------------------------------------------------------
// XTAL : 22.1184Hz
//-------------------------------------------------------------
// filename: DT516-005.c
// LED 좌시프트
//-------------------------------------------------------------
#include         <REG_MPC82G516.H>
//
void delay_ms(unsigned int d) {  
    unsigned int  i,j;
    for(i=0;i<d;i++){ for(j=0;j<920;j++); }       // @22.118400Hz
}
//
void main(){
    char c;
    while(1){
        for(c=0;c<8;c++){ P1=~(0x01<<c); delay_ms(100); }
    }
}
//-------------------------------------------------------------

c는 0~7까지 차례로 증가 하고

0x01<<c

0b 00000001 을 좌측으로 c만큼 시프트 하면

00000001 : c=0

00000010 : c=1

00000100 : c=2

00001000 : c=3

00010000 : c=4

00100000 : c=5

01000000 : c=6

10000000 : c=7

//-------------------------------------------------------------

 

위 코드를 실행하면

비트

LSB          MSB

 0 1 2 3 4 5 6 7

 ●○○○○○○○

0.1초 딜레이

 ○●○○○○○○

0.1초 딜레이

 

 ○○●○○○○○

0.1초 딜레이

 

 ○○○●○○○○

0.1초 딜레이

 

 ○○○○●○○○

0.1초 딜레이

 

 ○○○○○●○○

0.1초 딜레이

 

 ○○○○○○●

0.1초 딜레이

 

 ○○○○○○○●

0.1초 딜레이

 

0.1초 간격으로 비트0에서 비트7로 시프트 합니다.

 

 

//----------------------

 

        for(c=0;c<8;c++){ P1=~(0x01<<c); delay_ms(100); }

위에서 반전 연산자 ~가 왜 사용 되었는지 묻는 분이 계셨습니다.

 

 

포트---저항---(+LED-)----0V

이 구조에서는 1을 출력 하면 LED가 켜지고 0을 출력 하면 LED가 꺼집니다.

 

포트---저항---(-LED+)----5V

이 구조에서는 0을 출력 하면 LED가 켜지고 1을 출력 하면 LED가 꺼집니다.

 

출력 논리가 바뀌어서 출력 할때에 반전 연산자 ~를 사용 하는 것입니다.

 

 

댓글 0

조회수 292

등록된 댓글이 없습니다.

8051/PICHOME > 8051/PIC > 전체 목록

게시물 검색

2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2017
모바일버전으로보기