在測試8G1K08A定時器時,發現分頻寄存器有很大出入準備4M燒寫頻率,內部分頻1/8。頻率500khz.
實際實驗,定時器時間都是快一倍,T0計算20ms,實際10ms,T1計算500ms,實際250ms
程序如下:
51hei圖片_20260209193220.png (46.8 KB, 下載次數: 0)
下載附件
2026-2-9 19:34 上傳
ORG 00H
AJMP MAIN
ORG 0BH
LJMP T0_0 ;定時器0(20ms定時掃描按鍵)
ORG 1BH
LJMP T1_0 ;定時器1(500ms閃爍點用)
ORG 100H
;=======================STC8G1K08A:定時器0、定時器1====================
MAIN:
MOV A,#0
MOV P3M1,A
MOV P3M0,A
MOV P5M1,A
MOV P5M0,A
MOV SP, #60h
MOV P_SW2,#80h
MOV A,#00H
MOV DPTR,#CLKSEL ;內部IRC
MOVX @DPTR,A
MOV A,#8 ;將這里改成16,就能實現500ms和20ms定時。
MOV DPTR,#CLKDIV ;1/8分頻,4M/8=500KHZ
MOVX @DPTR,A
MOV P_SW2,#00h
MOV IE,#10001010B;允許T0、T1中斷
MOV TMOD,#00000000B ;T0定時模式0(自動重載),T1定時模式0(自動重載)
MOV AUXR,#00000000B ;T0=分頻模式;T1=分頻模式
MOV TL0,#0BFH;20毫秒@500KHz
MOV TH0,#0FCH
MOV TL1,#09FH;500毫秒@500KHz
MOV TH1,#0AEH
CLR TF0
CLR TF1
SETB TR1
SETB TR0
JMP $ ;等待
;================T1定時500ms=====================
T1_0:
PUSH ACC
PUSH PSW
CPL P3.0 ;每0.5秒取反一次
CLR TF1
pop psw
pop acc
RETI
;===============T0定時20ms=============================
T0_0:
PUSH ACC
PUSH PSW
CPL P3.1 ;每0.02秒取反一次
pop psw
pop acc
CLR TF0
RETI
;=============================================
END
2.jpg (90.4 KB, 下載次數: 0)
下載附件
2026-2-9 19:34 上傳
1.jpg (76.56 KB, 下載次數: 0)
下載附件
2026-2-9 19:34 上傳
3.jpg (63.94 KB, 下載次數: 0)
下載附件
2026-2-9 19:34 上傳
程序很簡單的,哪里少設置了嗎,有人遇到這樣的問題嗎
|