答:
单片机定时器0设置为工作方式1为TMOD=0x01;定时器1设置工作方式1时TMOD=0x10.阁下看TMOD里的各个位啥意思就知道了。
#include
void main()
{
while(1)
{
SBUF=0xfe;
while(!TI);
if(RI==1)RI=0;
REN=1;
P0=SBUF;
}
}
这个程序不对。
错误有:
1.主程序没设定波特率、串口工作方式、定时器初值,也没说中断还是查询方式来工作,咋个通讯啊!
2.假设已经设定好了,接下来的也不行。
while(!TI);
后面要加TI=0;清楚发送中断标志。
3.REN要放在最外头,除非你发送时不允许接收,才在里头写。
4. if(RI==1)RI=0;
要写成:while(!RI);RI=0;
一直等到接收完毕才将RI清零。接收时要停在哪儿等着,呵呵。所以是while不能是if.
#include
void main()
{
TMOD=0x20;
SCON=0x50;//串口通讯方式1
TH1=0xfd;//波特率9600
TL1=0xfd;
TR1=1;
TI=0;//发送中断标志位清零
RI=0;//接收中断标志位清零
while(1)
{
SBUF=0xfe;
while(!TI);Ti=0;
while(!RI);Ri=0 ;
P0=SBUF;
}
}
1.定时器0,1共用一个模式寄存器
低4位用于设置定时器0,高4位用于设置定时器1
所以要设置定时器1为工作方式1应该为:TMOD =0x10;
2.使用串口要先设定串行口工作方式
还有,你程序是要接收还是发送?看不懂