至于计数初值的计算,授之以鱼不如授之以渔!
在定时器模式下,计数器的计数脉冲腊厅来自于晶振脉冲的12分频信号,即对机器周期进行计数。若选择12m晶振,则定时器的计数频率为1mhz。假设定时时间为谈局御t,机器周期为t1,即12/晶振频率。x为定时器初值。则
x=2^n-t/t1。方式0,n=13,方式1时,n=16,方式2和方式3,n=8
自己算去吧!
#include
void
inittimer0(void)//
{
tmod
=
0x01
th0
=
0x0fc
//计数器初值
tl0
=
0x18
ea
=
1
et0
=
1
tr0
=
1//开启定时器t0
}
void
main(void)
{
inittimer0()
}
void
timer0interrupt(void)
interrupt
1
{
th0
=
0x0fc//重新赋初值
tl0
=
0x18
p1.0=~p1.0
//输含岩出方波
}
1.以查询方式工作,每计满100个脉冲,则取反P1.0口线状态。
ORG 0000HMOV TMOD, #06H
MOV 伍野 TH0, #156
MOV TL0, #156
SETB TR0
LP: JNB TF0, LP
CPL P1.0
SJMP LP
END
2.以中断方式工作,每计腊橘耐满200个脉冲,则取反轮春P1.0口线状态。
ORG 0000HSJMP START
ORG 000BH
CPL P1.0
RETI
START:
MOV TMOD, #06H
MOV TH0, #56
MOV TL0, #56
SETB TR0
MOV IE, #82H
SJMP $
END
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)