不能加附件,就把源程序贴上:
/* 本程序主要实现功能: 1、2s之内连续按键3次打开中继。 2、接收到一次信号后延时8s后关闭发射机。*/
/* 3、每次语音结束 滴滴 ,每个循环结束 滴滴滴滴*/
#include #include #define FV 100 #define MC 400 void delay(int); void didi(int); void timer0(); void timer1(); bit CHAOSHI,ZHOUQI; sbit P1_6 = P3^4; sbit P1_7 = P1^7; sbit P1_5 = P1^5; int YSJ; int CSJ; /* ------------------- 主程序入口------------------------*/ main() { CHAOSHI=0; /* 发射超时标志*/ ZHOUQI=0; /* 一组通话周期标志*/ YSJ=0; CSJ=0; P1=0x80; P3=0x00; TMOD=0x11; /* 定时器0、1皆工作于方式1 */ EA=1; ET0=1; ET1=1 ; aaa: while(P1_7==1) /* 等待 接收到信号 */ { } if (ZHOUQI==0) /* 接收到信号,周期标志为0 */ { TH1=0x3c; /* 12M晶振,定时0.05s */ TL1=0xb0; TR1=1; /*开启超时计时*/ while(P1_7==0 && CHAOSHI==0) { } /*等待松键高电平*/ while(P1_7==1 && CHAOSHI==0) { } /*等待掐键低电平*/ while(P1_7==0 && CHAOSHI==0) { } /*等待松键高电平*/ while(P1_7==1 && CHAOSHI==0) { } /*等待掐键低电平*/ while(P1_7==0 && CHAOSHI==0) { } /*等待松键高电平*/ if(CHAOSHI==1) { CHAOSHI=0; goto aaa; } P1_6=1; bbb: TH0=0x3c; /*延时定时器启动*/ TL0=0xb0; TR0=1; while(ZHOUQI==0 && P1_7==1) { } if (P1_7==0) { TR0=0; while(P1_7==0){ } /* 松键时开始计时*/ YSJ=0; didi(2); /*一个周期内,一句话完成,响两声*/ goto bbb; } if(ZHOUQI==1) { didi(3); /*一个周期完成,响三声*/ P1_6=0; TR0=0; ZHOUQI=0; goto aaa; } } } /*--------------------------delay()延时程序--------------------*/ void delay(int x) { int a; for (a=0;a