;*****************************************;;實(shí)驗(yàn)名稱: 定時(shí)器T0控制LED燈閃爍時(shí)間的實(shí)驗(yàn);
;作者: 龍誼 ;
;版本: VER 1.0 ;
;說明: 使用定時(shí)器T0 ;
;修改: 無 ;
;編程語言: 匯編語言 ;
;******************************************;
本文引用地址:http://cafeforensic.com/article/201611/320657.htm一、工作模式0
ORG00H
MOVTMOD,#00H ;設(shè)定定時(shí)器T0工作為模式0
START: CPLP0.0 ;位P0.0做取反處理,使LED燈亮與滅交替工作
MOVR1,#100 ;延時(shí)0.2秒
CALLDELAY ;設(shè)定時(shí)間為2毫秒(即2000微秒)
JMPSTART
DELAY: SETBTR0 ;啟動(dòng)定時(shí)器T0開始計(jì)時(shí)
D1: MOVTL0,#(8192-2000)MOD 32 ;設(shè)定TL0的值
MOVTH0,#(8192-2000)/32 ;設(shè)定TH0的值
D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同時(shí)清除TF0
JMPD2 ;不是則跳到D2
D3: DJNZR1,D1 ;定時(shí)夠0.2秒了嗎?
CLRTR0 ;夠了則停止T0計(jì)時(shí)
RET
END
二、工作模式1
ORG00H
MOVTMOD,#01H ;設(shè)定定時(shí)器T0工作為模式1
START: CPLP0.0 ;位P0.0做取反處理,使LED燈亮與滅交替工作
MOVR1,#20 ;延時(shí)0.2秒
CALLDELAY ;設(shè)定時(shí)間為10毫秒(即10000微秒)
JMPSTART
DELAY: SETBTR0 ;啟動(dòng)定時(shí)器T0開始計(jì)時(shí)
D1: MOVTL0,#(65536-10000)MOD 256 ;設(shè)定TL0的值
MOVTH0,#(65536-10000)/256 ;設(shè)定TH0的值
D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同時(shí)清除TF0
JMPD2 ;不是則跳到D2
D3: DJNZR1,D1 ;定時(shí)夠0.2秒了嗎?
CLRTR0 ;夠了則停止T0計(jì)時(shí)
RET
END
三、工作模式2
ORG00H
MOVTMOD,#02H ;設(shè)定定時(shí)器T0工作為模式2
START: CPLP0.0 ;位P0.0做取反處理,使LED燈亮與滅交替工作
MOVR2,#04 ;延時(shí)0.2秒
LOOP:MOVR1,#200 ;延時(shí)50毫秒
CALLDELAY ;設(shè)定時(shí)間為250微秒
DJNZR2,LOOP ;定時(shí)夠0.2秒了嗎?
JMPSTART
DELAY: SETBTR0 ;啟動(dòng)定時(shí)器T0開始計(jì)時(shí)
D1: MOVTL0,#(256-250) ;設(shè)定TL0的值
MOVTH0,#(256-250) ;設(shè)定TH0的值
D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同時(shí)清除TF0
JMPD2 ;不是則跳到D2
D3: DJNZR1,D1 ;定時(shí)夠50毫秒了嗎?
CLRTR0 ;夠了則停止T0計(jì)時(shí)
RET
END
四、工作模式3
ORG00H
MOVTMOD,#03H ;設(shè)定定時(shí)器T0工作為模式3
START: CPLP0.0 ;位P0.0做取反處理,使LED燈亮與滅交替工作
MOVR2,#04 ;延時(shí)0.2秒
LOOP: MOVR1,#200 ;延時(shí)50毫秒
CALLDELAY ;設(shè)定時(shí)間為250微秒
DJNZR2,LOOP ;定時(shí)夠0.2秒了嗎?
JMPSTART
DELAY: SETBTR0 ;啟動(dòng)定時(shí)器T0開始計(jì)時(shí)
D1: MOVTL0,#(256-250) ;設(shè)定TL0的值
D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同時(shí)清除TF0
JMPD2 ;不是則跳到D2
D3: DJNZR1,D1 ;定時(shí)夠50毫秒了嗎?
CLRTR0 ;夠了則停止T0計(jì)時(shí)
RET
END
評(píng)論