8051/PIC > 코드변경 8051 ==>AVR (출력 포트)

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

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


BASIC4MCU | 8051/PIC | 8051 | 코드변경 8051 ==>AVR (출력 포트)

페이지 정보

작성자 키트 작성일2017-09-12 10:32 조회347회 댓글0건

본문

I2C처럼 1라인 양방향 데이터 송수신 경우에

 

8051 소스를 AVR로 고치는데 있어서

제일 문제 되는 점은

 

8051처럼 유연한 입출력을

AVR로 어떻게 구현 하느냐는 문제입니다.

 

8051은 입출력 결정 레지스터가 없고

아무 때나 출력을 내보내는 것이 가능합니다.

입력을 받고 싶을 때에는 출력에 H를 보내는 것으로 입력 준비가 끝입니다.

 

AVR로 위 상태를 만드는 것은

데이터라인 핀 외부에 10K 저항이 연결 되어 있다고 하면(실제로 걸어줘야 합니다.)

 

까다로운 데이터 핀 한가지만 설명 하겠습니다.

 

void main(void){

  PORTA.0=0;  //  I2C 데이터핀 초기설정 0

  DDRA.0=0;   // 입력으로 설정(외부 풀업저항에 의해서 H)

 

  while(1){

// 0출력

        DDRA.0=1; // 0이 출력됨 (PORTA.0=0으로 해두었으므로)

// 1출력

        DDRA.0=0; // 1이 출력됨 (외부풀업 저항에 의해)

// 입력모드

        DDRA.0=0; // 외부풀업 저항에 의해 H 이지만, PINA로 입력 가능해짐

// 입력

        if(PINA.0){}

  }

}

 

즉, PORTA.0으로 출력 하는 것이 아닌

DDRA.0을 사용해서 변칙적인 방법으로 출력과 입력을 받습니다.

 

논리가 바뀌므로 define을 사용하면 보기 편해집니다.

// AVRStudio

#define SDA_ON        DDRA&=0xFE

#define SDA_OFF       DDRA|=0x01

#define SDA_MODE_IN   DDRA&=0xFE

#define SDA_IN        PINA&0x01

 

void main(void){

  PORTA&=0xFE;  // I2C 데이터핀 초기설정 0

  DDRA&=0xFE;   // 입력으로 설정(외부 풀업저항에 의해서 H)

 

  while(1){

// 0출력

        SDA_OFF;

// 1출력

        SDA_ON;

// 입력모드

        DDRA.0=0;

// 입력

        if(SDA_IN){}    // SDA_IN==1?

        if(!(SDA_IN)){} // SDA_IN==0?

  }

}

 

 

 

//코드비젼 

#define SDA_ON        DDRA.0=0

#define SDA_OFF       DDRA.0=1

#define SDA_MODE_IN   DDRA.0=0

#define SDA_IN        PINA.0

 

void main(void){

  PORTA.0=0;

  DDRA.0=0;

 

  while(1){

// 0출력

        SDA_OFF;

// 1출력

        SDA_ON;

// 입력모드

        DDRA.0=0;

// 입력

        if(SDA_IN){}   // SDA_IN==1?

        if(!SDA_IN){}  // SDA_IN==0?

  }

}

댓글 0

조회수 347

등록된 댓글이 없습니다.

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

8051/PIC 목록
제목 작성자 작성일 조회
109 8051 1. 8051 내부구조 이미지 키트 17-09-12 663
108 8051 8051 개요 이미지 키트 17-09-12 565
107 8051 3. 8051의 인터페이스 이미지 키트 17-09-12 579
106 8051 AT89S 시리즈 타겟 ISP 기본 회로도 키트 17-09-12 477
105 8051 keil 8051을 이용한 FND 6자리 시계구현 키트 17-09-12 539
104 8051 8051 6자리 세그먼트 keil 시계 키트 17-09-12 401
103 8051 PWM 0~200kHz 영역의 주파수를 측정 이미지 키트 17-09-12 837
102 8051 8051 4x3 매트릭스 키 스캔 키트 17-09-12 363
101 8051 SE-BATCAR 라인트레이서 조립 KIT - 대만 MEGAWIN 사의 RISC 형 8051 이미지 키트 17-09-12 648
현재글 8051 코드변경 8051 ==>AVR (출력 포트) 키트 17-09-12 348
99 8051 89S51 실습보드 dip스위치로 led제어 키트 17-09-12 392
98 8051 8051 Architecture - Datasheets - Atmel 키트 17-09-12 318
97 8051 LED 순차점등 키트 17-09-12 518
96 8051 win51 신호등 키트 17-09-12 323
95 8051 초보자를 위한 8051 시계키트 강좌 (3) - C소스분석 키트 17-09-12 373
게시물 검색

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
모바일버전으로보기