⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paixu.c

📁 * 采用插入排序法。 * 将8个单字节无符号数升序排列
💻 C
字号:
/*******************************************************************
*                                                                  *
*   *
* 描述:                                                           *
*      采用插入排序法。                                            *
*      将8个单字节无符号数升序排列,数码管从左至右显示 8-1。       *
*      K1--- 查看最大值,K4--- 退出                                *
*      K2--- 查看最小值,K4--- 退出                                *
*                                                                  *
*******************************************************************/
#include <reg51.h>
#include <intrins.h>

#define uchar unsigned char
#define uint  unsigned int

sbit  K1 = P1^4;
sbit  K2 = P1^5;
sbit  K3 = P1^6;
sbit  K4 = P1^7;

uchar code display[]  = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uchar  testdata[] = {0x00,0x05,0x01,0x06,0x02,0x08,0x04,0x03,0x07};

uchar shift ;

/**********************************************************
 延时子程序
**********************************************************/
void delayms(uint ms) 

{
   uchar t;
   while(ms--)
   { 
     for(t = 0; t < 120; t++);
   }
}

/**********************************************************

  显示函数

**********************************************************/
void  play(void)
{
   uchar k;
 
   P0=0xff;
   P2=0xff;

   shift=0x7f;
   
   for(k=0; k<8; k++)
   {  
     P0=display[testdata[k+1]];
     P2=shift;
     shift=_cror_(shift,1);
     delayms(1);
   }
   P2=0xff ;
}

/**********************************************************

  排序函数

**********************************************************/
void  compositor()
{
   uchar  num=8,i,j;
   
   for(i=2; i<=num; i++)
   {
     testdata[0]=testdata[i];     //testdata[0]作为机动单元
     j=i-1;
     while(testdata[0]<testdata[j])
     {
        testdata[j+1]=testdata[j];
        j--;
     }
    testdata[j+1]=testdata[0];
   }
}

/**********************************************************

  主函数

**********************************************************/
main()
{
   bit  max,min;
   uchar  count=0xff;

   while(count!=0)                 //显示数据原始排序
   {
     play();
     count--;
   }
   compositor();

   while(1)
   {
     play();                       //显示数据升序排序值

	 if(K1==0)
	 {
	   delayms(100);
	   max=1;
	   while(max)
	   {
	     P0=display[testdata[8]];  //显示数据最大值
		 P2=0X7F;
         if(K4==0)
		 {
		   delayms(100);
	       max=0; 		  
		 }
	   }
	 
	 }

	 if(K2==0)
	 {
	   delayms(100);
	   min=1;
	   while(min)
	   {
	     P0=display[testdata[1]];  //显示数据最小值
		 P2=0X7F;
         if(K4==0)
		 {
		   delayms(100);
	       min=0; 		  
		 }
	   }	 
	 }
   }
}

/*********************************************************/



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -