/*******************************************************************************
* 标题: 串口通信 *
* 作者:麒麟刀
* 功能:发送两个数,发完结束。
********************************************************************************/
#include<reg52.h>
unsigned int i=1000,j,a,n;
void main()
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xf4; //设置波特率为2400
TL1=0xf4;
TR1=1;//启动定时器1
SM0=0;//串口工作方式为方式1
SM1=1;
while(1)
{
while(i--); //延时
SBUF=0x55;
while(!TI);
TI=0; //清除发送中断标志
for(j=1000;j>0;j--); //延时
SBUF=0x56;
while(!TI);
TI=0; //清除发送中断标志
for(j=1000;j>0;j--); //延时
break; //跳出循环语句,但是没起到作用,为什么???????
}
}
出现的问题:我本意是让它发两个数,发完结束,就在最后用了一个break语句,但是实际上它是不停的在发我设定的两个数0x55和0x56,为什么用了break语句程序还没跳出循环呢?
[
本帖最后由 麒麟刀 于 2011-5-20 23:52 编辑 ]
此帖出自
小平头技术问答
“单片机的程序结构是需要一个死循环的”,我想我就是这点没搞清楚,谢谢指出!但是我还是没明白这点,能不能说得详细点,我的理解是用了break后,程序就跳到while(1){}的后面了,而while(1){}后面没有语句了,我就认为它应该是结束程序了,不应该再循环了
一周热门 更多>