8051/PIC > DT516-085.c 시리얼 key값 전송

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

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

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

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

BASIC4MCU > 8051/PIC

DT-516 강좌 | DT516-085.c 시리얼 key값 전송

페이지 정보

작성자 키트 작성일17-08-23 13:53 조회307회 댓글0건

첨부파일

본문

3660040644_rZkz6sit_dt516-232-3_ekit.jpg3Ftype3Dw740

 

//-------------------------------------------------------------
// 82G516 E/V BOARD ( DT-516 )
//-------------------------------------------------------------
// XTAL : 22.1184Hz
//-------------------------------------------------------------
// filename: DT516-085.c
// 시리얼 key값 전송
//-------------------------------------------------------------
#include
//
#include "DT516-main.h"
//
//
U_C key_buf=0;
bit PushFlg=0, Key_Flg=0;
//
void Timer_0_Interrupt(void) interrupt 1{ // 7200Hz=138.89us 주기
    P4=0xFF; // FND OFF
    if(Tcnt0<3600)H_SecFlg=1;
    else          H_SecFlg=0;
    //
    if(++Tcnt0>=7200){ Tcnt0=0; Sec++;
        if(Sec >= 60){ Sec=0; Min++; }
        if(Min >= 60){ Min=0; Hour++; }
        if(Hour>= 24){ Hour=0; }
    }
    //
    switch(FND_CNT){
        case 0: P0=Seg_Data[Hour/10]; if((Sec<15)&&(H_SecFlg))P07=0;            FND_COM1=0; break;
        case 1: P0=Seg_Data[Hour%10]; if((Sec>=15)&&(Sec<30)&&(H_SecFlg))P07=0; FND_COM2=0; break;
        case 2: P0=Seg_Data[Min /10]; if((Sec>=30)&&(Sec<45)&&(H_SecFlg))P07=0; FND_COM3=0; break;
        case 3: P0=Seg_Data[Min %10]; if((Sec>=45)&&(H_SecFlg))P07=0;           FND_COM4=0; break;
    }
    if(++FND_CNT>3)FND_CNT=0;
    //
    if(delay_buf){ if(--delay_buf==0)delay_flg=1; }
}
//
//
void TX0_CH(U_C ch){ SBUF=ch; while(!TI); TI=0; }
U_C  RX0_CH(void){ while(!RI); RI=0; return SBUF; }
//
void key_chk(void){
    U_C tp=0;
    if(!P20)tp='0'; if(!P21)tp='1'; if(!P22)tp='2'; if(!P23)tp='3';
    if(!P24)tp='4'; if(!P25)tp='5'; if(!P26)tp='6'; if(!P27)tp='7';
    //
    if(!P32)tp='A'; if(!P33)tp='B'; // if(!P30)tp='8'; if(!P31)tp='9'; 
    if(!P34)tp='C'; if(!P35)tp='D'; if(!P36)tp='E'; if(!P37)tp='F';
    //
    if(tp!=0){
        if(!PushFlg){ PushFlg=1; key_buf=tp; Key_Flg=1; }
        delay_ms(50);
    }
    else PushFlg=0;
}
void main(){
    TMOD=0x22; SCON=0x50; TCON=0x55; TH1=0xFA; TL1=0xFA; ET0=1; TR0=1; TR1=1; EA=1; // 9600bps
    while(1){
        key_chk();
        if(Key_Flg){ Key_Flg=0; TX0_CH(key_buf); }
    }
}
//-------------------------------------------------------------

//-------------------------------------------------------------
// if(!P30)tp='8'; if(!P31)tp='9'; 
SW7번 SW8번은 사용하지 않습니다.
SW7번은 MAX232A의 출력이고
SW8번은 82G516의 출력이므로 스위치를 누르면 포트에 데미지가 갑니다.
//-------------------------------------------------------------

댓글 : 0

조회수 : 307

등록된 댓글이 없습니다.

게시물 검색

8051/PIC 목록

게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전