下面程序用T1可以用,改成T0就用不了了,帮我看下哪里改错了,谢谢!!
#include
#include
sbit s=P3^2;
unsigned char tmp;
main()
{
SCON = 0x50; // 设定串行口工作方式 串口方式1 功能:8位数据UART,可变(T1溢出率/n?课件128
PCON &= 0xef; // 波特率不倍增 课件129
TMOD = 0x02; // 定时器0工作于8位自动重载模式, 用于产生波特率 方式2 自动再装入8位计数器 课件60页
TH0 = 0xe6; // 波特率1200
TL0 = 0xe6;
//IE=0x82;
TR0 =1; // 启动定时器0
EA =1; //开总中断
EX0 = 1; //允许外部中断0中断
IT0=0; //设置为电平触发方式
//TCON = 0x01;
// ES=1; //允许串口中断 课件73
while(1)
{
if(RI)
{
s=0;
}
}
}
void External_Interrupt_0() interrupt 0
{
RI = 0; //如果没有 RI=0; 将一直产生中断
tmp = SBUF; // 暂存接收到的数据
P0 = tmp; // 数据传送到P0口
SBUF =tmp;
while(!TI); // 等特数据传送 传送完成后TI=1,TI=0说明还没传送完还得继续等待
TI = 0; // 清除数据传送标志
s=1; //如果没有 s=1; 将一直产生中断
}