📄 dianzhenxianshi.lst
字号:
C51 COMPILER V6.12 DIANZHENXIANSHI 05/25/2007 19:03:48 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE DIANZHENXIANSHI
OBJECT MODULE PLACED IN .\DIANZHENXIANSHI.OBJ
COMPILER INVOKED BY: G:\programfiles2\keil6.02\C51\BIN\C51.EXE .\DIANZHENXIANSHI.C DEBUG OBJECTEXTEND
stmt level source
1 //使用AT89C52单片机,12MHZ晶振,P0口输出一行数据,P2口作列扫描,共阳LED管
2 //P1口接6个按键,用于逐字闪烁、向上、下、左、右、显示和暂停备用
3 #include "reg51.h"
4 #define char unsigned char
5 #define int unsigned int
6 char key,keytmp;
7 char code distaba[]=
8 {0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00,//2(各数字的阳码)
9 0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,//0
10 0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,//0
11 0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00,//7
12 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//黑屏,表示一次显示完毕
13 };
14 char code distabb[]=
15 {0x00,0x39,0x45,0x45,0x45,0x27,0x00,0x00,//2
16 0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,//0
17 0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,//0
18 0x00,0x70,0x4f,0x40,0x40,0x40,0x00,0x00,//7
19 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//黑屏,表示一次显示完毕
20 };
21 char code distabc[]=
22 {0xff,0xc7,0xbb,0xbf,0xbf,0xc3,0xfb,0x83,//2(各数字的阳反码)
23 0xff,0xc7,0xbb,0xbb,0xbb,0xbb,0xbb,0xc7,//0
24 0xff,0xc7,0xbb,0xbb,0xbb,0xbb,0xbb,0xc7,//0
25 0xff,0x83,0xbf,0xdf,0xdf,0xdf,0xdf,0xdf,//7
26 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//黑屏,表示一次显示完毕
27 };
28 char code distabd[]=
29 {0x83,0xfb,0xc3,0xbf,0xbf,0xbb,0xc7,0xff,//2(各数字的阳反码)
30 0xc7,0xbb,0xbb,0xbb,0xbb,0xbb,0xc7,0xff,//0
31 0xc7,0xbb,0xbb,0xbb,0xbb,0xbb,0xc7,0xff,//0
32 0xdf,0xdf,0xdf,0xdf,0xdf,0xbf,0x83,0xff,//7
33 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//黑屏,表示一次显示完毕
34 };
35 //
36 char code scan_cona[8]=
37 {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//列扫描控制字
38 char code scan_conb[8]=
39 {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//列扫描控制字
40 //******按键扫描函数********//
41 void keyscan()
42 {
43 1 key=(~P1)&0x0ff;//读入键值
44 1 if(key!=0)
45 1 {
46 2 keytmp=key;//键值存放
47 2
48 2 }
49 1 }
50 //***1ms延时子程序****
51 delay1ms(int t)
52 {
53 1 int i,j;
54 1 for(i=0;i<t;i++)
55 1 for(j=0;j<120;j++)
C51 COMPILER V6.12 DIANZHENXIANSHI 05/25/2007 19:03:48 PAGE 2
56 1 keyscan();
57 1 }
58 //******功能程序*******
59 //******逐字闪烁显示*******
60 fun0()
61 {
62 1 int m,n,h;
63 1 for(h=0;h<40;h=h+8)
64 1 {for(n=0;n<16;n++)
65 2 { if(0<n<=8)
66 3 {for(m=0;m<8;m++)
67 4 {P2=scan_cona[m];P0=distaba[m+h];delay1ms(3);continue;}}
68 3 if(8<n<=16)
69 3 {for(m=0;m<8;m++)
70 4 {P2=0xff;P0=distaba[m+h];delay1ms(3);}continue;}
71 3 }
72 2 }
73 1 }
74 //******向左滚动显示******
75 fun1()
76 {
77 1 int m,n,h;
78 1 for(h=0;h<32;h++)//控制显示字数(32/8=4个)
79 1 {for(n=0;n<25;n++)//控制帧移动速度
80 2 {for(m=0;m<8;m++)//显示1帧扫描(分8行,每行亮1ms)
81 3 {P2=scan_cona[m];P0=distaba[m+h];delay1ms(1);}
82 3 }
83 2 }
84 1 }
85 //****向右滚动显示****
86 fun2()
87 {
88 1 int m,n,h;
89 1 for(h=0;h<32;h++)//控制显示字数(32/8=4个)
90 1 {for(n=0;n<25;n++)//控制帧移动速度
91 2 {for(m=0;m<8;m++)//显示1帧扫描(分8行,每行亮1ms)
92 3 {P2=scan_cona[7-m];P0=distabb[m+h];delay1ms(1);}
93 3 }
94 2 }
95 1 }
96 //********向上滚动显示**********
97 fun3()
98 {
99 1 int m,n,h;
100 1 for(h=0;h<32;h++)//控制显示字数(32/8=4个)
101 1 {for(n=0;n<25;n++)//控制帧移动速度
102 2 {for(m=0;m<8;m++)//显示1帧扫描(分8行,每行亮1ms)
103 3 {P0=scan_conb[7-m];P2=distabc[m+h];delay1ms(1);}
104 3 }
105 2 }
106 1 }
107 //*********向下滚动显示*********
108 fun4()
109 {
110 1 int m,n,h;
111 1 for(h=0;h<32;h++)//控制显示字数(32/8=4个)
112 1 {for(n=0;n<25;n++)//控制帧移动速度
113 2 {for(m=0;m<8;m++)//显示1帧扫描(分8行,每行亮1ms)
114 3 {P0=scan_conb[m];P2=distabd[m+h];delay1ms(1);}
115 3 }
116 2 }
117 1 }
C51 COMPILER V6.12 DIANZHENXIANSHI 05/25/2007 19:03:48 PAGE 3
118 //******主程序********
119 main()
120 {
121 1 keytmp=1;//上电自动演示功能(逐字显示)
122 1 while(1)
123 1 {
124 2 keyscan();
125 2 switch(keytmp)
126 2 {
127 3 case(1):{fun0();break;}
128 3 case(2):{fun1();break;}
129 3 case(4):{fun2();break;}
130 3 case(8):{fun3();break;}
131 3 case(16):{fun4();break;}
132 3 case(32):{keyscan();P2=0xff;break;}//备用(暂停黑屏)
133 3 default:{break;}
134 3 }
135 2 }
136 1 }
137 //*******************结束************************* //
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 687 ----
CONSTANT SIZE = 176 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 30
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 + -