普通单片机工作时钟多是12T模式,所谓12T,是指:单片机的一个机械周期 等于 12 个系统时钟周期(即晶振周期),那么,12MHz的晶振,其周期 t=1/Fosc=1/12MHz=1/12 us,则单片机机械周期 T=12t=1us。
单片机的运行指令都是按机械周期计算的,比如 自增(++)、自减(--)运算 占用 1个机械周期,赋值运算(=)占用 2个机械周期 等等。而单片机中的中断计时,使用的是 自增 后溢出报警的方式,每一次自增都是1us,LZ 的赋值语句后,单片机溢出要进行 50000次自增,时间共计1us×50000=50ms,也就是该中断每隔 50ms 就溢出一次,即中断时间是50ms。
题外话,除了12T时钟模式外,有些单片机使用的是 1T时钟模式,即单片机机械周期 等于 系统时钟周期。
追问如果是1T的单片机呢?
追答1T时钟模式,即 单片机 机械周期 等于 系统时钟周期,也就是 1/12 us,同样道理,50000次自增的时间共计 1/12 us × 50000=50/12 ms,即中断时间 25/6 ms。