51 单片机 定时器1 是做串口通信用的, 定时器0是输出脉冲, 为什么我的程序 进入中断0 之后只运行一遍?

全部程序如下voidUart_Printf(){SBUF=0;printf("串口初始化完毕\n");}voidinit_rs232(){ES=0;TR1=0;TMOD=... 全部程序如下

void Uart_Printf()
{
SBUF=0;
printf("串口初始化完毕\n");
}
void init_rs232()
{
ES=0;
TR1=0;

TMOD=0x21;
PCON=0x80;//SMOD=1
SCON=0x50;//工作方式1,波特率9600,允许接收
TH1=0xfA; //设置波特率 9600
TL1=0xfA;
TR1=1; // 定时器1启动
TI=0; //发送中断标志位清零
RI=0; //接收中断标志位清零

PS=1;
IE|=0x90; // 开串行中断 及 总中断

Uart_Printf();
}

void main()
{
P0=1;
init_rs232();

Command= &CommandBuff[0];
while (1)
{
if (CommandCome==1) //下面是命令解析
{
CommandCome=0;

else if (strncmp(Command,"RS",2)==0) // 设置 slew 速度 "#:RS#"
{
slewspeed = 6000;
printf("maxslow",slewspeed);
ET0=1;//计时器0允许
TR0=1;//启动计时器0
TH0= (65535-slewspeed)/256;
TL0=(65535-slewspeed)%256;
}

}
}

}

void UartInt(void) interrupt 4 using 3
{
if (RI==1)
{
ES=0;
sdata=SBUF;
RI=0;
if ((sdata==':')&&(CommandCome==0)&&(InRec==0)) //收到冒号 并且 命令缓冲区为空
{
InRec=1; //命令接收中
}
else if ((InRec>0)&&(sdata!='#')) // 如果命了接收中 并且没有收到 #
{
CommandBuff[InRec-1]=sdata;
//if (isprint(sdata)==1 )
InRec=InRec+1;
}
else if ((sdata=='#')&&(InRec>0)) //收到命了结束表示
{
CommandBuff[InRec-1]=0;
InRec=0; //接收空闲中
CommandCome=1; //收到命了
}

else if (InRec>4) //命了长度超过4 还没有收到命了结束符号
{
InRec=0 ; //接收为空
CommandCome=0; //忽略命令
}
ES=1;
}
}

void Timer0(void) interrupt 1 using 1
{

TH0=(65536- 6000)/256;
TL0=(65536- 6000)%256;
P0=!P0;
}
展开
 我来答
做而论道
高能答主

推荐于2017-07-16 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
你既然使用 printf("串口初始化完毕\n"); 这样的语句,就是说串口,被系统占用了。

你还想用串口输入,就应该用 SCAN 函数。
更多追问追答
追问
您好! 不是串口通信现在有问题, 而是 我能够顺利进入 定时器0 的中断,但是中断内的代码只执行一次  

是不是 中断 优先级设置 有问题?
追答
看你的程序结构,中间,好像有些不足:

void main()
{
P0=1;
init_rs232();
Command= &CommandBuff[0];
while (1) {
if (CommandCome==1) //下面是命令解析
{
CommandCome=0;

//这里缺少一些

else if (strncmp(Command,"RS",2)==0) // 设置 slew 速度 "#:RS#"
{
slewspeed = 6000;
printf("maxslow",slewspeed);
ET0=1;//计时器0允许
TR0=1;//启动计时器0
TH0=(65535-slewspeed)/256;
TL0=(65535-slewspeed)%256;
}
}
}
}

这样的程序,难说毛病出在什么地方。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式