BASIC4MCU | 질문게시판 | 89s51 코딩
페이지 정보
작성자 디코랩 작성일2018-09-27 19:47 조회8,095회 댓글0건본문
사용프로그램 keil
저번에 올려주신 프로그램으로 회로를 구동해본 결과 , 저희 사운드 센서 [ 자작 ] 에서 신호가 갈경우 한번만 led가 점등하는것이 아닌 3~6번 점등하는것으로 확인됩니다.
코드의 문제라곤 생각하지 않고 센서에서 신호가 소리에 한번 반응하는것이 아닌 , 한 소리에 여러번 반응하는것이라고 생각됩니다.
그래서 두가지 질문을 드리고 싶습니다.
첫째로 저희가 만든 사운드 센서에서 신호가 한번 가는것이 아닌 여러번 가는것(생성 되는것)으로 생각되는데 이를 처리할 방법 (센서에서 2~3회의 신호를 한개의 긴 신호로 만드는 회로적 / 소프트 웨어적 방법)
두번째로 코딩에서 처음에 한번 신호가 들어오면 이후 일정시간동안 들어오는 신호를 무시하는 코딩을 진행하는 방법 (1 [0 1 0 1] 0 0 0 1[ 0 0 0 ] 이라는 신호가 순차로 들어오면 처음 1만 반응하고 뒤 []안의 신호는 무시 했다가 일정시간후에 들어오는 1 신호부터 다시 반응하는 코드)
> 저번에 수정해주신 코드입니다.
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2018-09-21 ?? 11:33:02
// by Ok-Hyun Park
//
#include <reg51.h>
//
sbit LED=P2^0;
sbit switch_pin=P0^0; //sound sensor
code char msg1[]="robot is moving forward";
//
void Delay(int k){
int j,i;
for(i=0;i<k;i++){ for(j=0;j<100;j++); }
}
//
void txdata(char x){ SBUF=x; while(!TI); TI=0; }
void txStr(char *s){ while(*s)txdata(*s++); }
//
void main(void){
TMOD=0x20; SCON=0x50; TH1=0xfd; TL1=0xfd; TR1=1;
switch_pin=1; LED=0;
while(1){
if(switch_pin==1){ //If switch pressed
txStr(msg1);
LED=1; Delay(500); LED=0; Delay(1500); // 딜레이를 늘려보았지만 점등 횟수에는 변화 없었습니다.
}
}
}
댓글 0
조회수 8,095등록된 댓글이 없습니다.