用STC-ISP的串口助手发送数据给单片机,单片机接收数据后发给电脑显示,这个过程是怎么样的呢
以下是代码:
#include<stc15.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp,temp1;
void Delay50ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 3;
j = 26;
k = 223;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void delay(uint k)
{
uint i;
for(i=0;i<=k;i++)
Delay50ms();
}
void UartInit(void) //9600bps@11.0592MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xE0; //设定定时初值
TH1 = 0xFE; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
void Serial_ISR(void)interrupt 4
{
RI=0; //清串行接收标志
temp=SBUF; //接收数据
SBUF=temp; //发送接收到的数据
while(TI==0); //等待发送结束
TI=0; //清零TI
}
void main(void)
{
P0M1=0x00;P0M0=0x00;P1M1=0x00;P1M0=0x00;P2M1=0x00;P2M0=0x00;
P3M1=0x00;P3M0=0x00;P4M1=0x00;P4M0=0x00;P5M1=0x00;P5M0=0x00;
UartInit();
ES=1;
EA=1;
while(1);
}
|