📄 ex4.lst
字号:
C51 COMPILER V9.00 EX4 04/12/2010 11:29:30 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE EX4
OBJECT MODULE PLACED IN ex4.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ex4.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #define BLKN 8
3 #define uchar unsigned char
4 #define uint unsigned int
5 uchar i,j,k;
6 //uint i;
-
-
7 sbit G =P1^7;
8 sbit RCK=P1^6;
9 sbit SCLR=P1^5;
10 void delay(uint x)
11 {
12 1 uint a,b;
13 1 for(a=x;a>0;a--)
14 1 for(b=110;b>0;b--);
15 1 }
16 uchar code bmp[][128]=
17 {
18 {
19 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,
20 0xE4,0x00,0xFF,0xFF,0xE0,0x73,0xE7,0xCF,0xF3,0xF9,0xFF,0xF3,0xC3,0x13,0xE7,0xC9,
21 0xF3,0xF9,0xC0,0x01,0xF0,0x83,0xE1,0x00,0x80,0x09,0xFE,0x7F,0x80,0x73,0x00,0xC3,
22 0xC4,0xC9,0xFE,0x7F,0xE3,0x33,0xE0,0x01,0xE4,0xC9,0xFE,0x7F,0xE0,0x93,0xE6,0x73,
23 0xE4,0xC9,0xFE,0x7F,0xC0,0x90,0x87,0x23,0x0C,0x09,0xFE,0x7F,0xC3,0x81,0x87,0x27,
24 0xCC,0xC9,0xFE,0x7F,0x92,0x33,0xE7,0x8F,0xCC,0xF9,0xFE,0x71,0xF3,0xF3,0xE7,0x87,
25 0xCF,0xC1,0x80,0x00,0xF3,0xF3,0x86,0x20,0xCF,0xF1,0xFF,0xFF,0xF3,0xF3,0xC0,0xF9,
26 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
27 }, // 0
28
29 {
30 0xF9,0xCF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF1,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
31 0xF1,0x8F,0xFF,0x9F,0xFF,0xFF,0xF3,0x3F,0xF3,0x9F,0xFF,0x8F,0xC7,0x1F,0xF1,0x1F,
32 0xE3,0x1F,0xFF,0x99,0xE0,0x40,0xF3,0x39,0xE3,0x1F,0x80,0x00,0xE4,0xCC,0xE6,0x00,
33 0xE7,0x3F,0xF8,0x39,0xE4,0xCC,0xE6,0x49,0xC0,0x3F,0xC8,0x03,0x80,0xCC,0xC4,0xC3,
34 0xC0,0x33,0xE0,0x8F,0xE4,0xCC,0x80,0x4F,0xCE,0x39,0xE1,0x0F,0xE4,0x0C,0x86,0x43,
35 0x8E,0x38,0xF1,0x07,0xE0,0xC0,0xE4,0x49,0x9E,0x38,0xE1,0x27,0xE7,0xCF,0xE4,0xC8,
36 0x1C,0x38,0xC8,0x63,0xE7,0xCF,0xE1,0xC8,0x18,0x00,0x9C,0xF0,0x80,0x20,0xE2,0x0F,
37 0x18,0x00,0xF1,0xF9,0xFE,0x01,0xE7,0x8F,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
38
39 } // 1
40 };
41 uchar idata dispram[128]; //显示缓存
42 void main()
43 {
44 1
45 1
46 1 SCON=0x00; //串口工作模式0;移位寄存器方式
47 1 TMOD=0x01; //定时器T0工作方式1:16位方式
48 1 TR0=1; //启动定时器t0
49 1 P1=0x3f; //P1端口初值:允许接收、锁定、显示
50 1 IE=0x82;
51 1
52 1 while(1)
53 1 {
C51 COMPILER V9.00 EX4 04/12/2010 11:29:30 PAGE 2
54 2 for(i=0;i<2;i++)
55 2 {
56 3 for(j=0;j<16;j++)
57 3 {
58 4 for(k=0;k<15;k++)
59 4 {
60 5 dispram[k*BLKN]=dispram[(k+1)*BLKN];
61 5 dispram[k*BLKN+1]=dispram[(k+1)*BLKN+1];
62 5 dispram[k*BLKN+2]=dispram[(k+1)*BLKN+2];
63 5 dispram[k*BLKN+3]=dispram[(k+1)*BLKN+3];
64 5 dispram[k*BLKN+4]=dispram[(k+1)*BLKN+4];
65 5 dispram[k*BLKN+5]=dispram[(k+1)*BLKN+5];
66 5 dispram[k*BLKN+6]=dispram[(k+1)*BLKN+6];
67 5 dispram[k*BLKN+7]=dispram[(k+1)*BLKN+7];
68 5
69 5 }
70 4 dispram[120]=bmp[i][j*BLKN];
71 4 dispram[121]=bmp[i][j*BLKN+1];
72 4 dispram[122]=bmp[i][j*BLKN+2];
73 4 dispram[123]=bmp[i][j*BLKN+3];
74 4 dispram[124]=bmp[i][j*BLKN+4];
75 4 dispram[125]=bmp[i][j*BLKN+5];
76 4 dispram[126]=bmp[i][j*BLKN+6];
77 4 dispram[127]=bmp[i][j*BLKN+7];
78 4 delay(50);
79 4 }
80 3 delay(1000);
81 3 }
82 2 }
83 1
84 1 }
85 void leddisplay(void) interrupt 1 using 1
86 {
87 1 uchar i,j=BLKN; //设定显示屏刷新率62.5帧/s
88 1 TH0=0xfd;
89 1 TL0=0xf0;
90 1 i=P1; //读取当前显示的行列
91 1 i=++i&0x0f; /*行数自动加一,屏蔽高4位 ,注意P1.0,P1.1,P1.2,P1,3控制行的显示,
92 1 通过4线16线译码器,对16行进行控制*/
93 1 do
94 1 {
95 2 j--;
96 2 SBUF=dispram[i*BLKN+j]; //送显示数据,SBUF串行数据缓冲寄存器
97 2 while(!TI); /*串行发送停止位的开始时,由内部硬件使T11,向CPU发出中断请求
98 2 ,在中断服务程序中,必须用软件使其清0*/
99 2 TI=0;
100 2 }
101 1 while(j); //完成一行数据的发送
102 1 G=1; //消隐(关闭显示)
103 1 P1&=0xf0; //行号端口清0
104 1 RCK=1; //显示数据打入输出锁存器
105 1 P1|=i; //写入行号
106 1 RCK=0; //锁存显示数据
107 1 G=0; //打开显示
108 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 566 ----
CONSTANT SIZE = 256 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V9.00 EX4 04/12/2010 11:29:30 PAGE 3
DATA SIZE = 3 ----
IDATA SIZE = 128 ----
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 + -