另外我请问一下那个高低电平初始值的计算和51单片机是一样的吗,我在网上看见好几种算法,以4MHZ晶振频率,1:8预分配为例子。
第一种是:时钟周期为0.25us,指令周期为0.25*4=1us,经过预分频1:8后,指令周期变为8us,TMR1IF溢出为1时需要通过低八位8us*256=2048us,通过高八位2048us*256=524288us,定时器需要524288us溢出,设定0.5s溢出:524288-500000=24288us,指令周期x预分频比=预分频器溢出的周期:1usX8=8us,初始值的时间/预分频器溢出的周期=初始值 :24288us/8us=3036,将其转换为十六进制为0x0BDC;
第二种是:从0加满需要65536个机器周期,每个机器周期等于12个时钟周期,4M晶振每个机器周期为0.25us,每加一个数的机器周期为12*0.25=3us,中断一次耗时50ms,中断20次为1s,50ms的初值计算为:中断值 =(65536-初值)*机器周期,初值=(65536-(50000/3);
不知道哪种算法是对的,第一个的初值网上很少是524288,几乎都是65536;第二个的机器周期等于12个时钟周期不知道这个是以什么为例子,pic单片机是不是机器周期都是等于4个时钟周期?而且第二种1:8分频好像也没有用到。希望大佬能解惑!!! |