你好哈,首先回答问题你问题哈,不会在计数器每计6个数(也就是6个机器周期)就产生一次中断的。
纠正一下,你的理解有误哈。
首先TH1 TH1是给串口使用的,中断产生在单片机内部,由此产生串口的波特率。
你在程序中定义了定时器1,使用了8位自动重装,也就是TL1每减到0,就会再次重装回0Xfa,单片机执行这样一次的时间就是串口传输一个比特(位)的时间,波特率就是指每秒传输多少个位(bps),也就是,单片机每秒钟产生多少次定时器1的计数中断,然而这个中断是通过硬件的方式传递给串口的。
至于单片机的中断,依照你的理解应该是中断服务程序。这个你的程序中是使用了定时器0,只有在定时器0计数到达后,就会产生一次软件中断,程序指针跳转到中断服务程序中去,如果你没有对中断标志位清0,再次装载计数初值的话,这样的中断是不会再次进来的。也就是只产生一次就结束了。
至于你说的,关于计算机器周期时间不是这样理解的。
1个机器周期=12个时钟周期。假设你的晶振频率是12Mhz,那么你的机器周期就是1us。
除此之外,你还知道计数器做的减法的操作,这就需要自减指令,而指令,又涉及到指令周期。每条指令执行时间都是有一个或几个机器周期组成。MCS-51系统中,有单周期指令、双周期指令和四周期指令。自减指令是单周期指令。所以需要1us。