;*****************************************;
;实验名称: 定时器T0控制LED灯闪烁时间的实验;
;作者: 龙谊 ;
;版本: VER 1.0 ;
;说明: 使用定时器T0 ;
;修改: 无 ;
;编程语言: 汇编语言 ;
;******************************************;
一、工作模式0
ORG00H
MOVTMOD,#00H ;设定定时器T0工作为模式0
START: CPLP0.0 ;位P0.0做取反处理,使LED灯亮与灭交替工作
MOVR1,#100 ;延时0.2秒
CALLDELAY ;设定时间为2毫秒(即2000微秒)
JMPSTART
DELAY: SETBTR0 ;启动定时器T0开始计时
D1: MOVTL0,#(8192-2000)MOD 32 ;设定TL0的值
MOVTH0,#(8192-2000)/32 ;设定TH0的值
D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同时清除TF0
JMPD2 ;不是则跳到D2
D3: DJNZR1,D1 ;定时够0.2秒了吗?
CLRTR0 ;够了则停止T0计时
RET
END
二、工作模式1
ORG00H
MOVTMOD,#01H ;设定定时器T0工作为模式1
START: CPLP0.0 ;位P0.0做取反处理,使LED灯亮与灭交替工作
MOVR1,#20 ;延时0.2秒
CALLDELAY ;设定时间为10毫秒(即10000微秒)
JMPSTART
DELAY: SETBTR0 ;启动定时器T0开始计时
D1: MOVTL0,#(65536-10000)MOD 256 ;设定TL0的值
MOVTH0,#(65536-10000)/256 ;设定TH0的值
D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同时清除TF0
JMPD2 ;不是则跳到D2
D3: DJNZR1,D1 ;定时够0.2秒了吗?
CLRTR0 ;够了则停止T0计时
RET
END
三、工作模式2
ORG00H
MOVTMOD,#02H ;设定定时器T0工作为模式2
START: CPLP0.0 ;位P0.0做取反处理,使LED灯亮与灭交替工作
MOVR2,#04 ;延时0.2秒
LOOP:MOVR1,#200 ;延时50毫秒
CALLDELAY ;设定时间为250微秒
DJNZR2,LOOP ;定时够0.2秒了吗?
JMPSTART
DELAY: SETBTR0 ;启动定时器T0开始计时
D1: MOVTL0,#(256-250) ;设定TL0的值
MOVTH0,#(256-250) ;设定TH0的值
D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同时清除TF0
JMPD2 ;不是则跳到D2
D3: DJNZR1,D1 ;定时够50毫秒了吗?
CLRTR0 ;够了则停止T0计时
RET
END
四、工作模式3
ORG00H
MOVTMOD,#03H ;设定定时器T0工作为模式3
START: CPLP0.0 ;位P0.0做取反处理,使LED灯亮与灭交替工作
MOVR2,#04 ;延时0.2秒
LOOP: MOVR1,#200 ;延时50毫秒
CALLDELAY ;设定时间为250微秒
DJNZR2,LOOP ;定时够0.2秒了吗?
JMPSTART
DELAY: SETBTR0 ;启动定时器T0开始计时
D1: MOVTL0,#(256-250) ;设定TL0的值
D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同时清除TF0
JMPD2 ;不是则跳到D2
D3: DJNZR1,D1 ;定时够50毫秒了吗?
CLRTR0 ;够了则停止T0计时
RET
END