ayb_ice 发表于 2013-10-23 09:40 
中断是硬件行为,不要去人为调用,可以设定中断标志触发中断
谢谢你的回复,我也是这么想的。我的用途是单片机A从串口接收到字符'a'时发送一段方波,单片机B测量其中一段高定平的宽度在a~b范围内时led闪烁。串口与发送方波都需要用到定时器。
void InitUart() //串口初始化
{
SCON = 0x5a; //8 bit data ,no parity bit
TMOD = 0x20; //T0 as 8-bit auto reload
TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate
TR1 = 1;
}
void initTX() //方波发送程序初始化
{
//TX=1;
TMOD=0x01; //定时器T0工作于方式1,16位计数器
TH0=0x00;
TL0=0x00;
ET0=1; //定时器0中断允许
EA=1;
}
这样初始化会互相影响吗?反正B的led不闪。后来我用delay函数替换定时器,在proteus中产生了近似的波形,并且仿真中B的led闪,但是实物中B的led仍旧不闪。delay函数是纯粹的子函数,那为什么B的led不闪呢?是不是因为delay和中间的指令导致总延时变化而改变了波形,于是与范围a~b不匹配呢?
|