根据你的思路,这样可以做到让你的灯每50ms切换一次。
void qufj(void)
{
u8 count12;
bit ser;
if(TF0==1)
{
count12++;
//TF0=0;
if(count12>=7)
{
ser=!ser;
led=ser;
count12=0;
}
}
}
void Timer0_Isr(void) interrupt 1
{
TF0=1;
TF0=0;
}
VCC 发表于 2024-11-29 17:41
根据你的思路,这样可以做到让你的灯每50ms切换一次。
<p>想到个我个人认为更好的办法了</p>
<p>直接在中断里面加一个nop就可以了.定时器自动TF0置1,然后自动清零</p>
<p>void qufj(void)<br />
{<br />
u8 count12;<br />
bit ser;<br />
if(TF0==1)<br />
{<br />
count12++;</p>
<p>if(count12>=7)<br />
{<br />
ser=!ser;<br />
led=ser;<br />
count12=0;<br />
}<br />
}<br />
}</p>
<p>void Timer0_Isr(void) interrupt 1<br />
{</p>
<p><em><em>nop</em>();</em><br />
}</p>
vb2002 发表于 2024-12-14 21:26
想到个我个人认为更好的办法了
直接在中断里面加一个nop就可以了.定时器自动TF0置1,然后自动清零
void...
那为什么不直接加一个return VCC 发表于 2024-12-14 21:38
那为什么不直接加一个return
怎么说?
还有更好的办法?
在哪里加return VCC 发表于 2024-12-14 21:38
那为什么不直接加一个return
我试了.加nop时间不准
vb2002 发表于 2024-12-14 22:09
怎么说?
还有更好的办法?
在哪里加return
这个NOP替换成return{:4_183:}
感觉应该是等效的
VCC 发表于 2024-12-14 22:21
这个NOP替换成return
感觉应该是等效的
不准时.还是这样比较准时, 有啥副作用吗? 和flag标志位相比
void qufj(void)
{
u8 count;
bit ser;
if(TF0)
{
count++;
TF0=0;
}
if(count>=20)
{
UartSend(count);
ser=!ser;
led=ser;
count=0;
}
}
void Timer0_Isr(void) interrupt 1
{
// _nop_();
TF0=1;
}
页:
1
[2]