我做的是一個(gè)水箱監(jiān)控,現(xiàn)在在消聲的問題上出現(xiàn)了困難。
要求也很簡單,當(dāng)水位上限到的時(shí)候就報(bào)警,按下消聲按鈕后就消聲,完了然后下次水位又到上限的時(shí)候再報(bào)警,按下消聲后再消聲,如此循環(huán),水位下限也是一樣的。
看下程序吧
#include<reg52.h>
sbit FH=P1^6; //上限報(bào)警信號
sbit XSH=P3^3; //消聲按鈕
sbit BJ=P3^7; //報(bào)警
sbit EL=P1^7; //下限報(bào)警信號
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;
}
}
我這個(gè)程序就是 報(bào)警-消聲后 再次到水位上限它就不會報(bào)警了,這該怎么解決呢。
我是新手,希望大俠幫幫忙。
因?yàn)楣ぷ髟虼_實(shí)沒時(shí)間系統(tǒng)的學(xué)習(xí)單片機(jī),這個(gè)問題已經(jīng)有2個(gè)星期了,靠自己零碎的學(xué)習(xí)真的抓不到突破口了,希望朋友們幫下忙 謝了
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; 報(bào)警關(guān)!!!
JNB P1.7,$; 等待水位正常!!
JNB P1.6,$; 等待水位正常!!
AJMP START
QQ2:
LCALL DELAY;
CLR P3.7; 報(bào)警0電位有效
AJMP START;
DELAY:
MOV R3,#200;
D1:MOV R4,#256;
D2:DJNZ R4,D2;
DJNZ R3,D1;
RET
END
| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |