当单片机烧录成功后,要是复位或者冷启动,我写的程序就会运行一次,PC机就会“I get ”(程序的运行结果是从PC机发送字符或者字符串,单片机会给PC一个反馈‘I get xx’)。自己以为问题出现在了初始化,但至今未想明白,求高手解答!#include<reg52.h>
#define uchar unsigned char ;
char code table[]={' ','i',' ','g','e','t',' '};
char jie , getchar,num;
void delay(int n);
void init()
{
TMOD = 0x20 ; //定时计数器1工作方式2
EA = 1 ; //中断允许
ES = 1 ; //开启串行中断
TH1 = 0xfd; //定时计数器的初始值
TL1 = 0xfd ;
TR1 = 1 ; //开启定时计数器1
REN = 1 ; //接收允许
SM0 = 0;
SM1 = 1 ; //串口工作方式1
}
void main()
{
init();
delay(256);
while(1)
{
if( jie == 1 )
{
ES = 0 ; //关闭串行中断
for( num=0; num<=6; num++ )
{
SBUF = table[num];
while(!TI);
TI = 0 ;
}
SBUF = getchar; //将得到的字符发送
while( !TI ) ;
TI = 0 ;
ES = 1 ;
jie = 0 ;
}
}
}
void delay(int n)
{ int i ,j ;
for(i = n ; i>=0 ; i--)
for(j=256;j>=0 ;j--);
}
void RR( ) interrupt 4
{
RI = 0 ;
getchar = SBUF;
jie = 1 ;
}
此帖出自
小平头技术问答
一周热门 更多>