想把串口通信随机发送的数据排序之后显示在接收区,在网上看了很多冒泡排序,自己用怎么也搞不好求帮助
单片机源程序如下:
- #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;
-
- }
- }
复制代码
|