全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1377
推到 Plurk!
推到 Facebook!

關於程式方面!!

缺席
Carl0612
一般會員


發表:24
回覆:31
積分:11
註冊:2005-07-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-05 00:51:15 IP:59.113.xxx.xxx 未訂閱
請問程式如何使2個bit同時輸出呢? 就是例如:bit0 亮30秒滅30秒 bit1 亮45秒滅45秒 如何使bit同時輸出值呢@@ 因為我在程式run下來,他是先跑bit0再跑bit1 如知的請幫幫我好嗎^^謝謝你的解答^^"

版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-05 03:09:25 IP:203.203.xxx.xxx 未訂閱
1>請問你在問什麼?你這樣寫只有你自己知道吧.大家不是你肚內的蛔虫,請詳細敘述你的問題.(什麼Device...問題在那...你的程式) 2>請為你的問題取一個有意義的名稱. 煩請修改配合!謝謝!
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
Carl0612
一般會員


發表:24
回覆:31
積分:11
註冊:2005-07-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-06 18:06:38 IP:59.113.xxx.xxx 未訂閱
DISPLAY:
                MOV        A,1
                MOV        RO,A
DP:
                MOV        A,R_REG
                MOV         PWM0,A
                MOV        A,R_LIE_REG
                MOV        DEL1,A
                CALL        DELAY
                CLR        PWM0
                MOV        A,R_DARK_REG
                 MOV        DEL1,A
                CALL        DELAY
                MOV        A,G_REG
                MOV         PWM1,A
                MOV        A,G_LIE_REG                        
                MOV        DEL1,A
                CALL        DELAY
                CLR        PWM1
                MOV        A,G_DARK_REG
                 MOV        DEL1,A
                CALL        DELAY
                SDZ        RO
                JMP        DP
                CALL        BUTTON
你們看程式run下來是先跑pwm0再跑pwm1 他們的delay也是pwm0閃完才換到pwm1 我知道我程式設置成這樣一定是先閃滅pmw0完才換到pwm1 那我該如何做才可以把pwm0跟pwm1同時亮呢? 不知我說的是否聽得懂...... 發表人 - ㊣ 於 2005/11/06 20:50:59
src
高階會員


發表:1
回覆:94
積分:154
註冊:2005-08-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-11-07 04:03:29 IP:220.139.xxx.xxx 未訂閱
引言: 請問程式如何使2個bit同時輸出呢? 就是例如:bit0 亮30秒滅30秒 bit1 亮45秒滅45秒 如何使bit同時輸出值呢@@ 因為我在程式run下來,他是先跑bit0再跑bit1 如知的請幫幫我好嗎^^謝謝你的解答^^"
BIT0        EQU         P0.0            ;
BIT1        EQU         P0.1
;============================
        ORG        0H
        JMP        START
        ORG        0BH
        JMP        T0_INT
;============================
START:
        MOV        TH0,#(65536-50000) / 256   ;振盪晶體12MHz
        MOV        TL0,#(65536-50000) MOD 256 ;Timer0設定0.05秒中斷一次
        MOV        TMOD,#01H    ;Timer0設定MODE1
        SETB        EA           ;致能整體中斷
        SETB        ET0          ;致能Timer0中斷
        MOV        R0,#100      ;以R0及R1設定30秒
        MOV        R1,#6        ;0.05*100*6=30秒
        MOV        R2,#100      ;以R2及R3設定45秒
        MOV        R3,#9        ;0.05*100*9=45秒
        SETB        TR0          ;啟動Timer0
        CLR        BIT0         ;點亮BIT0
        CLR        BIT1         ;點亮BIT1 
        JMP         $
;============================
;用TIMER0_INT做DELAY
;設定MODE 1
;TH0=>(65536-50000)
;TL0=<(65536-50000)
;============================
T0_INT:
        MOV        TH0,#(65536-50000) / 256
        MOV        TL0,#(65536-50000) MOD 256
        DJNZ        R0,T45
        MOV        R0,#100
        DJNZ        R1,T45
        MOV        R1,#6
        CPL        BIT0        
T45:
        DJNZ        R2,T0_RET
        MOV        R2,#100
        DJNZ        R3,T0_RET
        MOV        R3,#9
        CPL        BIT1
T0_RET:
        RETI
;============================
        END
 
此程式開始同時點亮BIT0及BIT1,之後BIT0每30秒切換,BIT1每45秒切換 發表人 - src 於 2005/11/07 11:44:49
Carl0612
一般會員


發表:24
回覆:31
積分:11
註冊:2005-07-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-11-07 14:53:05 IP:59.113.xxx.xxx 未訂閱
引言:
引言: 請問程式如何使2個bit同時輸出呢? 就是例如:bit0 亮30秒滅30秒 bit1 亮45秒滅45秒 如何使bit同時輸出值呢@@ 因為我在程式run下來,他是先跑bit0再跑bit1 如知的請幫幫我好嗎^^謝謝你的解答^^"
BIT0        EQU         P0.0            ;
BIT1        EQU         P0.1
;============================
        ORG        0H
        JMP        START
        ORG        0BH
        JMP        T0_INT
;============================
START:
        MOV        TH0,#(65536-50000) / 256   ;振盪晶體12MHz
        MOV        TL0,#(65536-50000) MOD 256 ;Timer0設定0.05秒中斷一次
        MOV        TMOD,#01H    ;Timer0設定MODE1
        SETB        EA           ;致能整體中斷
        SETB        ET0          ;致能Timer0中斷
        MOV        R0,#100      ;以R0及R1設定30秒
        MOV        R1,#6        ;0.05*100*6=30秒
        MOV        R2,#100      ;以R2及R3設定45秒
        MOV        R3,#9        ;0.05*100*9=45秒
        SETB        TR0          ;啟動Timer0
        CLR        BIT0         ;點亮BIT0
        CLR        BIT1         ;點亮BIT1 
        JMP         $
;============================
;用TIMER0_INT做DELAY
;設定MODE 1
;TH0=>(65536-50000)
;TL0=<(65536-50000)
;============================
T0_INT:
        MOV        TH0,#(65536-50000) / 256
        MOV        TL0,#(65536-50000) MOD 256
        DJNZ        R0,T45
        MOV        R0,#100
        DJNZ        R1,T45
        MOV        R1,#6
        CPL        BIT0        
T45:
        DJNZ        R2,T0_RET
        MOV        R2,#100
        DJNZ        R3,T0_RET
        MOV        R3,#9
        CPL        BIT1
T0_RET:
        RETI
;============================
        END
 
此程式開始同時點亮BIT0及BIT1,之後BIT0每30秒切換,BIT1每45秒切換 發表人 - src 於 2005/11/07 11:44:49
想請問一下碰到這裡SETB TR0 就直接開始計數 JMP $是代表什麼呢?我不知捏,呵呵

版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-11-07 16:16:04 IP:211.22.xxx.xxx 未訂閱
引言: JMP $是代表什麼呢?我不知捏,呵呵
JMP $ ;在原地跳相當於 =>
Loop:  JMP  Loop
發表人 - ㊣ 於 2005/11/07 16:16:58
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
Carl0612
一般會員


發表:24
回覆:31
積分:11
註冊:2005-07-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-11-10 00:40:06 IP:59.113.xxx.xxx 未訂閱
MOV TH0,#(65536-50000) / 256 ;振盪晶體12MHz MOV TL0,#(65536-50000) MOD 256 ;Timer0設定0.05秒中斷一次 如果沒有設這個會導至什麼結果呢?

版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-11-10 01:48:07 IP:203.203.xxx.xxx 未訂閱
引言: MOV TH0,#(65536-50000) / 256 ;振盪晶體12MHz MOV TL0,#(65536-50000) MOD 256 ;Timer0設定0.05秒中斷一次 如果沒有設這個會導至什麼結果呢?
你要看TH0,TL0 不設時的初值為多少. 我記得都是FFH 有2種可能: 1> 都是00H, 2>都是FFH 若都是00H=> 數的時間不準, 會變成約0.065秒中斷一次 若都是FFH=> 只數1次, 一直在中斷迴路裡跑不出來.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
Carl0612
一般會員


發表:24
回覆:31
積分:11
註冊:2005-07-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-11-11 01:26:49 IP:59.113.xxx.xxx 未訂閱
那再請問一下
T0_INT:
        MOV        TH0,#(65536-50000) / 256
        MOV        TL0,#(65536-50000) MOD 256
        DJNZ        R0,T45
        MOV        R0,#100
        DJNZ        R1,T45
        MOV        R1,#6
        CPL        BIT0        
T45:
        DJNZ        R2,T0_RET
        MOV        R2,#100
        DJNZ        R3,T0_RET
        MOV        R3,#9
        CPL        BIT1
T0_RET:
        RETI    DJNZ R0,T45後因為RO之前就有值 所以一定是跳到T45 那他下面的程式不就都RUN不到了,再給一次R0值 又有何作用呢...怎麼還會有把LED關掉的效果(我改成HT46R24之組語)有成功 LED就滅掉了,但就是這裡搞不懂!!
小弟可能笨了點連這個都問,但我想把他搞懂^^請各位長輩指導!!    
P.S: po 程式碼請做好縮排. 下次會直接砍. 發表人 - ㊣ 於 2005/11/11 08:42:15
src
高階會員


發表:1
回覆:94
積分:154
註冊:2005-08-23

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-11-11 06:54:21 IP:220.139.xxx.xxx 未訂閱
引言: 那再請問一下
 
T0_INT:
        MOV        TH0,#(65536-50000) / 256
        MOV        TL0,#(65536-50000) MOD 256
        DJNZ        R0,T45
        MOV        R0,#100
        DJNZ        R1,T45
        MOV        R1,#6
        CPL        BIT0        
T45:
        DJNZ        R2,T0_RET
        MOV        R2,#100
        DJNZ        R3,T0_RET
        MOV        R3,#9
        CPL        BIT1
T0_RET:
        RETI
DJNZ R0,T45後因為RO之前就有值 所以一定是跳到T45 那他下面的程式不就都RUN不到了,再給一次R0值 又有何作用呢...怎麼還會有把LED關掉的效果(我改成HT46R24之組語)有成功 LED就滅掉了,但就是這裡搞不懂!! 小弟可能笨了點連這個都問,但我想把他搞懂^^請各位長輩指導!!
DJNZ R0,T45就是R0減1(遞減)若R0不等於0 則跳到T45,若R0等於0就執行MOV R0,#100,R0=100下次R0又從100遞減,這樣就達到延時的目的 發表人 - src 於 2005/11/11 07:00:31
系統時間:2024-06-29 18:43:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!