可以用任何定时器,如TMR0,设置它基本延时时间为50ms,延时20次就是1s了!
因为你用的是4M晶振,指令周期为1us,TMR0的延时50ms延时常数计算如下:
先计算TMR0的分频系数K:
50000=256*1*K,K=195.3,取K=256(只能取略大的计算值,不能四舍五入!),这是的1是指令周期,下周
再计算TMR0的延时常数X:
5000=(256-X)*1*K,K用256代入,得X=61.
程序设计时用一个累计TMR0中断次数的变量T0_N,每中断一次T0_N+1,并判断其值>=20时就是1秒了。
注意,TMR0中断时要清TMR0IF,并要重新对TMR0赋初值61。