单片机定时器工作模式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
评论