📄 main6.lst
字号:
C51 COMPILER V7.06 MAIN6 05/20/2008 15:04:32 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN6
OBJECT MODULE PLACED IN main6.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main6.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg51.h>
2 #include<intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define staticdis 0x01
6 #define up 0x02
7 #define left 0x03
8
9 typedef struct typFNT_GB16 // 汉字字模显示数据结构
10 {
11 char Index[2];
12 char Msk[32];
13 };
14 struct typFNT_GB16 code GB_16[] = { // 显示为16*16
15 "衡",0x22,0x00,0x33,0xDE,0x44,0x40,0x58,0x80,0x97,0xC0,0x25,0x5E,0x67,0xC4,0xA5,0x44,0x27,0xC4,0x21,0x04,0
-x2F,0xE4,0x21,0x04,0x22,0x84,0x24,0x54,0x28,0x28,0x20,0x00,
16 "阳",0x00,0x00,0x7D,0xFC,0x45,0x04,0x49,0x04,0x49,0x04,0x51,0x04,0x49,0xFC,0x45,0x04,0x45,0x04,0x45,0x04,0
-x69,0x04,0x51,0x04,0x41,0xFC,0x41,0x04,0x40,0x00,0x40,0x00,
17 "师",0x08,0x00,0x0B,0xFE,0x48,0x20,0x48,0x20,0x4B,0xFE,0x4A,0x22,0x4A,0x22,0x4A,0x22,0x4A,0x22,0x52,0x22,0
-x52,0x2A,0x12,0x24,0x20,0x20,0x40,0x20,0x80,0x20,0x00,0x20,
18 "范",0x04,0x20,0x04,0x20,0xFF,0xFE,0x04,0x60,0x40,0x00,0x31,0xF8,0x91,0x08,0x61,0x08,0x49,0x08,0x09,0x38,0
-x11,0x10,0xE1,0x00,0x21,0x04,0x21,0x04,0x20,0xFC,0x20,0x00,
19 "学",0x01,0x08,0x10,0x8C,0x0C,0xC8,0x08,0x90,0x7F,0xFE,0x40,0x04,0x8F,0xE8,0x00,0x40,0x00,0x80,0x7F,0xFE,0
-x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x02,0x80,0x01,0x00,
20 "院",0x00,0x80,0xF8,0x40,0x8F,0xFE,0x94,0x04,0xA0,0x00,0xA3,0xF8,0x90,0x00,0x88,0x00,0x8F,0xFE,0xA9,0x20,0
-x91,0x20,0x81,0x20,0x82,0x22,0x82,0x22,0x84,0x22,0x88,0x1E,
21 "物",0x10,0x80,0x10,0x80,0x50,0x80,0x51,0xFC,0x7D,0x54,0x52,0x54,0x94,0x94,0x14,0x94,0x19,0x24,0x32,0x24,0
-xD4,0x44,0x10,0x84,0x11,0x04,0x12,0x04,0x14,0x28,0x00,0x10,
22 "理",0x00,0x00,0x03,0xFC,0xFA,0x44,0x22,0x44,0x23,0xFC,0x22,0x44,0xFA,0x44,0x23,0xFC,0x22,0x44,0x20,0x40,0
-x23,0xFC,0x38,0x40,0xC0,0x40,0x00,0x40,0x0F,0xFE,0x00,0x00,
23 "与",0x00,0x00,0x08,0x00,0x08,0x04,0x0F,0xFE,0x08,0x00,0x08,0x00,0x0F,0xFC,0x00,0x04,0x00,0x04,0x00,0x24,0
-x7F,0xF4,0x00,0x04,0x00,0x04,0x00,0x48,0x00,0x30,0x00,0x00,
24 "电",0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0
-x3F,0xF8,0x21,0x08,0x01,0x02,0x01,0x02,0x00,0xFE,0x00,0x00,
25 "子",0x00,0x00,0x3F,0xF0,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,0
-x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,
26 "信",0x08,0x80,0x0C,0x60,0x18,0x40,0x17,0xFE,0x30,0x00,0x33,0xF8,0x50,0x00,0x93,0xF8,0x10,0x00,0x13,0xF8,0
-x12,0x08,0x12,0x08,0x12,0x08,0x13,0xF8,0x12,0x08,0x00,0x00,
27 "息",0x01,0x00,0x02,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x00,0x00,0
-x09,0x00,0x28,0x84,0x28,0x92,0x68,0x12,0x07,0xF0,0x00,0x00,
28 "科",0x06,0x08,0x78,0x88,0x08,0x48,0x08,0x48,0xFE,0x08,0x18,0x88,0x1C,0x48,0x2A,0x48,0x28,0x0E,0x48,0x78,0
-x8B,0x88,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
29 "学",0x01,0x08,0x10,0x8C,0x0C,0xC8,0x08,0x90,0x7F,0xFE,0x40,0x04,0x8F,0xE8,0x00,0x40,0x00,0x80,0x7F,0xFE,0
-x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x02,0x80,0x01,0x00,
30 "系",0x00,0x7C,0x3F,0x80,0x02,0x20,0x04,0x20,0x08,0x40,0x1F,0x80,0x03,0x20,0x0C,0x10,0x3F,0xF8,0x10,0x8C,0
-x04,0xA0,0x08,0x90,0x10,0x88,0x20,0x84,0x42,0x84,0x01,0x00,
31 };
32
33 uchar code str1[]={"衡阳师范学院"};
34 uchar code str2[]={"衡阳师范学院物理与电子信息科学系"};
35 void timerinit(void);
36 void sioinit(void);
37 void initial(void);
38 void clrscree(void);
39 void clrindex(void);
C51 COMPILER V7.06 MAIN6 05/20/2008 15:04:32 PAGE 2
40 void senddata(uchar i);
41 void row_dis(void);
42 void full_databuf(uchar effict);
43 void l_databuf(uchar i);
44 void full_index(uchar *prt,uchar effict);
45 void display(uchar *a,uchar effict);
46 void timeIRQ(void);
47 void delay_s(uint k);
48
49 uchar databuf[18];
50 uchar *dataindex[12];
51 uchar cbuf_flag,fullindex_flag,fulldata_flag;
52 uchar row_count,shift_count,shift_add,disen;
53 uchar *indexprt;
54 uint time_count;
55
56 main()
57 {
58 1 initial();
59 1 while(1)
60 1 {
61 2 // display(str1,staticdis);
62 2 // delay_s(10);
63 2 // clrscree();
64 2 display(str2,up);
65 2 }
66 1 }
67
68
69
70 void timerinit(void)//3ms timer
71 {
72 1 TMOD=0x01;
73 1 TH0=(65535-600)/256;
74 1 TL0=(65535-600)%256;
75 1 IE=0x82;
76 1 }
77 void sioinit(void)// 方式0
78 {
79 1 SCON=0x00;
80 1 TI=0;
81 1 }
82 void initial(void)
83 {
84 1 timerinit();
85 1 sioinit();
86 1 fulldata_flag=1;
87 1 fullindex_flag=1;
88 1 time_count=0;
89 1 TR0=1;
90 1 }
91
92 /*********application function*******
93 静态显示、左移、右移
94 ************************************/
95 void clrscree(void)
96 {
97 1 int i;
98 1 for(i=0;i<18;i+=2)
99 1 {
100 2 databuf[i]=0;
101 2 databuf[i+1]=0;
C51 COMPILER V7.06 MAIN6 05/20/2008 15:04:32 PAGE 3
102 2 }
103 1 }
104 void clrindex(void)
105 {
106 1 int i;
107 1 for(i=0;i<12;i++)
108 1 {
109 2 dataindex[i]=0;
110 2 }
111 1 }
112 void senddata(uchar j) //sio 口发送数据
113 {
114 1 j=~j;
115 1 SBUF=j;
116 1 while(TI==0);
117 1 TI=0;
118 1 }
119 void row_dis(void) //p1.0-a,p1.1-b,p1.2-c,p1.3-d st-p1.4 p1.5-en
120 {
121 1 uchar i=0,j=0,k;
122 1 for(i=0;i<16;i++)
123 1 {
124 2 j=databuf[15-i];
125 2 senddata(j);
126 2 }
127 1 k=~row_count&0x0f;
128 1 P1=k+0x20+0x10;
129 1 _nop_();
130 1 _nop_();
131 1 P1=k+0x20;
132 1 // P1=row_count+0x10;
133 1 // P1=row_count;
134 1 fulldata_flag=1;
135 1 row_count++;
136 1 if(row_count==16)row_count=0;
137 1 }
138 //*************************databuf 更新
139 void full_databuf(uchar effict)
140 {
141 1 uchar i;
142 1 uchar *ptr;
143 1 if(fulldata_flag==1)
144 1 {
145 2 clrscree();
146 2 // fulldata_flag=0;
147 2 if(effict==staticdis||effict==left)
148 2 {
149 3 for(i=0;i<18;i+=2)
150 3 {
151 4 ptr=dataindex[i/2];
152 4 if(ptr==0)break;
153 4 databuf[i]=*(ptr+row_count*2);
154 4 databuf[i+1]=*(ptr+row_count*2+1);
155 4 }
156 3 if(effict==left)
157 3 {
158 4 l_databuf(shift_add);
159 4 }
160 3 }
161 2 else if(effict==up)
162 2 {
163 3 for(i=0;i<18;i+=2)
C51 COMPILER V7.06 MAIN6 05/20/2008 15:04:32 PAGE 4
164 3 {
165 4 ptr=dataindex[i/2];
166 4 if(ptr==0)break;
167 4 if((shift_add+row_count)>15)
168 4 {
169 5 databuf[i]=*(ptr+134+(shift_add+row_count-15)*2);
170 5 databuf[i+1]=*(ptr+134+(shift_add+row_count-15)*2+1);
171 5 }
172 4 else
173 4 {
174 5 databuf[i]=*(ptr+(shift_add+row_count)*2);
175 5 databuf[i+1]=*(ptr+(shift_add+row_count)*2+1);
176 5 }
177 4 }
178 3 }
179 2 fulldata_flag=0;
180 2 }
181 1 }
182 void l_databuf(uchar i)//左移时数据BUF处理
183 {
184 1 uchar h;
185 1 int j,k;
186 1 if(i>=8)
187 1 {
188 2 for(h=0;h<17;h++)
189 2 databuf[h]=databuf[h+1];
190 2 i-=8;
191 2 }
192 1 for(h=0;h<16;h++)
193 1 {
194 2 j=databuf[h];
195 2 k=databuf[h+1];
196 2 j=j<<i;
197 2 k=k>>(8-i);
198 2 databuf[h]=j|k;
199 2 }
200 1 }
201
202 void full_index(uchar *prt,uchar effict)
203 {
204 1 uchar str1,str2;
205 1 uchar *prt2;
206 1 int i,j;
207 1 if(fullindex_flag==1)
208 1 {
209 2 if(effict==staticdis)indexprt=prt;
210 2 else if(effict==up)indexprt=prt+8;
211 2 else if(effict==left)indexprt=prt+2;
212 2 clrindex();
213 2 for(i=0;i<12;i++,prt=prt+2)
214 2 {
215 3 str1=*prt;
216 3 str2=*(prt+1);
217 3 if(str1=='\0') {disen=1;break;}
218 3 for(j=0;j<sizeof(GB_16)/sizeof(GB_16[0]);j++)
219 3 {
220 4 if(str1 == GB_16[j].Index[0]&&str2 == GB_16[j].Index[1])
221 4 break;
222 4 }
223 3 prt2=GB_16[j].Msk;
224 3 dataindex[i]=prt2;
225 3 }
C51 COMPILER V7.06 MAIN6 05/20/2008 15:04:32 PAGE 5
226 2 fullindex_flag=0;
227 2 }
228 1 }
229 void timeIRQ(void) interrupt 1
230 {
231 1 TH0=(65535-600)/256;
232 1 TL0=(65535-600)%256;
233 1 time_count++;
234 1 if(fulldata_flag!=1)
235 1 {
236 2 row_dis();
237 2 shift_count++;
238 2 if(shift_count==100)
239 2 {
240 3 shift_add++;
241 3 if(shift_add==16)
242 3 {
243 4 shift_add=0;
244 4 fullindex_flag=1;
245 4 }
246 3 }
247 2 }
248 1 }
249
250 void display(uchar *a,uchar effict)
251 {
252 1 indexprt=a;
253 1 disen=0;
254 1 while(!disen)
255 1 {
256 2 full_index(indexprt,effict);
257 2 full_databuf(effict);
258 2 }
259 1 }
260 void delay_s(uint k) //
261 {
262 1 while(k!=0)
263 1 {
264 2 if(time_count>=1000){time_count=0;k--;}
265 2 }
266 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 957 ----
CONSTANT SIZE = 590 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 66 16
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 + -