我做的是一個水箱監控,現在在消聲的問題上出現了困難。
要求也很簡單,當水位上限到的時候就報警,按下消聲按鈕后就消聲,完了然后下次水位又到上限的時候再報警,按下消聲后再消聲,如此循環,水位下限也是一樣的。
看下程序吧
#include<reg52.h>
sbit FH=P1^6; //上限報警信號
sbit XSH=P3^3; //消聲按鈕
sbit BJ=P3^7; //報警
sbit EL=P1^7; //下限報警信號
unsigned int i;
bit BJ_flags=0;
bit BJ_flagx=0;
void init_T0(void)
{
TMOD=0x01;
TH0=0;
TL0=0;
ET0=1;
}
void int_T0(void) interrupt 1
{
TH0=0xf1;
TL0=0xf1;
if(BJ_flags==0&&FH==0) //
BJ=!BJ;
if(BJ_flagx==0&&EL==0)
BJ=!BJ;
}
void main(void)
{
init_T0();
EA=1;
TR0=1;
while(1)
{
if(XSH==0) //消聲
BJ_flags=1;
BJ_flagx=1;
}
}
我這個程序就是 報警-消聲后 再次到水位上限它就不會報警了,這該怎么解決呢。
我是新手,希望大俠幫幫忙。
因為工作原因確實沒時間系統的學習單片機,這個問題已經有2個星期了,靠自己零碎的學習真的抓不到突破口了,希望朋友們幫下忙 謝了
ORG 00H;剛剛寫的,試ok了!
START:
JB P1.6,QQ; 觸控0電位上位
AJMP QQ1;
QQ:
JB P1.7,START; 觸控0電位下位
AJMP QQ1;
QQ1:
JB P3.3,QQ2; 消按鍵!0電位有效
SETB P3.7; 報警關!。
JNB P1.7,$; 等待水位正常!!
JNB P1.6,$; 等待水位正常!!
AJMP START
QQ2:
LCALL DELAY;
CLR P3.7; 報警0電位有效
AJMP START;
DELAY:
MOV R3,#200;
D1:MOV R4,#256;
D2:DJNZ R4,D2;
DJNZ R3,D1;
RET
END
歡迎光臨 (http://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |