A. 怎麼用51單片機定時1個小時 好像是循環,具體匯編程序是怎樣的
簡單啊。
大致說來就是
你先開啟個定時器,根據你選用的
晶振
,計算出你要用定時器定時的基準時間,
就假設是10毫秒吧。
然後給定時器的THx,TLx寫入初值,開啟中斷,進行定時。
然後就等待中斷。
在你響應中斷的程序中,再次給單片機送入初值,
由於是10毫秒中斷一次,因此我們設置幾個「軟體計數器」
比如每此中斷,軟甲計數器+1,
例如「軟體計數器1」在中斷程序中計數100次,則是10ms*100=1s
而「軟體計數器2」在1的基礎上繼續計數100次,則是1S*100=100S
而「軟體計數器3」在2的基礎上繼續計數36次,則是100S*36=3600S=1小時。
B. 單片機定時器的匯編語言程序編程
ORG 0000H
SJMP START
ORG 001BH
AJMP INT_TIMER1
ORG 0040H
START:
MOV TMOD,#20H
MOV TH1,#231
MOV TL1,#231
SETB ET1
SETB TR1
SETB EA
MOV P1,#00H
CLR A
SJMP $
INT_TIMER1:
JZ OUTOUT_HIGH
CLR P1.2
SJMP INC_A
OUTOUT_HIGH:
SETB P1.2
INC_A: INC A
CJNE A,#08H,SKIP_SET0
CLR A
SKIP_SET0:
RETI
END
C. 單片機定時器怎麼用匯編語言編程啊
那要看你所用的單片機的時鍾頻率是多少。
TIME: mov tmod,#01h
mov TH0,R1
MOV TL0,R0
MOV IE,#00H
SETB TR0
L1:JBC TF0,L3
AJMP L1
L3:
RET
這是個定時的程序,裡面r1和r0控制定時的長短,你學過應該會的。不會就看一下單片機的定時器的工作原理,這個是用的方式一,定時器0。具體時間得看你的晶振頻率,自己算一下吧。要是時間短就多調用幾次。
D. 51單片機定時 匯編語言編寫
1:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-10000) ;定時10毫秒
MOV TL0,#LOW(65536-10000)
SETB TR0
SETB ET0
SETB EA
LOOP:
INC A
SJMP LOOP
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
SETB TR0
INC R2
RETI
END
2:
KEY BIT P1.0
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000) ;定時50毫秒
MOV TL0,#LOW(65536-50000)
SETB TR0
SETB ET0
SETB EA
CLR A
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
JB KEY,T0E
MOV DPTR,#LEDTAB
PUSH ACC
MOVC A,@A+DPTR
MOV P0,A
POP ACC
INC A
MOV B,#10
DIV AB
T0E:
RETI
LEDTAB:
DB 00H,01H,02H,04H,08H,10H,20H,40H,80H,0FFH
END
E. 怎麼用51單片機定時1個小時 好像是循環,具體匯編程序是怎樣的
開啟定時器作為時間基準,
然後再設置幾個軟體計數器,
比如,你設定定時器每隔10毫秒中斷一次,
軟體計數器a加1,當a數值=100時,就已經定時1秒了,
軟體計數器b這時+1,當b數值=60時,就已經定時1分了,
軟體計數器c這時+1,當c數值=60時,就已經定時1小時了。
就是這樣累積的定時,
明白?
F. 單片機定時器應用 匯編
查詢方式,同樣可以做到多任務「並行」的,只是查詢的方法要得當,
不要等到這個任務執行完了,才去查詢下個任務是否應該執行,
當然各任務優先順序別不同的時候例外。
看看下列程序,是否有幫助.
ORG 0000H
MOV 50H,#9
MOV 51H,#20
MOV TMOD,#11H
MOV TH1,#3CH
MOV TL1,#0B0H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
SETB TR1
MOV R1,#0FEH
MOV R2,#0FEH
L1:
JBC TF1,L2
JBC TF0,L3
AJMP L1
L2:
MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ 50H,L1
MOV 50H,#9
MOV A,R1
RL A
MOV P2,A
MOV R1,A
AJMP L1
L3:
MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ 51H, L1
MOV 51H, #20
MOV A,R2
RR A
MOV P0,A
MOV R2,A
AJMP L1
END
上述程序,已經用PROTEUS模擬實驗成功,兩個任務,基本上是互不幹擾。
G. 你好,關於這個問題「怎麼用51單片機定時1個小時 好像是循環,具體匯編程序是怎樣的」我想要具體程序~
開啟定時器作為時間基準,
然後再設置幾個軟體計數器,
比如,你設定定時器每隔10毫秒中斷一次,
軟體計數器A加1,當A數值=100時,就已經定時1秒了,
軟體計數器B這時+1,當B數值=60時,就已經定時1分了,
軟體計數器C這時+1,當C數值=60時,就已經定時1小時了。
就是這樣累積的定時,
明白?
H. 51單片機定時器匯編程序
試試下列程序:
;
ORG 0000H
SJMP BEGIN
ORG 000BH
MOV TH0, #3CH ;定時100ms
MOV TL0, #0B0H
DJNZ R7, E_T0
MOV R7, #5
SETB F0 ;每500ms置一
E_T0:RETI
;------------------------------------
BEGIN:
MOV TMOD, #01H ;T0定時方式1
MOV TH0, #3CH ;50ms@12MHz
MOV TL0, #0B0H ;100ms@6MHz
MOV R7, #5
SETB TR0
SETB ET0
SETB EA
;------------------------
M_LOOP:
MOV A, #255
L1:
MOV P1, A
JNB F0, $
CLR F0
CLR C
RLC A
JC L1
;------------------------
L2:
MOV P1, A
JNB F0, $
CLR F0
SETB C
RRC A
JNC L2
;------------------------
MOV R2, #8 ;全亮全滅8次
L3:
MOV P1, #0 ;全亮
JNB F0, $
CLR F0
MOV P1, #255;全滅
JNB F0, $
CLR F0
DJNZ R2, L3
;------------------------
JMP M_LOOP
;------------------------------------
END
本程序可實現:
L1-L8依次點亮----L1-L8依次熄滅----8個燈全亮全滅8次~循環 各時序間隔0.5s。
I. 51單片機匯編語言定時器的使用(中斷方式)
(1)
COUNT_INTEQU30H
LEDVALUEEQU31H
ORG0000H
LJMPSTART
ORG001BH
LJMPTimer1Interrupt
START:
MOVSP,#60H
MOVCOUNT_INT,#0
MOVLEDVALUE,#01H
LCALLInitTimer1
LOOP:
MOVA,LEDVALUE
MOVP2,A
LJMPLOOP
InitTimer1:
MOVTMOD,#10H;定時器T1為工作方式1,產生50ms定時
MOVTH1,#3CH
MOVTL1,#0B0H
SETBEA
SETBET1
SETBTR1
RET
Timer1Interrupt:
PUSHDPH
PUSHDPL
PUSHACC
MOVTH1,#3CH
MOVTL1,#0B0H
;========================
INCCOUNT_INT
MOVA,COUNT_INT;每50ms加1,
CJNEA,#2,Timer1Interrupt_EXIT;100ms
MOVCOUNT_INT,#0
MOVA,LEDVALUE
RLA
MOVLEDVALUE,A
;========================
Timer1Interrupt_EXIT:
POPACC
POPDPL
POPDPH
RETI
END
(2)
COUNT_INT_LEQU30H
COUNT_INT_HEQU31H
LEDVALUEEQU32H
ORG0000H
LJMPSTART
ORG001BH
LJMPTimer1Interrupt
START:
MOVSP,#60H
MOVCOUNT_INT_L,#0
MOVCOUNT_INT_H,#0
MOVLEDVALUE,#01H
LCALLInitTimer1
LOOP:
MOVA,LEDVALUE
MOVP2,A
LJMPLOOP
InitTimer1:
MOVTMOD,#20H;定時器T1為工作方式2,產生250us定時
MOVTH1,#00H
MOVTL1,#06H
SETBEA
SETBET1
SETBTR1
RET
Timer1Interrupt:
PUSHDPH
PUSHDPL
PUSHACC
MOVTH1,#00H
MOVTL1,#06H
;========================
INCCOUNT_INT_L
MOVA,COUNT_INT_L;每250us加1,
CJNEA,#40,Timer1Interrupt_EXIT;250US*40=10ms
MOVCOUNT_INT_L,#0
INCCOUNT_INT_H
MOVA,COUNT_INT_H;每10Ms加1,
CJNEA,#10,Timer1Interrupt_EXIT;10ms*10=100MS
MOVCOUNT_INT_H,#0
MOVA,LEDVALUE
RLA
MOVLEDVALUE,A
;========================
Timer1Interrupt_EXIT:
POPACC
POPDPL
POPDPH
RETI
END
J. 51單片機定時器的匯編語言程序編程,
LED BIT P1.0 ;定義LED的引腳
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H ;定時器0工作模式1
MOV TH0,#HIGH(65536-50000) ;初值,50毫秒中斷一次
MOV TL0,#LOW(65536-50000)
SETB TR0 ;啟動定時器
SETB ET0 ;啟動定時器中斷
SETB EA ;開總中斷
MOV R2,#40 ;中斷計數初始值
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R2,T0E ;R2減到0重新賦值,否則退出
MOV R2,#40
CPL LED ;LED亮滅轉換
T0E:
RETI
END