C51单片机程序:设置串行口中断,波特率9600bps(晶振11.0592MHz),向电脑发送“12345678”。

如题所述

第1个回答  2012-03-24
#include "reg51.h"
#include "intrins.h"
typedef unsigned char BYTE;
typedef unsigned int WORD;
#define FOSC 11059200L
#define BAUD 9600
bit busy;
void SendData(BYTE dat);
void SendString(char *s);
void main()
{
BYTE i;
SCON = 0x50;
TMOD = 0x20;
TH1 = TL1 = -(FOSC/12/32/BAUD);
TR1 = 1;
ES = 1;
EA = 1;
SendString("12345678\r\n");
while(1);
}

void Uart_Isr() interrupt 4 using 1
{
if (RI)
{
RI = 0;
}
if (TI)
{
TI = 0;
busy = 0;
}
}

void SendData(BYTE dat)
{
while (busy);
ACC = dat;
busy = 1;
SBUF = ACC;
}

void SendString(char *s)
{
while (*s)
{
SendData(*s++);
}
}本回答被提问者采纳