|
本帖最后由 mTouch 于 2012-8-18 12:22 编辑
C8051F340定义 UART0允许中断(ES0=1)接收, 且设置在定时器Timer2的中断中 发送数据时,
Timer2不能正常动作.
如果关掉UART0中断允许(ES0=0),Timer2能正常动作.
出现这样的情况,是什么原因造成的,有知道的吗?
难道UART0与Timer2之间相互有约束?
void UART0Senddata(unsigned char ch)
{
SBUF0 = ch;
while(SCON0&0x02==0); //wait for TI0=1;
SCON0 = SCON0&0xfd;//TI0=0;
}
main()
{
....
设置UART0,
设置Timer2;
....
ET2 = 1;
ES0 =1;
EA=1;
while(1)
{
}
}
void UART0_Interrupt(void) interrupt 4
{
if (SCON0&0x01)
{
SCON0&=0xFE; // 清接收中断标志RI0
.....
}
}
void Timer2_ISR(void) interrupt 5
{
TF2H = 0;
UART0Senddata('A');
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|