📄 最终成品.lst
字号:
C51 COMPILER V7.08 最终成品 04/21/2008 05:03:12 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE 最终成品
OBJECT MODULE PLACED IN 最终成品.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 最终成品.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #define BLKN 2
3 sbit G=P1^7; //P1.7为显示允许控制信号端口
4 sbit RRCLK=P1^6; //P1.6为输出锁存器时钟信号端
5 sbit SCLR=P1^5; //P1.5为移位寄存器清零端
6 void delay(unsigned int); //延时函数
7 unsigned char data dispram[32]; //显示缓存1
8 unsigned char data huancun[32]; //显示缓存2
9 void main(void)
10 { unsigned char code Cmp[][32]={
11 1
12 1 {0xff,0x07,0xc0,0x6f,0xed,0xef,0xf6,0xdf,
13 1 0xc0,0x01,0xdd,0xfd,0xbd,0xff,0xc0,0x03,
14 1 0xfb,0xff,0xf8,0x0f,0xf3,0xdf,0xf4,0xbf,
15 1 0xef,0x3f,0x9c,0xcf,0x73,0xf1,0xcf,0xfb},//爱
16 1 {0xf7,0xdf,0xf9,0xcf,0xfb,0xbf,0xc0,0x07,
17 1 0xde,0xf7,0xc0,0x07,0xde,0xf7,0xde,0xf7,
18 1 0xc0,0x07,0xde,0xf7,0xfe,0xff,0x00,0x01,
19 1 0xfe,0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff},//单
20 1 {0xff,0xbf,0xef,0xbf,0xef,0xbf,0xef,0xbb,
21 1 0xe0,0x01,0xef,0xff,0xef,0xff,0xef,0xff,
22 1 0xe0,0x0f,0xef,0xef,0xef,0xef,0xef,0xef,
23 1 0xdf,0xef,0xdf,0xef,0xbf,0xef,0x7f,0xef},//片
24 1 {0xef,0xff,0xef,0x07,0xef,0x77,0x01,0x77,
25 1 0xef,0x77,0xef,0x77,0xc7,0x77,0xcb,0x77,
26 1 0xab,0x77,0xaf,0x77,0x6e,0xf7,0xee,0xf5,
27 1 0xed,0xf5,0xed,0xf5,0xeb,0xf9,0xef,0xff},//机
28 1 {0xf8,0x3f,0xe7,0xcf,0xdf,0xf7,0xbf,0xfb,
29 1 0xb3,0x9b,0x73,0x9d,0x7f,0xfd,0x7f,0xfd,
30 1 0x6f,0xed,0x67,0xcd,0xb3,0x9b,0xb8,0x3b,
31 1 0xdf,0xf7,0xe7,0xcf,0xf8,0x3f,0xff,0xff},//笑脸
32 1 {0xf9,0xbf,0xc7,0xaf,0xf7,0xb7,0xf7,0xb7,
33 1 0xf7,0xbf,0x00,0x01,0xf7,0xbf,0xf7,0xb7,
34 1 0xf1,0xd7,0xc7,0xcf,0x37,0xdf,0xf7,0xaf,
35 1 0xf6,0x6d,0xf7,0xf5,0xd7,0xf9,0xef,0xfd}};//我
36 1
37 1
38 1 unsigned char code Bmp[][32]={
39 1 {0xf9,0xbf,0xc7,0xaf,0xf7,0xb7,0xf7,0xb7,
40 1 0xf7,0xbf,0x00,0x01,0xf7,0xbf,0xf7,0xb7,
41 1 0xf1,0xd7,0xc7,0xcf,0x37,0xdf,0xf7,0xaf,
42 1 0xf6,0x6d,0xf7,0xf5,0xd7,0xf9,0xef,0xfd},//我
43 1 {0xff,0x07,0xc0,0x6f,0xed,0xef,0xf6,0xdf,
44 1 0xc0,0x01,0xdd,0xfd,0xbd,0xff,0xc0,0x03,
45 1 0xfb,0xff,0xf8,0x0f,0xf3,0xdf,0xf4,0xbf,
46 1 0xef,0x3f,0x9c,0xcf,0x73,0xf1,0xcf,0xfb},//爱
47 1 {0xf7,0xdf,0xf9,0xcf,0xfb,0xbf,0xc0,0x07,
48 1 0xde,0xf7,0xc0,0x07,0xde,0xf7,0xde,0xf7,
49 1 0xc0,0x07,0xde,0xf7,0xfe,0xff,0x00,0x01,
50 1 0xfe,0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff},//单
51 1 {0xff,0xbf,0xef,0xbf,0xef,0xbf,0xef,0xbb,
52 1 0xe0,0x01,0xef,0xff,0xef,0xff,0xef,0xff,
53 1 0xe0,0x0f,0xef,0xef,0xef,0xef,0xef,0xef,
54 1 0xdf,0xef,0xdf,0xef,0xbf,0xef,0x7f,0xef},//片
55 1 {0xef,0xff,0xef,0x07,0xef,0x77,0x01,0x77,
C51 COMPILER V7.08 最终成品 04/21/2008 05:03:12 PAGE 2
56 1 0xef,0x77,0xef,0x77,0xc7,0x77,0xcb,0x77,
57 1 0xab,0x77,0xaf,0x77,0x6e,0xf7,0xee,0xf5,
58 1 0xed,0xf5,0xed,0xf5,0xeb,0xf9,0xef,0xff},//机
59 1 {0xf8,0x3f,0xe7,0xcf,0xdf,0xf7,0xbf,0xfb,
60 1 0xb3,0x9b,0x73,0x9d,0x7f,0xfd,0x7f,0xfd,
61 1 0x6f,0xed,0x67,0xcd,0xb3,0x9b,0xb8,0x3b,
62 1 0xdf,0xf7,0xe7,0xcf,0xf8,0x3f,0xff,0xff} //笑脸
63 1 };
64 1
65 1 register unsigned char i,j,k,m,l;
66 1 SCON=0x00; //串口工作模式0,移位寄存器方式
67 1 TMOD=0x01; //定时器T0工作方式1;16位方式
68 1 TR0=1; //启动定时器T0
69 1 P1=0x3f; //P1端口初值,允许接收,缓存,显示
70 1 IE=0x82; //允许定时器T0中断
71 1
72 1 while(1)
73 1 {
74 2 delay(1000); //显示效果:刷屏
75 2
76 2 for(i=0;i<32;i++) //显示效果:卷帘出
77 2 {
78 3 dispram[i]=Bmp[5][i];
79 3 huancun[i]=Cmp[4][i];
80 3 if(i%2)delay(70);
81 3 }
82 2 delay(100); //控制显示的停留时间
83 2
84 2
85 2
86 2 for(i=0;i<6;i++) //显示效果:上滚屏
87 2 {
88 3 for(j=0;j<16;j++)
89 3 {
90 4 for(k=0;k<15;k++)
91 4 {
92 5 huancun[k*BLKN]=huancun[(k+1)*BLKN];
93 5 huancun[k*BLKN+1]=huancun[(k+1)*BLKN+1];
94 5 dispram[k*BLKN]=dispram[(k+1)*BLKN];
95 5 dispram[k*BLKN+1]=dispram[(k+1)*BLKN+1];
96 5 }
97 4 huancun[30]=Bmp[i][j*BLKN];
98 4 huancun[31]=Bmp[i][j*BLKN+1];
99 4 dispram[30]=Bmp[i][j*BLKN];
100 4 dispram[31]=Bmp[i][j*BLKN+1];
101 4 delay(70);
102 4 }
103 3 }
104 2 delay(1000); //控制显示的停留时间
105 2
106 2
107 2
108 2 for(i=0;i<32;i++) //显示效果:半屏卷帘
109 2 {
110 3 dispram[i]=Bmp[5][i];
111 3 huancun[i]=Cmp[5][i];
112 3 if(i%2)delay(70);
113 3 }
114 2
115 2
116 2 for(i=0;i<6;i++) //显示效果,左移动显示
117 2 {
C51 COMPILER V7.08 最终成品 04/21/2008 05:03:12 PAGE 3
118 3 for(j=0;j<2;j++)
119 3 for(k=1;k<9;k++)
120 3 {
121 4 for(l=0;l<16;l++)
122 4 { huancun[l*BLKN]=huancun[l*BLKN]<<1|huancun[l*BLKN+1]>>7;
123 5 huancun[l*BLKN+1]=huancun[l*BLKN+1]<<1|Cmp[i][l*BLKN+j]>>(8-k);
124 5
125 5 dispram[l*BLKN]=dispram[l*BLKN]<<1|dispram[l*BLKN+1]>>7;
126 5 dispram[l*BLKN+1]=dispram[l*BLKN+1]<<1|Bmp[i][l*BLKN+j]>>(8-k);
127 5 }
128 4 delay(70);
129 4 }
130 3 }
131 2 delay(1000); //控制显示的停留时间
132 2
133 2
134 2
135 2 for(i=0;i<32;i++) //显示效果:半屏卷帘
136 2 {
137 3 dispram[i]=Bmp[5][i];
138 3 huancun[i]=Cmp[4][i];
139 3 if(i%2)delay(70);
140 3 }
141 2
142 2
143 2
144 2 for(i=1;i<7;i++) //显示效果:向下滚屏
145 2 {
146 3
147 3 for(j=16;j>0;j--)
148 3 {
149 4 for(k=15;k>0;k--)
150 4 { huancun[k*BLKN]=huancun[(k-1)*BLKN];
151 5 huancun[k*BLKN+1]=huancun[(k-1)*BLKN+1];
152 5 dispram[k*BLKN]=dispram[(k-1)*BLKN];
153 5 dispram[k*BLKN+1]=dispram[(k-1)*BLKN+1];
154 5 }
155 4 huancun[0]=Bmp[i-1][(j-1)*BLKN];
156 4 huancun[1]=Bmp[i-1][(j-1)*BLKN+1];
157 4 dispram[0]=Bmp[i-1][(j-1)*BLKN];
158 4 dispram[1]=Bmp[i-1][(j-1)*BLKN+1];
159 4
160 4 delay(70);
161 4 }
162 3 }
163 2 delay(1000); //控制显示的停留时间
164 2
165 2
166 2 for(i=0;i<6;i++) //显示效果,向右移动显示
167 2 {
168 3 for(j=2;j>0;j--)
169 3 for(k=1;k<9;k++)
170 3 {
171 4 for(l=0;l<16;l++)
172 4 {
173 5 for(m=0;m<32;m++)
174 5 {
175 6 dispram[m]=Bmp[5][m];
176 6 }
177 5
178 5 huancun[l*BLKN+1]=huancun[l*BLKN+1]>>1|huancun[l*BLKN]<<7;
179 5 huancun[l*BLKN]=huancun[l*BLKN]>>1|Bmp[i][l*BLKN+j-1]<<(8-k);
C51 COMPILER V7.08 最终成品 04/21/2008 05:03:12 PAGE 4
180 5
181 5 }
182 4 delay(70);
183 4 }
184 3 }
185 2 delay(1000); //控制显示的停留时间
186 2
187 2
188 2
189 2 for(i=0;i<32;i++) //显示效果:卷帘入
190 2 {
191 3 huancun[i]=0x00;
192 3 dispram[i]=0x00;
193 3 if(i%2)delay(70);
194 3
195 3 }
196 2 }
197 1 }
198 //延时函数
199 void delay(unsigned int dt)
200 {
201 1 register unsigned char bt;
202 1 for(;dt;dt--)
203 1 for(bt=0;bt<255;bt++);
204 1 }
205
206 //显示屏扫描(定时器T0中断)函数
207 void leddisplay(void)interrupt 1 using 1
208 {
209 1 register unsigned char i,j=BLKN;
210 1 TH0=0Xf8; //设定显示屏刷新率每秒62.5
211 1 TL0=0X30;
212 1 i=P1; //读取当前显示的行号
213 1 i=++i&0x0f; //行号加一,屏蔽高四位
214 1 do {
215 2
216 2 j--;
217 2 SBUF=huancun[i*BLKN+j]; //送显示数据
218 2 while(!TI);TI=0;
219 2 }while(j); //完成一行数据的发送
220 1
221 1 j=2;
222 1 do {
223 2
224 2 j--;
225 2 SBUF=dispram[i*BLKN+j]; //送显示数据
226 2 while(!TI);TI=0;
227 2 }while(j); //完成一行数据的发送
228 1
229 1
230 1
231 1 G=1; //消隐(关闭显示)
232 1 P1&=0xf0; //行号端口清零
233 1 RRCLK=1; //显示数据打入输出锁存器
234 1 P1|=i; //写入行号
235 1
236 1 RRCLK=0; //锁存显示数据
237 1 G=0;
238 1 //打开显示
239 1 }
C51 COMPILER V7.08 最终成品 04/21/2008 05:03:12 PAGE 5
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1144 ----
CONSTANT SIZE = 384 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 64 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -