当前位置 - 股票行情交易網 - 財經新聞 - 我用c8051f020通過uart通信,但是我的程序在單片機裏面的這個程序的if語句不進行 判斷幫我看看問題出現在

我用c8051f020通過uart通信,但是我的程序在單片機裏面的這個程序的if語句不進行 判斷幫我看看問題出現在

//摘要: 掌握 UART0配置及使用,程序中將UART0 配置到P0.0、 P0.1。利用串口調試助手,波特率設置為4800,並選擇十六進制發送和顯示,十六進制發送為偶數個,不然會少返回壹個數,詳見程序註釋。

#include "c8051f020.h"

unsigned char data1;

void SYSCLK_Init();

void PORT_Init();

void UART0_Init();

void SYSCLK_Init()

{

unsigned int i;

OSCXCN=0X67; //0X67=0110,0111

for(i=0;i<256;i++); //等待>1ms

while(!(OSCXCN&0X80)); //等待XTLVLD變為1

OSCICN=0X88; //時鐘失效監測器,選擇外部時鐘源作為系統時鐘

}

void PORT_Init()

{

XBR0 = 0x27;/*交叉開關配置,URAT總線TX0置到P0.0口,RX0置到P0.1口, SPI總線SCK配置到P0.2口,

MOSI為P0.4口, NSS為P0.5,MISO配置到P0.3口,IIC總線SDA置到P0.6口?SCK置到P0.7 TX1,RX1配置到P1.0,P1.1, CEX0,CEX1,配置到P1.2,P1.3,外部中斷int0配置到P1.4 */

XBR1 = 0x04;

XBR2 = 0x44; /*允許功能選擇開關有效*/

P0MDOUT = 0x1A;/*SCK、MOSI和NSS為推拉式輸出,MISO為開漏式.*/

P74OUT =0xff;

}

void UART0_Init()

{

SCON0=0x50; //串口方式1

TMOD=0X20; //選用定時器1作為波特率發生器

TH1=0xF4; //波特率為4800

TL1=0xF4;

ES0=1; //開啟串口中斷0

TF1=0;

TR1=1; //定時器啟動

PCON=0X80; //波特率加倍 波特率為9600

TI0=1;

}

void UART0_ISR() interrupt 4 using 1

{

if(RI0)

{

RI0=0;//中斷接收標誌清零

data1=SBUF0;//接收數據

SBUF0=data1;//發送數據

while(TI0==0);

TI0=0;//發送標誌清零

}

}

main()

{

WDTCN=0XDE;

WDTCN=0XAD;

SYSCLK_Init();

PORT_Init();

UART0_Init();

EA=1;

while(1);

}