📄 16x256.lst
字号:
C51 COMPILER V8.05a 16X256 01/02/2007 20:31:50 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 16X256
OBJECT MODULE PLACED IN 16x256.OBJ
COMPILER INVOKED BY: D:\keil安装\安装\C51\BIN\C51.EXE 16x256.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REGX51.H>
2 #define FOSC 12 //定义晶振频率
3 #define INIT_TH0 0x3C //定时器T0初始值
4 #define INIT_TL0 0xB0
5 #define TMOD_T00 0x00 //定义T0为方式0,GATE=0,C/T=0,13位计数器
6 #define TMOD_T01 0x01 //定义T0为方式1,GATE=0,C/T=0,16位计数器
7 #define TMOD_T02 0x02 //定义T0为方式2,GATE=0,C/T=0,自动装入8位计数器
8 #define TMOD_T03 0x03 //定义T0为方式3,GATE=0,C/T=0,定时器0分成两个8位计数器,定时器1停止计数
9
10 /*缩定定义*/
11
12 #define uchar unsigned char
13 #define uint unsigned int
14
15 /*P1口位定义*/
16
17
18 /*P2 BIT Define*/
19
20
21 /*P3 bit define*/
22
23 /************位定义***************/
24 sbit STTP = P2^7;
25
26
27 /************函数声明*************/
28 void delay(uint c); //延时函数
29 void out_rxd(uchar *d); //汉字输出
30
31
32 /************汉字点阵*************/
33 char code hanzi[6][32]={
34 {0x08,0x02,0x30,0x02,0x20,0x02,0x20,0x02,0x27,0xFE,0x24,0x92,0xA4,0x92,0x64,0x092,
35 0x24,0x92,0x24,0x92,0x2F,0xFE,0x24,0x02,0x20,0x02,0x28,0x06,0x30,0x02,0x00,0x00},
36 {0x04,0x20,0x44,0x20,0x54,0x40,0x54,0x80,0x55,0xFF,0x56,0x92,0x5C,0x92,0xF4,0x92,
37 0x54,0x92,0x56,0x92,0x55,0xFF,0x54,0x80,0x54,0x40,0x44,0x60,0x04,0x40,0x00,0x00},
38 {0x02,0x20,0x0C,0x20,0x88,0x20,0x69,0x20,0x09,0x20,0x09,0x22,0x89,0x21,0x69,0x7E,
39 0x09,0x60,0x09,0xA0,0x19,0x20,0x28,0x20,0xC8,0x20,0x0A,0x60,0x0C,0x20,0x00,0x00},
40 {0x00,0x00,0x7F,0xFF,0x44,0x20,0x5A,0x10,0x69,0xE1,0x30,0x81,0x24,0x82,0x24,0x8C,
41 0xA4,0xF0,0x64,0x80,0x24,0xFC,0x2C,0x82,0x25,0x82,0x28,0x82,0x30,0x0E,0x00,0x00},
42 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //'!'
43 0x00,0x00,0x00,0x00,0x38,0x00,0x7F,0xCC,
44 0x7F,0xCC,0x38,0x00,0x00,0x00,0x00,0x00,
45 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
46 },
47 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //显示空屏,如果只有一个字或将字全部移出必须设置一个空屏幕
48 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
49 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
50 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
51 };
52
53 /************主函数***************/
54 void main()
55 {
C51 COMPILER V8.05a 16X256 01/02/2007 20:31:50 PAGE 2
56 1 uchar i,j,k; //i:每个字的显示循环;j每个字的显示码除以2;k每列刷新次数
57 1 uchar b=0; //显示偏移控制,char类型最多只能显示14个汉字+一个空白位字符
58 1 uchar a; //控制移动间隔时间
59 1 SCON = 0x00;
60 1 while(1)
61 1 {
62 2 j=0;
63 2 if(a>5) //移动间隔时间;取值0--255
64 2 {
65 3 a=0;
66 3 b+=2;
67 3 if(b>=160) //显示到最后一个字,回头显示,判断值=字数*32
68 3 {
69 4 b=0;
70 4 }
71 3 }
72 2 for(i=0;i<16;i++)
73 2 {
74 3 P1=i;
75 3 for(k=0;k<5;k++)
76 3 {
77 4 STTP = 0;
78 4 out_rxd(&hanzi[3][j+b+1]);
79 4 out_rxd(&hanzi[3][j+b]);
80 4 out_rxd(&hanzi[2][j+b+1]);
81 4 out_rxd(&hanzi[2][j+b]);
82 4 out_rxd(&hanzi[1][j+b+1]);
83 4 out_rxd(&hanzi[1][j+b]);
84 4 out_rxd(&hanzi[0][j+b+1]);
85 4 out_rxd(&hanzi[0][j+b]);
86 4 STTP = 1;
87 4 delay(4);
88 4 }
89 3 j=j+2;
90 3 }
91 2 a++;
92 2 }
93 1 }
94
95 /************子函数**************/
96
97 void delay(uint c)
98 {
99 1 int i,j;
100 1 for(i=0;i<c;i++)
101 1 for(j=0;j<5;j++)
102 1 ;
103 1 }
104
105 void out_rxd(uchar *d)
106 {
107 1 SBUF = *d; //启动串行口传送
108 1 while(TI == 0); //等待串口传送结束
109 1 TI = 0; //将串口中断标志位置0
110 1 }
111
112
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 252 ----
CONSTANT SIZE = 192 ----
C51 COMPILER V8.05a 16X256 01/02/2007 20:31:50 PAGE 3
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
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 + -