用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);
}
|