解:
T1方式0作计数器,计数预装值X = 2^13 - 1000 =7192D =1C18H
TH1←1CH, TL1←18H
机器周期 T = 12/Fosc = 12/(6x10^6) = 2x10^-6s =2μ s
10ms周期对应的计数满值 = 10000μ s/2μ s = 5000
T1方式0作10ms定时器,计数初值 = 2^13 -5000 =3192D = 0C78H
TH1←0CH, TL1←78H
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN: MOV SP, #60H ;;堆栈指针初值
LP0: MOV TMOD, #40H ;;T1方式0作计数器
MOV TH1, #1CH ;;T1计数预装值高8位
MOV TL1, #18H ;;T1计数预装值低8位
SETB TR1 ;;启动T1计数
LP1: JBC TF1, DLAY ;;若T计数溢出,转DLAY延时10ms
SJMP LP1 ;;若T1计数未溢出,继续查询
DLAY: CLR TR1 ;;关闭T1
MOV TMOD, #00H ;;T1改作方式0作定时器
MOV TH1, #0CH ;;T1定时计数预装值高8位
MOV TL1, #78H ;;T1定时计数预装值低8位
SETB TR1 ;;启动T1计数延时
LP2: JBC TF1, LP3 ;;若T1计数延时至10ms,转LP3
SJMP LP2 ;;若T1计数延时未达10ms,继续查询
LP3: CLR TR1 ;;关闭T1
AJMP LP0 ;;转LP0,使T1重新作定时器
END
俞先锋 好样的
TMOD与TCON两个寄存器看懂了就会了