📄 paixu.lst
字号:
C51 COMPILER V8.02 PAIXU 12/30/2006 15:00:09 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE PAIXU
OBJECT MODULE PLACED IN PAIXU.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PAIXU.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************
2 * *
3 * ME500单片机开发系统演示程序 - 数据升序排列 *
4 * *
5 * 8 位数码管显示 *
6 * *
7 * 版本: V1.0 (2006/11/20) *
8 * 作者: gguoqing (Email: gguoqing@willar.com) *
9 * 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界) *
10 * 时间: 2006/12/28 *
11 * *
12 *【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
13 *【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
14 * *
15 ********************************************************************
16 * *
17 * 描述: *
18 * 采用插入排序法。 *
19 * 将8个单字节无符号数升序排列,数码管从左至右显示 8-1。 *
20 * K1--- 查看最大值,K4--- 退出 *
21 * K2--- 查看最小值,K4--- 退出 *
22 * *
23 *******************************************************************/
24 #include <reg51.h>
25 #include <intrins.h>
26
27 #define uchar unsigned char
28 #define uint unsigned int
29
30 sbit K1 = P1^4;
31 sbit K2 = P1^5;
32 sbit K3 = P1^6;
33 sbit K4 = P1^7;
34
35 uchar code display[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
36 uchar testdata[] = {0x00,0x05,0x01,0x06,0x02,0x08,0x04,0x03,0x07};
37
38 uchar shift ;
39
40 /**********************************************************
41 延时子程序
42 **********************************************************/
43 void delayms(uint ms)
44
45 {
46 1 uchar t;
47 1 while(ms--)
48 1 {
49 2 for(t = 0; t < 120; t++);
50 2 }
51 1 }
52
53 /**********************************************************
54
55 显示函数
C51 COMPILER V8.02 PAIXU 12/30/2006 15:00:09 PAGE 2
56
57 **********************************************************/
58 void play(void)
59 {
60 1 uchar k;
61 1
62 1 P0=0xff;
63 1 P2=0xff;
64 1
65 1 shift=0x7f;
66 1
67 1 for(k=0; k<8; k++)
68 1 {
69 2 P0=display[testdata[k+1]];
70 2 P2=shift;
71 2 shift=_cror_(shift,1);
72 2 delayms(1);
73 2 }
74 1 P2=0xff ;
75 1 }
76
77 /**********************************************************
78
79 排序函数
80
81 **********************************************************/
82 void compositor()
83 {
84 1 uchar num=8,i,j;
85 1
86 1 for(i=2; i<=num; i++)
87 1 {
88 2 testdata[0]=testdata[i]; //testdata[0]作为机动单元
89 2 j=i-1;
90 2 while(testdata[0]<testdata[j])
91 2 {
92 3 testdata[j+1]=testdata[j];
93 3 j--;
94 3 }
95 2 testdata[j+1]=testdata[0];
96 2 }
97 1 }
98
99 /**********************************************************
100
101 主函数
102
103 **********************************************************/
104 main()
105 {
106 1 bit max,min;
107 1 uchar count=0xff;
108 1
109 1 while(count!=0) //显示数据原始排序
110 1 {
111 2 play();
112 2 count--;
113 2 }
114 1 compositor();
115 1
116 1 while(1)
117 1 {
C51 COMPILER V8.02 PAIXU 12/30/2006 15:00:09 PAGE 3
118 2 play(); //显示数据升序排序值
119 2
120 2 if(K1==0)
121 2 {
122 3 delayms(100);
123 3 max=1;
124 3 while(max)
125 3 {
126 4 P0=display[testdata[8]]; //显示数据最大值
127 4 P2=0X7F;
128 4 if(K4==0)
129 4 {
130 5 delayms(100);
131 5 max=0;
132 5 }
133 4 }
134 3
135 3 }
136 2
137 2 if(K2==0)
138 2 {
139 3 delayms(100);
140 3 min=1;
141 3 while(min)
142 3 {
143 4 P0=display[testdata[1]]; //显示数据最小值
144 4 P2=0X7F;
145 4 if(K4==0)
146 4 {
147 5 delayms(100);
148 5 min=0;
149 5 }
150 4 }
151 3 }
152 2 }
153 1 }
154
155 /*********************************************************/
156
157
158
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 206 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -