關於程式方面!! |
缺席
|
Carl0612
一般會員 發表:24 回覆:31 積分:11 註冊:2005-07-06 發送簡訊給我 |
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
Carl0612
一般會員 發表:24 回覆:31 積分:11 註冊:2005-07-06 發送簡訊給我 |
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 發送簡訊給我 |
引言: 請問程式如何使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 發送簡訊給我 |
引言:想請問一下碰到這裡SETB TR0 就直接開始計數 JMP $是代表什麼呢?我不知捏,呵呵引言: 請問程式如何使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 |
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
Carl0612
一般會員 發表:24 回覆:31 積分:11 註冊:2005-07-06 發送簡訊給我 |
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
引言: 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 發送簡訊給我 |
那再請問一下 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 發送簡訊給我 |
引言: 那再請問一下DJNZ R0,T45就是R0減1(遞減)若R0不等於0 則跳到T45,若R0等於0就執行MOV R0,#100,R0=100下次R0又從100遞減,這樣就達到延時的目的 發表人 - src 於 2005/11/11 07:00:31T0_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: RETIDJNZ R0,T45後因為RO之前就有值 所以一定是跳到T45 那他下面的程式不就都RUN不到了,再給一次R0值 又有何作用呢...怎麼還會有把LED關掉的效果(我改成HT46R24之組語)有成功 LED就滅掉了,但就是這裡搞不懂!! 小弟可能笨了點連這個都問,但我想把他搞懂^^請各位長輩指導!! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |