用STC89c52做串口实验、T0 T1的问题?
时间:10-02
整理:3721RD
点击:
做的串口程序:实现计算机向单片机发送数,单片机把收到的数送回计算机。
这是用T1做波特率发生器。好使的、但是T0就不可以了、为什呢啊?
#include<reg52.h>
unsigned char temp,flag;
void main()
{
SCON=0x50;
TMOD=0x02;
TH0=0xfd;
TL0=0xfd;
TR0=1;
EA=1;
ES=1;
while(1)
{
if(flag==1)
{
flag=0;
ES=0;
SBUF=temp;
while(!TI);
TI=0;
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
flag=1;
//P1=SBUF;
temp=SBUF;
}
这是用T0做波特率发生器。不好使?!
#include<reg52.h>
unsigned char temp,flag;
void main()
{
SCON=0x50;
TMOD=0x02;
TH0=0xfd;
TL0=0xfd;
TR0=1;
EA=1;
ES=1;
while(1)
{
if(flag==1)
{
flag=0;
ES=0;
SBUF=temp;
while(!TI);
TI=0;
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
flag=1;
//P1=SBUF;
temp=SBUF;
}
求高手解答、?不胜感激、、、
这是用T1做波特率发生器。好使的、但是T0就不可以了、为什呢啊?
#include<reg52.h>
unsigned char temp,flag;
void main()
{
SCON=0x50;
TMOD=0x02;
TH0=0xfd;
TL0=0xfd;
TR0=1;
EA=1;
ES=1;
while(1)
{
if(flag==1)
{
flag=0;
ES=0;
SBUF=temp;
while(!TI);
TI=0;
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
flag=1;
//P1=SBUF;
temp=SBUF;
}
这是用T0做波特率发生器。不好使?!
#include<reg52.h>
unsigned char temp,flag;
void main()
{
SCON=0x50;
TMOD=0x02;
TH0=0xfd;
TL0=0xfd;
TR0=1;
EA=1;
ES=1;
while(1)
{
if(flag==1)
{
flag=0;
ES=0;
SBUF=temp;
while(!TI);
TI=0;
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
flag=1;
//P1=SBUF;
temp=SBUF;
}
求高手解答、?不胜感激、、、
错了、复制重复了、T1的TMOD为0x20;T0的为0x02;
用 单片机小精灵 一下OK: 11.0592MHz,,9600
#include <reg51.h>
void InitUART(void)
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
void main(void)
{
InitUART();
}
void UARTInterrupt(void) interrupt 4
{
if(RI)
{
RI = 0;
//add your code here!
}
else
TI = 0;
}
void SendOneByte(unsigned char c)
{
SBUF = c;
while(!TI);
TI = 0;
}