T0定時(shí)、T1計(jì)數(shù),協(xié)作定時(shí)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
MCS—51單片機(jī)定時(shí)/計(jì)數(shù)器實(shí)驗(yàn) 編程 求程序
編程要求:
1.在P1.0引腳接一個(gè)發(fā)光二極管LED,點(diǎn)亮兩秒,熄滅一秒,周而復(fù)始。
2.用T0作為定時(shí)器,T1作為T(mén)0溢出的計(jì)數(shù)器,完成延時(shí)2秒和1秒的任務(wù)。
;---------------------------------
最佳答案:
按照?qǐng)D示,應(yīng)該用P1.7向T1送入計(jì)數(shù)脈沖。
先用T0定時(shí)250us,到時(shí)即輸出一個(gè)脈沖,送到T1。
T1應(yīng)使用計(jì)數(shù)方式1工作,收到4000個(gè),即達(dá)到了1s。
下列程序,在PROTEUS中仿真通過(guò)
ORG 0000H
JMP START
ORG 000BH
JMP T0_INT
ORG 001BH
JMP T1_INT
ORG 0030H
START:MOV SP,#60H
MOV TMOD,#52H ;T1計(jì)數(shù)方式1; T0定時(shí)方式2
MOV TH0, #(256-250) ;T0定時(shí)
MOV TL0, #(256-250) ;
SETB TR0;
MOV TH1, #(65536-4000) / 256 ;T1計(jì)數(shù)4000
MOV TL1, #(65536-4000) MOD 256 ;即1s
SETB TR1;
SETB ET0;
SETB ET1;
SETB EA;
MOV R2, #3
WAIT: SJMP WAIT ;等待中斷
;----------------------------------
T0_INT: ;T0定時(shí)250us,方式2,故不用重送初值
CLR P1.7 ;向T1送計(jì)數(shù)脈沖
NOP
SETB P1.7
RETI
;----------------------------------
T1_INT: ;每當(dāng)收到4000個(gè)脈沖(即1s)中斷一次
MOV TL1, #(65536-4000) MOD 256 ;重新送入初始值
MOV TH1, #(65536-4000)/256 ;T1計(jì)數(shù)4000
CLR P1.0
DJNZ R2, T1_END
SETB P1.0
MOV R2, #3
T1_END:
RETI
;----------------------------------
END