線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1870
推到 Plurk!
推到 Facebook!

利用8051來偵測高電壓低電壓的問題

答題得分者是:阿信
bigann
一般會員


發表:1
回覆:1
積分:0
註冊:2005-05-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-04 15:46:30 IP:163.23.xxx.xxx 未訂閱
我是想偵測高低電壓 超過2.6V 或低於2.4V 透過RS232可以在電腦上顯示 high voltage 跟 low voltage我是利用可變電組來改變電壓 利用ADC0804來將0~5V轉換成數位訊號 我是用P1來讀取ADC0804的轉換值 用555來驅動ado0804 所以他可以一直轉換0到5v的值  我是用進位旗標寫的 MOV A,P1 然後 CLR C 接下來 SUBB A,#133 然後JNC 副程式 但是就是不會跳到副程式 有人可以教我嗎 以下是我的程式: 
;-------------------------------- 
 LF    EQU 0AH 
 CR    EQU 0DH 
;---------------------- 
       ORG 0H 
       JMP START ;主程式起始位址 
;---------------------- 
START: 
       MOV SCON,#50H 
       MOV TMOD,#20H 
       MOV TH1,#0FDH 
       SETB TR1 
       SETB TI 
       MOV SP,#60 
READ: 
       MOV A,P1 
       CALL DELAY2 
       CLR C 
       SUBB A#133  ;大於2.6v
       JNC LARGE 
       AJMP START 
LOOP:  MOV A,P1 
       CLR C 
       SUBB A#122   ;小於2.4v
       JNC SMALL 
       JMP START 
;---------------------- 
LARGE: MOV DPTR,#ATAC3
       CALL TX_STR 
       RET 
;---------------------- 
SMALL: MOV DPTR,#ATAC2 
       CALL TX_STR 
       RET 
;----------------------- 
TX_CHAR: 
       JNB TI,$ 
       CLR TI 
       MOV SBUF, A 
       RET 
;----------------------- 
TX_STR: 
       CLR A 
       MOVC A,@A DPTR 
       CJNE A,#'$', $1 
       RET 
$1: 
       CALL TX_CHAR 
       INC DPTR 
       JMP TX_STR 
       RET 
;----------------------- 
DELAY: ;10s 
        MOV R5,#100 
S1:     MOV R6,#250 
S2:     MOV R7,#200 
S3:     DJNZ R7,S3 
        DJNZ R6,S2 
        DJNZ R5,S1 
        RET 
;----------------------- 
DELAY2: ;5s 
        MOV R5,#50 
S1:     MOV R6,#250 
S2:     MOV R7,#200 
S3:     DJNZ R7,S3 
        DJNZ R6,S2 
        DJNZ R5,S1 
        RET 
;----------------------- 
ATAC2: 
        DB "low voltage",'$' 
;------------------------------------------ 
ATAC3: 
        DB "high voltage",'$' 
;------------------------------------------             END
發表人 - ㊣ 於 2005/05/04 19:32:39

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-04 15:52:43 IP:211.22.xxx.xxx 未訂閱
新手請先閱讀版規. Po程式碼請縮排,煩請修改配合!謝謝!!
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-04 17:08:08 IP:211.21.xxx.xxx 未訂閱
        LF        EQU        0AH 
        CR        EQU        0DH 
;---------------------- 
        ORG        0H 
        JMP        START ;主程式起始位址 
;---------------------- 
START: 
        MOV        SCON,#50H 
        MOV        TMOD,#20H 
        MOV        TH1,#0FDH 
        SETB        TR1 
        SETB        TI 
        MOV        SP,#60 
READ: 
        MOV        A,P1
        CALL        DELAY2 
        CLR        C 
        SUBB        A,#133        ;大於2.6V
        JC        LARGE        ; <== 註1-1 ;改成"JC"夠減才跳
;        AJMP        START        ; <== 這行不要
LOOP: 
        MOV        A,P1 
        CLR        C 
        SUBB        A,#122 ;小於2.4V
        JNC        SMALL         ; <== 註1-2
        JMP        START     ;---------------------- 
LARGE: 
        MOV        DPTR,#ATAC3
        CALL        TX_STR 
        RET                 ; <== 註1-3
;---------------------- 
SMALL: 
        MOV        DPTR,#ATAC2 
        CALL        TX_STR 
        RET                 ; <== 註1-4
;----------------------- 
TX_CHAR: 
        JNB        TI,$ 
        CLR        TI 
        MOV        SBUF, A 
        RET 
;----------------------- 
TX_STR: 
        CLR        A 
        MOVC        A,@A DPTR 
        CJNE        A,#'$', $1 
        RET 
$1: 
        CALL        TX_CHAR 
        INC        DPTR 
        JMP        TX_STR 
        RET 
;----------------------- 
DELAY: ;10s 
        MOV        R5,#100 
S1:        MOV         R6,#250 
S2:        MOV         R7,#200 
S3:        DJNZ         R7,S3 
        DJNZ        R6,S2 
        DJNZ        R5,S1 
        RET 
;----------------------- 
DELAY2: ;5s 
        MOV        R5,#50 
S1:        MOV        R6,#250 
S2:        MOV        R7,#200 
S3:        DJNZ        R7,S3 
        DJNZ        R6,S2 
        DJNZ        R5,S1 
        RET 
;----------------------- 
ATAC2: 
        DB "low voltage",'$' 
;------------------------------------------ 
ATAC3: 
        DB "high voltage",'$' 
;------------------------------------------     END
註1:用"JNC"去,然後用RET返回,不對吧! JNC是Jump if Not Carry ,Carry旗標沒設定就跳 RET要改成 JMP START PS.發表文章時 內文上方有格式 有個"#"符號 按一下 會出現 code /code 將程式插入code與/code中間 ------------------- 美好的事物 稍縱即逝
bigann
一般會員


發表:1
回覆:1
積分:0
註冊:2005-05-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-04 18:55:25 IP:163.23.xxx.xxx 未訂閱
不好意思版主 我沒有注意看板規就po文 下次我一定會注意的 阿信大大 我已經可以跑了 但是還有一個問題就是 我是用555驅動的 所以他會讓0804固定一直讀值 所以我變成超過2.6v的時候 會一直重複顯示high voltage high voltage....... 而且程式一開始執行就會顯示high voltage..... 我已經事先把電壓調到2.5V 我後來把範圍變大 高於200 低於50 一執行就是hight voltage 可以有辦法 超過200然候只顯示一次hight voltage 等到低於50 只顯示一次 low voltage嗎?
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-05 10:42:54 IP:211.21.xxx.xxx 未訂閱
先宣告 兩個位元 叫 fg_HighSended fg_LowSended    
        ORG        0H 
        JMP        START0 ;主程式起始位址 
;----------------------
START0:
        clr        fg_HighSended
        clr        fg_LowSended 
START: 
        MOV        SCON,#50H 
        MOV        TMOD,#20H 
        MOV        TH1,#0FDH 
        SETB        TR1 
        SETB        TI 
        MOV        SP,#60 
CheckHigh:
        jb        fg_HighSended,CheckHigh_Exit        ;如果已顯示過high voltage就不再判斷 
        MOV        A,P1
        CALL        DELAY2 
        CLR        C 
        SUBB        A,#133        ;大於2.6V
        jnc        CheckHigh_Exit        ; 沒有大於上限值就離開
        clr        fg_LowSended
        set        fg_HighSended
        jmp        LARGE
CheckHigh_Exit:    CheckLow:
        jb        fg_LowSended,CheckLow_Exit        ;如果已顯示過low voltage就不再判斷 
        MOV        A,P1 
        CLR        C 
        SUBB        A,#122 ;小於2.4V
        jc        CheckLow_Exit        ; 沒有小於下限值就離開
        clr        fg_HighSended
        set        fg_LowSended
        jmp        SMALL
CheckLow_Exit:
        JMP        START 
程式沒有編譯過 可能有一些語法錯誤 但邏輯大致是這樣 ------------------- 美好的事物 稍縱即逝
系統時間:2024-05-05 14:35:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!