8051/PIC > DT516-300.c IAP 테스트 프로그램

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

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


BASIC4MCU | 8051/PIC | DT-516 강좌 | DT516-300.c IAP 테스트 프로그램

페이지 정보

작성자 키트 작성일2017-09-12 09:56 조회449회 댓글0건

첨부파일

본문

//-------------------------------------------------------------
// 82G516 E/V BOARD ( DT-516 )
//-------------------------------------------------------------
// XTAL : 22.1184Hz
//-------------------------------------------------------------
// filename: DT516-300.c
// IAP TEST
//-------------------------------------------------------------
#include <REG_MPC82G516.H>
//
#include "DT516-main.h"

//
U_C Wr_data=0xA5, Rd_data=0;
//----------------------------------------
#define    ISP_IAP_csk             0x01          // Set CKS0~CKS2=0x01 for 22.118Mhz Xtal input

#define    ISP_IAP_ENABLE          0x80          // Set ISP Enable
#define    ISP_IAP_DISABLE         0x00          // Set ISP Disable

#define    ISP_IAP_ACTIVITY_CMD1   0x46
#define    ISP_IAP_ACTIVITY_CMD2   0xB9
//----------------------------------------
void ERASE_IAP(int add){                           // Erase Page(512 Bytes)
    IFADRH=add>>8; IFADRL=add&0xFF; IFMT=0x03;     // IFMT=ERASE;
    ISPCR=(ISP_IAP_ENABLE | ISP_IAP_csk); SCMD=ISP_IAP_ACTIVITY_CMD1; SCMD=ISP_IAP_ACTIVITY_CMD2; ISPCR=ISP_IAP_DISABLE;
}


char READ_IAP(int add){
    IFADRH=add>>8; IFADRL=add&0xFF; IFMT=0x01;     // IFMT=READ;
    ISPCR=(ISP_IAP_ENABLE | ISP_IAP_csk); SCMD=ISP_IAP_ACTIVITY_CMD1; SCMD=ISP_IAP_ACTIVITY_CMD2; ISPCR=ISP_IAP_DISABLE;
    return IFD;
}


void WRITE_IAP(int add, char d){
    IFADRH=add>>8; IFADRL=add&0xFF; IFD=d; IFMT=0x02;     // IFMT=WRITE;
    ISPCR=(ISP_IAP_ENABLE | ISP_IAP_csk); SCMD=ISP_IAP_ACTIVITY_CMD1; SCMD=ISP_IAP_ACTIVITY_CMD2; ISPCR=ISP_IAP_DISABLE;
}

//----------------------------------------
void Timer_0_Interrupt(void) interrupt 1{  // 225Hz주기
    P4=0xFF; // FND OFF
    //
    if(Tcnt0<113)H_SecFlg=1;
    else         H_SecFlg=0;
    //
    if(++Tcnt0>=225)Tcnt0=0;
    //
    switch(FND_CNT){
        case 0: P0=Seg_Data[Rd_data>>0x04]; FND_COM1=0; break;
        case 1: P0=Seg_Data[Rd_data &0x0F]; if(H_SecFlg)P07=0; FND_COM2=0; break;
        case 2: P0=Seg_Data[Wr_data>>0x04]; FND_COM3=0; break;
        case 3: P0=Seg_Data[Wr_data &0x0F]; FND_COM4=0; break;
    }
    if(++FND_CNT>3)FND_CNT=0;
    //
    if(delay_buf){ if(--delay_buf==0)delay_flg=1; }
}
//
void main(){
    int add=0xFC00;
 ET0=1; TR0=1; EA=1;
    P4=0xF0;
    while(1){
        delay_ms(100);
        Rd_data=READ_IAP(add);

       if(!P20){ delay_ms(100); while(!P20); delay_ms(100); Wr_data=0x01; }
       if(!P21){ delay_ms(100); while(!P21); delay_ms(100); Wr_data=0x23; }
       if(!P22){ delay_ms(100); while(!P22); delay_ms(100); Wr_data=0x45; }
       if(!P23){ delay_ms(100); while(!P23); delay_ms(100); Wr_data=0xAB; }
       if(!P24){ delay_ms(100); while(!P24); delay_ms(100); ERASE_IAP(add); WRITE_IAP(add,Wr_data); }
    }
}

//-------------------------------------------------------------
// 1번 키 부터 4번키 까지는 데이터를 설정 합니다.(P20~P23)
// 5번키를 누르면 쓰기를 합니다.(P24)
// 0.1초에 한번씩 데이터를 읽어서 표시 합니다.
// FND 처음 두자리는 읽은 데이터입니다.
// FND 아래 두자리는 쓰려는 데이터입니다.

 

 

댓글 0

조회수 449

등록된 댓글이 없습니다.

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