|
把要傳送的數(shù)據(jù)給SBUF,但串口調(diào)試助手顯示的結(jié)果很奇怪:
這是我寫(xiě)的程序:
#include <reg52.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint z)//延時(shí)函數(shù)
{
uint x,y;
for(x=z;x>0;x--);
for(y=110;y>0;y--);
}
void init() //系統(tǒng)初始化
{
TMOD |=0X20;//定時(shí)器T1,方式2,波特率由PCON寄存器的SMOD決定
SCON=0x50; //REN RI TI,RI為0,TI為0
//串行口1方式1 SCON是串行口1的串行控制寄存器,REN為1,允許接收
PCON=0x00;//各工作方式波特率加倍
TH1=0xfD;//9600bps@11.0592
TL1=0xfD;
TR1=1; //定時(shí)器1中斷打開(kāi)
EA=1;//cpu總中斷允許位,1為開(kāi)放中斷
ES=1;// 1允許串行口中斷
}
void main()
{
init();
while(1)
{
SBUF=22; //比如把22這個(gè)數(shù)據(jù)傳給SBUF
while(TI==0);
{
} //數(shù)據(jù)發(fā)送結(jié)束時(shí)TI自動(dòng)置1
TI=0;
}
}
void UART_1() interrupt 4
{
//接收完緩沖數(shù)據(jù)后RI置1
if(RI)//如果RI為1,即如果收到
{
RI=0; //RI置0
}
}
請(qǐng)問(wèn)程序哪里不對(duì)呢?應(yīng)該如何修改呢?謝謝大家
|
|