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

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 8051/PIC

DT-516 강좌 | DT516-005.c LED 좌시프트

페이지 정보

작성자 키트 작성일17-08-21 16:15 조회284회 댓글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

조회수 : 284

등록된 댓글이 없습니다.

게시물 검색

8051/PIC 목록

게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전