📄 ex5.lst
字号:
C51 COMPILER V9.00 EX5 04/12/2010 16:55:40 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE EX5
OBJECT MODULE PLACED IN ex5.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ex5.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,k,j,l;
-
-
6 sbit G =P1^7;
7 sbit RCK=P1^6;
8 sbit SCLR=P1^5;
9 void delay(uint x)
10 {
11 1 uint a,b;
12 1 for(a=x;a>0;a--)
13 1 for(b=110;b>0;b--);
14 1
15 1 }
16 uint code bmp[][128]=
17 {
18 {
19 0xDF,0xFF,0xEF,0xFF,0xFD,0xFF,0xDE,0xFF,0xEC,0x01,0xEF,0xFF,0xFD,0xFF,0xEE,0xFF,
20 0xEF,0xFF,0xE7,0xFF,0x80,0x03,0xEE,0x01,0x02,0x03,0xEF,0x81,0xFB,0xFF,0xFD,0xFF,
21 0xFA,0xFB,0x01,0xBD,0xF7,0x7F,0x68,0x07,0xF6,0xFB,0xDD,0xBD,0xF7,0x7F,0xAD,0x77,
22 0xEE,0x03,0xDD,0xBD,0xEF,0x7F,0xAD,0xB7,0xCF,0xFF,0xDD,0xBD,0xE0,0x07,0xED,0xF7,
23 0xA4,0x01,0xDD,0xBD,0xFF,0x7F,0xD0,0x01,0x69,0xDD,0xDB,0xBD,0xF7,0x5F,0xDD,0x77,
24 0xED,0xDD,0xEB,0xBD,0xF3,0x6F,0x1D,0xB7,0xEC,0x01,0xF7,0xBD,0xE7,0x77,0xDD,0xF7,
25 0xED,0xDD,0xEB,0x81,0xEF,0x73,0xDC,0x01,0xED,0xDD,0xDC,0xBD,0xDD,0x7B,0xDF,0xF7,
26 0xEC,0x01,0xBD,0xBD,0xFE,0x7F,0xDF,0xD7,0xED,0xFD,0x7F,0xFF,0xFF,0x7F,0xDF,0xEF
27
28 }, // 0
29
30 {
31 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,
32 0xE4,0x00,0xFF,0xFF,0xE0,0x73,0xE7,0xCF,0xF3,0xF9,0xFF,0xF3,0xC3,0x13,0xE7,0xC9,
33 0xF3,0xF9,0xC0,0x01,0xF0,0x83,0xE1,0x00,0x80,0x09,0xFE,0x7F,0x80,0x73,0x00,0xC3,
34 0xC4,0xC9,0xFE,0x7F,0xE3,0x33,0xE0,0x01,0xE4,0xC9,0xFE,0x7F,0xE0,0x93,0xE6,0x73,
35 0xE4,0xC9,0xFE,0x7F,0xC0,0x90,0x87,0x23,0x0C,0x09,0xFE,0x7F,0xC3,0x81,0x87,0x27,
36 0xCC,0xC9,0xFE,0x7F,0x92,0x33,0xE7,0x8F,0xCC,0xF9,0xFE,0x71,0xF3,0xF3,0xE7,0x87,
37 0xCF,0xC1,0x80,0x00,0xF3,0xF3,0x86,0x20,0xCF,0xF1,0xFF,0xFF,0xF3,0xF3,0xC0,0xF9,
38 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
39 } // 1
40 };
41 uchar idata dispram[128];
42 void main()
43 {
44 1 SCON=0x00; //串口工作模式0;移位寄存器方式
45 1 TMOD=0x01; //定时器T0工作方式1:16位方式
46 1 TR0=1; //启动定时器t0
47 1 P1=0x3f; //P1端口初值:允许接收、锁定、显示
48 1 IE=0x82;
49 1 while(1)
50 1 {
51 2 for(i=0;i<2;i++)
52 2 {
53 3 for(j=0;j<8;j++)
C51 COMPILER V9.00 EX5 04/12/2010 16:55:40 PAGE 2
54 3 for(k=1;k<9;k++)
55 3 {
56 4 for(l=0;l<16;l++)
57 4 {
58 5 dispram[l*BLKN]=dispram[l*BLKN]<<1|dispram[l*BLKN+1]>>7;
59 5 dispram[l*BLKN+1]=dispram[l*BLKN+1]<<1|dispram[l*BLKN+2]>>7;
60 5 dispram[l*BLKN+2]=dispram[l*BLKN+2]<<1|dispram[l*BLKN+3]>>7;
61 5 dispram[l*BLKN+3]=dispram[l*BLKN+3]<<1|dispram[l*BLKN+4]>>7;
62 5 dispram[l*BLKN+4]=dispram[l*BLKN+4]<<1|dispram[l*BLKN+5]>>7;
63 5 dispram[l*BLKN+5]=dispram[l*BLKN+5]<<1|dispram[l*BLKN+6]>>7;
64 5 dispram[l*BLKN+6]=dispram[l*BLKN+6]<<1|dispram[l*BLKN+7]>>7;
65 5 dispram[l*BLKN+7]=dispram[l*BLKN+7]<<1|bmp[i][l*BLKN+j]>>(8-k);
66 5 }
67 4 delay(10);
68 4 }
69 3 }
70 2 }
71 1 }
72 void leddisplay(void) interrupt 1 using 1
73 {
74 1 uchar i,j=BLKN; //设定显示屏刷新率62.5帧/s
75 1 TH0=0xfd;
76 1 TL0=0xf0;
77 1 i=P1; //读取当前显示的行列
78 1 i=++i&0x0f; /*行数自动加一,屏蔽高4位 ,注意P1.0,P1.1,P1.2,P1,3控制行的显示,
79 1 通过4线16线译码器,对16行进行控制*/
80 1 do
81 1 {
82 2 j--;
83 2 SBUF=dispram[i*BLKN+j]; //送显示数据,SBUF串行数据缓冲寄存器
84 2 while(!TI); /*串行发送停止位的开始时,由内部硬件使T11,向CPU发出中断请求
85 2 ,在中断服务程序中,必须用软件使其清0*/
86 2 TI=0;
87 2 }
88 1 while(j); //完成一行数据的发送
89 1 G=1; //消隐(关闭显示)
90 1 P1&=0xf0; //行号端口清0
91 1 RCK=1; //显示数据打入输出锁存器
92 1 P1|=i; //写入行号
93 1 RCK=0; //锁存显示数据
94 1 G=0; //打开显示
95 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 572 ----
CONSTANT SIZE = 512 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
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 + -