其实不太确定你的意图, 你的计数到底计数的什么, 如果是 计数480个下降沿的话, 是不是应该这样?
void int4_Routine(void) interrupt 16
{
if(++count==480)
{
CLK_DIV |= 0x10;
}
if(++count>=9600)
{
count = 0;
CLK_DIV &= 0xEF;
}
}
这只是一个建议, 因为我没理解你希望的 效果,CLK_DIV 你应该理解为一个 开关,在你认为适当的时候,打开开关 让 P3.1 输出 P3.0 不需要的时候关闭。这个开关只是一个动作,你在某一个中断中 设置 开/关 即可,不需要再while里面反复去操作这个开关。你要知道,STC15系列 即便你 频率定为 35MHz, 1us 可以有35个机器时钟,处理一个if 判断 一个双字节16位数字 需要20个时钟 已经超过 0.5us了,所以,按你的需要你必须把不必要的步骤精简再精简。
|