你好 这样说吧,在12M时钟下,1个机器周期就是1微秒,一个机器周期计数器加1,20ms=20000微秒,就得计2万次,51的计数器是16位的,最高计数值为65536(FFFF),那么初值就是20000=65536-45536(B1E0),将B1赋定时器高8位,E0赋定时器低8位。这样到65536定时器溢出的时候正好2万次20ms。
程序:汇编
main:
MOV TH0,#0B1H
MOV TL0,#0E0H
MOV TMOD,#10H ;值定时器1,方式1
SETB EA ;开总中断
SETB ET0 ;开定时器中断
SETB TR0;;启动定时器
T0_INT: ;;定时器中断程序
CLR TR0;关闭定时器
MOV TH0,#0B1H;重新赋值
MOV TL0,#0E0H
在中断中完成的功能
SETB TR0;;重新启动定时器
RETI;中断返回
;其他程序
END;结束
void init(void)
{
TMOD=0x00;
TH0=(8192-2000)/32;
TL0=(8192-2000)%32;
TR0=1;
ET0=1;
EA=1;
}
以上就是关于微机原理,求解求解,急!!全部的内容,包括:微机原理,求解求解,急!!、在51单片机编程中 初始化程序的作用是什么、8253初始化问题 初学者求教!十分感谢!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)