📄 paixu.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 + -