定时器2 中断需要手动清除中断标志,
中断中需要加入:
TF2 = 0;
定时器2自动重载需要 设置 RCAP2L , RCAP2H 那么它就会自动重载,
所以,如果你的重装值是要变化的话,一般需要 把下一次的T2重装值提前写入RCAP2L , RCAP2H 让他自动重装,如果你要每次直接改写 TL2 TH2 的话, 需要先 TR2 = 0, 然后 改写TL2 TH2 之后再 TR2 = 1,
另外, TR2 必须独立驱动(TR2 = 1), 不能通过 T2CON |= 0x04 来启动, 原因不知道,也许是设计缺陷。
最后,其实你也不知道你到底是跑飞还是其他什么情况。
个人建议你确定一下 DATA_OUT() 这个函数, 看你的定时设置应该是 0.5毫秒 或者 1毫秒, 你这个DATA_OUT() 需要跑多久? 时间久的话,程序被卡死就是必然的了。 |