我想把串口通信随机发送的数据排序之后显示在接收区,在网上看了很多冒泡排序,但自己是MCU新手,用怎么也搞不好求帮助。。。
我的51单片机源程序如下:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit WE = P2^7;
sbit DU = P2^6;
uchar num,num1;
uchar code table[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};
void xianshi(uchar num1)
{ WE = 1;
P0 = 0xfe;
WE = 0;
P0 = 0xff;
DU = 1;
P0 = table[num1];
DU = 0;
}
void UART_init()
{
TMOD = 0x20; //T1工作模式2 8位自动重装
TH1 = 0xfd;
TL1 = 0xfd; //比特率9600
TR1 = 1; //启动T1定时器
SM0 = 0;
SM1 = 1; //串口工作方式1 10位异步
REN = 1; //串口允许接收
EA = 1; //开总中断
ES = 1; //串口中断打开
}
void main()
{
UART_init(); //串口初始化
xianshi();
while(1);
}
void UART() interrupt 4
{
if(RI) //检测是否接收完成
{
num1 = SBUF;
if(num1 > num)
{ num = num1;
}
xianshi(num); //将数据的最大值显示在数码管上
RI = 0
SBUF = num1;
TI = 0;
}
}