📄 matrix16.lst
字号:
C51 COMPILER V8.06 MATRIX16 03/11/2007 21:30:29 PAGE 1
C51 COMPILER V8.06, COMPILATION OF MODULE MATRIX16
OBJECT MODULE PLACED IN Matrix16.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Matrix16.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************************
2 文件名称:Matrix16.C
3 适用范围:宋体16*16字符点阵信息读取程序
4 使用的字体文件为ASC16.BIN和HZK16.BIN,用WINHEX将两个合成在一个文件中,
5 文件名为Matrix16.bin,将Matrix16.bin以BIN方式烧录在AT27C040中;
6 *******************************************************************************/
7 #include "Matrix16.H"
8
9
10 #define asc_ofs 0x0000 //指定ASC16点阵信息在字库中的偏移位置
11 #define hzk_ofs 0x1000 //指定HZK16点阵信息在字库中的偏移位置
12
13 //#define addr_ex P1 //指定P1口作为扩展地址总线(A13-A18)
14
15 unsigned char xdata *p_dots;
16 unsigned char xdata dot_info[32];
17 //------------------------------------------------------------------------------
18
19 void GetChDots(uchar ch_code);
20 void GetHzDots(uchar hz_code_h,hz_code_l);
21 void ConvertChDots(uint pos_x,uint pos_y);
22 void ConvertLineMessage(uchar v_ln);
23
24 void ConvertHzDots(uint pos_x,uint pos_y);
25 void Convert1HzDots2(uchar hz_x,hz_y);
26 //------------------------------------------------------------------------------
27 uint GetHzDotsAddr(uchar hz_code_h,hz_code_l)
28 {
29 1 ulong addr;
30 1 uint addr_l,addr_h;
31 1
32 1 if((hz_code_h<0xa1)|(hz_code_l<0xa1)){
33 2 hz_code_h=0xa1;hz_code_l=0xa1;
34 2 }
35 1
36 1 addr = (hz_code_h-0xa1)*94;
37 1 addr = (addr+hz_code_l-0xa1)*32;
38 1 addr = addr+hzk_ofs; //GB2132 offset 0x1000;
39 1 addr_l = addr & 0x1fff;
40 1 addr_h = addr >> 13;
41 1 addr_ex = addr_h;
42 1 return(addr_l|rom_ofs); //片选汉字库ROM
43 1 }
44
45 //---------------------------------------------------------------------------
46 uint GetChDotsAddr(uchar ch_code)
47 {
48 1 ulong addr;
49 1 uint addr_l;
50 1
51 1 addr = ch_code*16;
52 1 addr_l = addr & 0x1fff;
53 1 addr_ex = 0x00; //屏蔽高位地址,ASC码用不到。
54 1 return(addr_l|rom_ofs); //片选ROM
55 1 }
C51 COMPILER V8.06 MATRIX16 03/11/2007 21:30:29 PAGE 2
56
57 //---------------------------------------------------------------------------
58 void GetChDots(uchar ch_code)
59 {
60 1 uchar i;
61 1
62 1 p_dots=GetChDotsAddr(ch_code); //计算点阵首地址,赋给指针
63 1 for(i=0;i<16;i++){ //读出点阵信息,放入点阵数组
64 2 dot_info[i]=*p_dots++;
65 2 }
66 1 }
67
68 void GetHzDots(uchar code_h,code_l)
69 {
70 1 uchar i;
71 1
72 1 p_dots=GetHzDotsAddr(code_h,code_l); //计算点阵首地址,赋给指针
73 1 for(i=0;i<32;i++){ //读出点阵信息,放入点阵数组
74 2 dot_info[i]=*p_dots++;
75 2 }
76 1 }
77
78 //0308 vonvert from 16*16 to 16*16
79 void ConvertHzDots(uint pos_x,uint pos_y)
80 {
81 1
82 1 uint idata j,y;
83 1 uint idata addroffset;
84 1
85 1 addroffset=pos_y+pos_x;
86 1
87 1 //左上部和左下部
88 1 for(j=0;j<16;j++)
89 1 {
90 2 y=j%2;
91 2 if(y==0)
92 2 {
93 3 bmp_info[addroffset+j/2] = dot_info[j];
94 3 }
95 2 else
96 2 {
97 3 bmp_info[addroffset+16+j/2] = dot_info[j];
98 3 }
99 2
100 2 }
101 1
102 1 //右上部和右下部
103 1 for(j=0;j<16;j++)
104 1 {
105 2 y=j%2;
106 2 if(y==0)
107 2 {
108 3 bmp_info[addroffset+8+j/2] = dot_info[16+j];
109 3 }
110 2 else
111 2 {
112 3 bmp_info[addroffset+24+j/2] = dot_info[16+j];
113 3 }
114 2 }
115 1
116 1 }
117
C51 COMPILER V8.06 MATRIX16 03/11/2007 21:30:29 PAGE 3
118 void ConvertChDots(uint pos_x,uint pos_y)
119 {
120 1 uint idata j,y;
121 1 uint idata addroffset;
122 1
123 1 addroffset=pos_y+pos_x;
124 1
125 1 for(j=0;j<16;j++)
126 1 {
127 2 bmp_info[addroffset+j] = dot_info[j];
128 2 }
129 1 }
*** WARNING C280 IN LINE 120 OF MATRIX16.C: 'y': unreferenced local variable
130
131 //0308 vonvert from 16*16 to 16*32
132 void Convert1HzDots2(uchar hz_x,hz_y)
133 {
134 1
135 1 uint xdata j, y;
136 1 unsigned char xdata bmp_info_temp[64];
137 1
138 1 addr_ex=0x01;
139 1 //左上部和左下部
140 1 for(j=0;j<16;j++)
141 1 {
142 2 y=j%2;
143 2 if(y==0)
144 2 {
145 3 bmp_info_temp[j/2] = dot_info[j];
146 3 }
147 2 else
148 2 {
149 3 bmp_info_temp[16+j/2] = dot_info[j];
150 3 }
151 2
152 2 }
153 1
154 1 //右上部和右下部
155 1 for(j=0;j<16;j++)
156 1 {
157 2 y=j%2;
158 2 if(y==0)
159 2 {
160 3 bmp_info_temp[8+j/2] = dot_info[16+j];
161 3 }
162 2 else
163 2 {
164 3 bmp_info_temp[24+j/2] = dot_info[16+j];
165 3 }
166 2 }
167 1
168 1 for(j=0;j<32;j++)
169 1 {
170 2 bmp_info[2*j+1]=bmp_info[2*j]=bmp_info_temp[j];
171 2 }
172 1
173 1 }
*** WARNING C280 IN LINE 132 OF MATRIX16.C: 'hz_x': unreferenced local variable
174
175 //---------------------------------------------------------------------------
176 void ConvertLineMessage(uchar v_ln)
177 {
C51 COMPILER V8.06 MATRIX16 03/11/2007 21:30:29 PAGE 4
178 1 uint xdata i,j;
179 1 //pos_y(行) pos_x(列)
180 1 uint xdata pos_x, pos_y;
181 1
182 1 pos_y=v_ln * LINEWIDTH;
183 1 j=0;
184 1
185 1 for(i=0;i<LINEWIDTH;i++)
186 1 {
187 2 if(info_ln[i]>0xa0)
188 2 {
189 3 GetHzDots(info_ln[i],info_ln[i+1]);
190 3 pos_x=32*j;
191 3 ConvertHzDots(pos_x,pos_y);
192 3 i++;
193 3 }
194 2 else
195 2 {
196 3 GetChDots(info_ln[i]);
197 3 ConvertChDots(pos_x,pos_y);
198 3 }
199 2 j++;
200 2
201 2 }
202 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1159 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 32 76
PDATA SIZE = ---- ----
DATA SIZE = 2 11
IDATA SIZE = ---- 12
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -