久久久久亚洲精品,久久亚洲精品成人av无码网站,无码国产伦一区二区三区视频,天天躁人人躁人人躁狂躁

家用防盜報警器源程序

    家用防盜報警器源程序清單 ;采用89C2051無P3.6引腳!正常時P3口輸入低電平,報警時P3.0~P3.5輸入高電平,從P3.7引腳輸出高低電平間隔1秒的報警脈沖信號。

ORG 0000H ;開機(jī)復(fù)位PC指向0000H地址
AJMP MAIN ;轉(zhuǎn)入主程序
ORG 001BH ;定時器T1入口
LJMP WT0 ;轉(zhuǎn)入定時器T1中斷程序
ORG 30H ;這條語句有何作用?指定下一條程序的地址為30H
MAIN: MOV SP,#50H ;堆棧從50H開始
MOV 20H,#0 ;20H清零
MOV 24H,#0 ;24H清零
MOV P3,#0 ;P3口輸出低電平
MOV P1,#0 ;P1口輸出低電平(紅外線發(fā)射二極管工作)
MOV TH0,#6 ;此處不懂,預(yù)置數(shù)為多少?如何計算?答×初值為6,那么256-6=250,當(dāng)T0計數(shù)250個脈沖后發(fā)生中斷,如果時鐘頻率為6M那么機(jī)器周期為2us,T0的定時時間為500us。
MOV TL0,#6 ;不懂!
MOV TMOD,#02H ;TO工作方式為2
SETB EA ;打開總中斷
SETB ET0 ;開T0中斷
SETB TR0 ;T0開始計數(shù)
M: MOV P1,#00H ;P1口輸出低電平(以上程序所做的是開機(jī)初始化,程序進(jìn)行基本設(shè)置)
MOV A,P3 ;將P3口的值賦予A
ANL A,#7FH ;將A的值和01111111作與運(yùn)算,并且結(jié)果保留在A中
CJNE A,#7FH,W37 ;如果A不等于01111111那么跳轉(zhuǎn)到W37(也就是說當(dāng)P3口輸入高電平時報警
AJMP M ;返回到M處(處于監(jiān)控等待狀態(tài))
WT0: PUSH ACC ;將累加器A中的數(shù)值壓入堆棧
PUSH PSW ;將程序狀態(tài)字PSW壓入堆棧(保護(hù)現(xiàn)場)
INC 22H ;將22H中的值加1
MOV A,22H ;將22H中的值賦予A
CJNE A,#200,TORETI ;如果A中的值不等于200那么跳轉(zhuǎn)到TORETI(退出中斷)(也就是說中斷200次后往下執(zhí)行)
MOV 22H,#0 ;將22H中的數(shù)值清零
INC 23H ;將23H中的值加1
MOV A,23H ;將23H中的值賦予A
CJNE A,#10,TORETI ;1s 如果A中的值不等于10那么跳轉(zhuǎn)到TORETI(退出中斷)(在中斷10次,那么只有中斷200x10=2000次以后程序才能往下執(zhí)行)
MOV 23H,#0 ;將23H中的數(shù)值清零
JNB 00H,WBJ;00H應(yīng)該是位地址20H.0 如果20H.0的值為0那么跳轉(zhuǎn)到WBJ
TORETI: POP PSW ;恢復(fù)PSW中的數(shù)值
POP ACC ;恢復(fù)A中的數(shù)值(恢復(fù)現(xiàn)場)
RETI;退出中斷
WBJ: CPL P3.7 ;對引腳P3.7狀態(tài)取反
AJMP TORETI ;跳轉(zhuǎn)到TORETI (退出中斷)
W37: INC 24H ;將24H中的值加1
MOV A,24H ;將24H中的值賦予A
CJNE A,#10,M ;如果A中的值不等于10那么跳轉(zhuǎn)到M(增加檢測時間,如果重復(fù)10次檢測到P3口輸入高電平時程序往下執(zhí)行)
SETB 00H ;對位地址20H.0置1
AJMP M ;跳轉(zhuǎn)到M
END ;結(jié)束

                  網(wǎng)上的高手解答

    一.功能描述 簡易光電報警器,六個光電對管構(gòu)成六路檢測,如發(fā)生遮擋事件則輸出脈沖報警.
     1.硬件 電路比較簡單也很典型,其中CD4069可換成40106施密特六路非門,效果會更好;P3.7也可利用起來;P1口要串入限流電阻或接三極管放大.
     2.軟件 由主程序和中斷服務(wù)程序組成,主程序負(fù)責(zé)檢測外部觸發(fā),由中斷程序輸出報警脈沖.

    二.問題回答
     1. "ORG 30H" ORG,END等都為偽指令,在此指出MAIN段程序的程存地址從30H開始,在本程序中也可省略,這只是一般寫程序的風(fēng)格習(xí)慣而已.因?yàn)榇谥袛喾⻊?wù)入口地址是23H,從30H開始主程序就避免了對五個中斷服務(wù)程序的干擾,并為以后其他中斷的使用留下程存空間.在此程序中由于只用了T0中斷,所以緊接"LJMP WT0" 后面寫MAIN段也是可以的.
     2. "MOV TH0, #6" 設(shè)TH0初值為6,計算很簡單,方式2時為8位計數(shù)器,256-6=250,故6M時500微秒溢出.你的說明是正確的.
     3. "MOV TL0, #6" 因?yàn)榉绞?為8位自動裝填,每個機(jī)器周期只是對TL0加一,加滿后再將TH0的值賦給TL0重新計數(shù),TH0值一直保持不變.設(shè)TL0初值為6意味著只要一打開TR0,則從6開始計數(shù).實(shí)際上此句也可省略,因?yàn)椴还躎L0初值為何,最長256周期后TH0值6必然要賦給TL0.

    三.錯誤及更正
     1. "JNB 00H, WBJ"應(yīng)為"JB 00H,WBJ"!! 程序開始時,"MOV 20H, #0"已將位00H清零,所以一開始運(yùn)行不需觸發(fā)進(jìn)中斷就產(chǎn)生報警信號(P3.7輸出方波);相反,外部報警觸發(fā)后它反而不回報警了(因?yàn)?0H被置成1了).
     2. "MOV P3, #0" 應(yīng)去掉!! P3口作為光電檢測輸入口,由P3口的上拉結(jié)構(gòu)可知,要輸出數(shù)據(jù)P3口必須先置為高態(tài),原程序中初始化就將P3口置零,不僅不能輸入任何信號而且很容易燒毀芯片(4069輸出高時),是很嚴(yán)重的錯誤!
     3. "ANL A, #7FH.CJNE A, #7FH,W37" 其中7F改為3F. P3.6口在2051芯片中作為P1.0和P1.1的比較輸出(片內(nèi)),其值取決于P1.0和P1.1.在此應(yīng)用中不能保證P3.6一定為高,很容易導(dǎo)致誤報或根本不能工作.實(shí)際上只用了6路輸入檢測,干嗎是7F呢?
     4. 22H,23H是用來作為分頻計數(shù)控制P3.7輸出周期,最好在初始化MAIN將兩者清零,避免不必要的麻煩.如22H為200,23H為10時需好長時間才能進(jìn)入處理P3.7.
     5.中斷入口地址.....

    四.其它
     1.時間問題 22H,23H兩者作為P3.7輸出方波周期的延時計數(shù),故P3.7周期T=2*200*10*500微秒=2秒,占空比為1.
     2.24H用來計數(shù)檢測10次其目的是為了提高抗干擾能力.

    五.我的評價(一家之言,僅供參考)
     總體看來功能清晰,但程序?qū)嵲谑侨唛L,有許多地方可簡化和改進(jìn).嚴(yán)格來說有很多漏洞.
     1. 中斷中PSW無須壓棧保護(hù),程序中沒有牽扯到PSW.不是什么都要保護(hù),壓棧使用多了都可靠性不利.
     2. "INC 22H.MOV A,22H. CJNE A, #20, TORETI"換為"DJNZ R2,TORETI. MOV R2, #200 ",初始化中加入" MOV R2, #200"豈不更好(參見我以前給你程序),甚至不用什么"PUSH ACC. POP ACC"了,盡量避免用"CJNE..."之類的指令.程序中其它類同(共有三處).
     3. 猜猜WBJ段中" RETI"干什么用?
     4. 原程序在主程序中采用循環(huán)檢測,而用中斷來輸出報警信號,從資源利用角度來說很不科學(xué).例如:沒有報警時程序進(jìn)中斷根本不干事,報警后輸出不會停止但還是要中斷返回執(zhí)行主程序的檢測過程.實(shí)際上定時中斷是很寶貴的資源,在原程序中沒有涉及到睡眠等問題,中斷輸出方波功能完全可直接寫入主程序,這里用中斷可謂"殺雞用牛刀",利用率太底了。。. 編程學(xué)習(xí)還差不多.
     5. 電路中直接用光電管檢測,光電管卻一直處于恒開狀態(tài).這對安全要求比較高的場合是根本不行的.紅外主動報警器安全要求較高時要用到數(shù)據(jù)加密處理的.例如在原電路軟件中各對光電管分別進(jìn)行動態(tài)的可變數(shù)據(jù)通信(即用數(shù)據(jù)光通信進(jìn)行封鎖,注意時間問題),一旦發(fā)現(xiàn)數(shù)據(jù)出錯即處理報警,這樣安全性就可提高一個檔次!原電路不需動.寫出這樣的程序才能算有意思,不是很難,以后有能力你可嘗試.

    好了,就說怎么多,請你細(xì)細(xì)分析一下,完全理解后請給我詳細(xì)談?wù)勀愕母杏X.我想如果原程序能順利工作,我馬上就去跳樓(通知我一聲).實(shí)際上根據(jù)電路功能程序有好多寫法,都比這個要強(qiáng).由于時間關(guān)系在此省略,見諒,請自行練習(xí).

    備注:如果不需要AT89C51實(shí)驗(yàn)開發(fā)板中的12伏電源變壓器,價格可以降低10元

點(diǎn)擊查看詳細(xì)品種!

銀行帳號及郵購需知    立即進(jìn)入訂貨系統(tǒng)!    查看全部郵購清單

郵局匯款地址:郵編226200 江蘇省啟東市江海中路511號水晶苑 A-1 謝剛 收

電話/傳真:0513-83342087 小靈通:0513-83082087 聯(lián)系人:謝剛

電子信箱:

電子制作實(shí)驗(yàn)室網(wǎng)站主頁 http:www.xinjiapolvyou.cn