BASIC4MCU | 8051/PIC | DT-516 강좌 | DT516-085.c 시리얼 key값 전송
페이지 정보
작성자 키트 작성일2017-08-23 13:53 조회1,118회 댓글0건첨부파일
본문
//-------------------------------------------------------------
// 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
조회수 1,118등록된 댓글이 없습니다.