請問8051的問題

catanddog

高級會員
已加入
10/30/03
訊息
742
互動分數
0
點數
0
網站
造訪網站
要如何把計時器和記數器作在同一個IC裡面

這樣的話程式會不會打架阿...目前看來好像不能坐在同一個IC裡面

需要的功能:

在20秒內有五個訊號作動

超過時間就不作動

沒有五個訊號也不作動

請各位高手幫幫忙吧......

目前程式寫下去都有ERROR也找不到適合的代碼
 
貓狗大~您的意思是同一個timer要做計時跟計數嗎??
如果知道訊號的寬度,用計時去做計數的工作應該可行~僅供參考
 
已經十年沒碰這個了... ;oq;
都忘了怎麼寫這東西囉

但我可以給個建議,
使用暫存器來計數
例如:
N為訊號源
N=1為訊號作動
A0為計數器的暫存器
每次N=1時A0就加1
當A0>5時就讓你要作動的東西作動

不過我真的忘了8051的組合語言可不可以這樣寫 :PPP:
 
簡單的說,8051只要是完整版,就會有多組中斷;只要岔開來使用,定義好,就可以了........


沒啥問題才對,把你的程式丟上來看看。
 
恩∼我的程式都是現成的,因為我沒有任何的8051的經驗..而且我都是以C語言的邏輯去判斷

這樣的思路讓我很頭痛,因為在C語言裡面只要一條程式,他就自動幫你計時,到時候在較出來就好了

但是對於8051我的腦袋會卡住
TH0
TL0
一組
TH1
TH1
一組
那TR就找不到可以配對了,他算是暫存區吧

而且這樣兩個程式單純合併的話

就會先計數再計時,或是先計時在技術

沒有辦法多工.....
------------計數器----------
ORG 0000H
;
SETB P3.4
MOV TMOD,#00000110B

MOV TH0,#256-5
MOV TL0,#256-5
SETB TR0
;
LOOP: MOV P1,#11111111B
ACALL COUNTER
MOV P1,#00000000B
ACALL COUNTER
AJMP LOOP
;
COUNTER:JB TF0,OK
AJMP COUNTER
OK: CLR TF0
RET
;
END
---------------------------------------
------------------計時器---------------
ORG 0000H
MOV A,#11111110B
LOOP: MOV P1,A
ACALL DELAY
RL A
AJMP LOOP
;
DELAY: MOV R4,#100

MOV TMOD,#00000001B
TIMER: MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
WAIT: JB TF0,OK
AJMP WAIT

OK: CLR TF0
DJNZ R4,TIMER
RET
;
END
-----------------------------------------------

"就會有多組中斷;只要岔開來使用,定義好,就可以了........"
有點深奧可以解釋一下嗎?

再次謝謝各位的幫忙