中易网

单片机定时器0设置为工作方式1为TMOD=0x01;定时器1设置工作方式1时TMOD=0x10;还是和定时器0一样为0x01

答案:2  悬赏:10  
解决时间 2021-01-13 14:11
  • 提问者网友:听门外雪花风
  • 2021-01-13 00:52
单片机定时器0设置为工作方式1为TMOD=0x01;定时器1设置工作方式1时TMOD=0x10;还是和定时器0一样为0x01
最佳答案
  • 二级知识专家网友:走死在岁月里
  • 2021-01-13 02:15
答:
单片机定时器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楼网友:山河有幸埋战骨
  • 2021-01-13 03:47
1.定时器0,1共用一个模式寄存器
低4位用于设置定时器0,高4位用于设置定时器1
所以要设置定时器1为工作方式1应该为:TMOD =0x10;
2.使用串口要先设定串行口工作方式
还有,你程序是要接收还是发送?看不懂
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息