|
網(wǎng)上抄來例程 16位有符號(hào)數(shù)據(jù) 快速排序 成功,而16位無符號(hào)和32位長整型數(shù)據(jù)排序不能通過。
請(qǐng)各位指教,哪里沒有弄好,應(yīng)該怎么辦? 謝謝
單片機(jī)源程序如下:
- #include "STC32G.h"
- #include "stdio.h"
- #include "intrins.h"
- typedef unsigned char u8;
- typedef unsigned int u16;
- typedef unsigned long int u32;
- #define SYSCLK 132710400UL/6 //13....M/6=22.1184M
- #define BRT (65536 - SYSCLK/4/19200) //
- bit busy;
- u8 i;
- int aaa[6]={8,2,3,1,7,0};
- int bbb[6];
- //int AQ[5] = {123,1,521,400,619};
- //int arry[12] = {123,1,501,8,2,400,3,1,7,0,400,319};
- int arry[12] = {123,1,31501,8,2,400,3,1,7,0,21400,319};
- //u8 arry[12] = {123,1,201,8,2,200,3,1,7,0,100,219};
- //u32 arry[12] = {123,1,95201,8,10000,200,3,1,7,0,100,109219};
- //u16 arry[12] = {123,1,25201,8,10000,200,3,1,7,0,100,9219};
- /*=======延時(shí)函數(shù) 大約1mS===========*/
- void delay_ms(u16 ms)
- { u16 i;
- do
- {i = SYSCLK / 6000;
- while(--i) ;
- }while(--ms);
- }
- /*****Uart1Init********************************/
- void Uart1Init(void) //19200bps@22.1184MHz
- { SCON = 0x50; //8位數(shù)據(jù),可變波特率
- AUXR |= 0x01; //串口1選擇定時(shí)器2為波特率發(fā)生器
- AUXR |= 0x04; //定時(shí)器時(shí)鐘1T模式
- T2L = 0xE0; //設(shè)置定時(shí)初始值
- T2H = 0xFE; //設(shè)置定時(shí)初始值
- AUXR |= 0x10; //定時(shí)器2開始計(jì)時(shí)
- ES=1;
- EA=1;
- }
- /*=======發(fā)字節(jié) =========== */
- void Uart1Send(u8 dat)
- { while (busy);
- busy = 1;
- SBUF = dat;
- }
- /******************/
- #pragma FUNCTIONS (reentrant) //F1幫助里: C251 generates reentrant CODE
- //void quiksort(u16 a[],u16 low,u16 high)//reentrant
- //void quiksort(u8 a[],int low,int high)//reentrant
- //void quiksort(u32 a[],u32 low,u32 high)//reentrant
- void quiksort(int a[],int low,int high)//reentrant
- { int i = low;
- int j = high;
- int temp = a[i];
- //u32 i = low;
- //u32 j = high;
- //u32 temp = a[i];
- //u16 i = low;
- //u16 j = high;
- //u16 temp = a[i];
- if( low < high)
- {while(i < j)
- {while((a[j] >= temp) && (i < j))
- {j--;
- }
- a[i] = a[j];
- while((a[i] <= temp) && (i < j))
- {i++; //Uart1Send(0x1A);
- }
- a[j]= a[i];
- }
- a[i] = temp;
- quiksort(a,low,i-1);
- quiksort(a,j+1,high);
- }
- }
- void main()
- { WTST = 0x00;
- P_SW2 = 0x80;
- EAXFR = 1; //擴(kuò)展寄存器(XFR)訪問使能
- CKCON = 0; //提高訪問XRAM速度
- P0M0 = 0x00; P1M0 = 0x00; P2M0 = 0x00; P3M0 = 0x00;
- P0M1 = 0x00; P1M1 = 0x00; P2M1 = 0x00; P3M1 = 0x00;
- P4M0 = 0x01; P5M0 = 0x00; P6M0 = 0x00; P7M0 = 0x00;
- P4M1 = 0x00; P5M1 = 0x00; P6M1 = 0x00; P7M1 = 0x00;
- Uart1Init();
- Uart1Send(0x1A);Uart1Send(0x2A);Uart1Send(0x3A);Uart1Send(0x4A);
- while (1)
- { delay_ms(550);
- Uart1Send(0xAA);Uart1Send(0xAA);
- for(i=0;i<12;i++)
- //{Uart1Send((u8)((int)(arry[i])>>8)); //
- // Uart1Send((u8)((int)(arry[i]) ));
- {Uart1Send((u8)((u16)(arry[i])>>8)); //
- Uart1Send((u8)((u16)(arry[i]) ));
- //{Uart1Send((u8)((u16)(arry[i])>>8)); //
- //{ Uart1Send((arry[i]) );
- // {Uart1Send((u8)((arry[i])>>16)); //
- // Uart1Send((u8)((arry[i])>>8 ));
- // Uart1Send((u8)((arry[i]) ));
- }
- Uart1Send(0xCC);Uart1Send(0xCC);//quiksort(arry,0,4);
- //----???----------------
- quiksort(arry,0,11);
- //----???----------------
- delay_ms(550);
- Uart1Send(0xBB);Uart1Send(0xBB);
- for(i=0;i<12;i++)
- //{Uart1Send((u8)((int)(arry[i])>>8)); //
- //Uart1Send((u8)((int)(arry[i]) ));
- {Uart1Send((u8)((u16)(arry[i])>>8)); //
- Uart1Send((u8)((u16)(arry[i]) ));
- //{Uart1Send((u8)(u32)(arry[i])>>16)); //
- // Uart1Send((u8)(u32)(arry[i])>>8 ));
- // Uart1Send((u8)(u32)(arry[i]) ));
- }
- }
- }
- /******************************************* */
- void Uart1Isr() interrupt 4
- { if (TI)
- { TI = 0;
- busy = 0;
- }
- if (RI)
- {RI = 0;
- }
- }
復(fù)制代碼
|
-
-
pai_xu0求教.rar
2024-9-17 11:31 上傳
點(diǎn)擊文件名下載附件
1.57 KB, 下載次數(shù): 0
|