單片機定時器工作模式0(timer013位定時器)
;定時
COUNTEQU5000;定時一次也只能夠定時5ms
LEDEQUP1.1
ORG0000H
MOVR0,#00H
L0:DJNZR0,L0;剛開始,先進行少量的延時,是各種工作寄存器準備好
MOVR1,00H;作為定時器累加器使用
MOVA,TMOD
ANLA,#11110000B;相與指令
CLRACC.3;GATE=0,允許Timer操作
CLRACC.2;為定時模式(C/T位為0):清零指令
CLRACC.1;TIMER0 M1=0
CLRACC.0;TIMER0 M0=0
MOVTMOD,A
SETBLED
MOVTH0,#(8192-COUNT)/32;取高八位數據
MOVTL0,#32;取底五位(為最大了)
CLRTF0;先把溢出標志位清零
SETBTR0;開始計時
LOOP:JNBTF0,LOOP;直接位尋址為0則轉移指令(如果TF0為1,則進入下面的中斷處理程序)
INCR1;使R1自增一
MOVTH0,#(8192-COUNT)/32
MOVTL0,#32
CLRTF0;CLEAR TF0 AGAIN
CJNER1,#10,LOOP;不相等則轉移指令,這個數可以進行調節
CPLLED ;取反指令
MOVR1,00H
AJMPLOOP
END
評論