📄 mb9002.lst
字号:
C51 COMPILER V7.06 MB9002 06/10/2005 13:26:29 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MB9002
OBJECT MODULE PLACED IN MB9002.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MB9002.C BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS
stmt level source
1
2 /***********************************************************/
3 /* */
4 /* CPU:AT89c55 20MHZ */
5 /* Copyright 2004.09 Comelit */
6 /* AUTHOR: LV_XIAO_LU */
7 /* */
8 /***********************************************************/
9 /* 对于MB90092来说,行地址ROW = 0X00--0X0B ,列地址COW=0X00--0X17 */
10 /************* VRAM address setting *************/
11 /* bit7 bit 6 bit5 bit4 bit3 bit2 bit1 bit0 */
12 /*first byte 1 0 0 0 0 VSL RA8 RA7 */
13 /*second byte 0 RA6 RA5 CA4 CA3 CA2 CA1 CA0 */
14 /*********************************************************************/
15 /* COMMAND1-1 */
16 /* bit7 bit 6 bit5 bit4 bit3 bit2 bit1 bit0 */
17 /*first byte 1 0 0 1 1 MA MB AT */
18 /*second byte 0 CG CR CB MC BG BR BB */
19 /* COMMAND2-1 */
20 /*first byte 1 0 0 1 0 M9 M8 M7 */
21 /*second byte 0 M6 M5 M4 M3 M2 M1 M0 */
22 /*********************************************************************/
23
24 #include "reg52.h"
25 #include "typedef.h"
26 #include "define.h"
27 #include "variable.h"
28 #include "define.h"
29 #include "intrins.h"
30 #define byte unsigned char
31 /*该系统所用字体颜色为红色,且固定*/
32
33 sbit IC_CS = P1^4;
34 sbit IC_SLK = P1^3;
35 sbit IC_SIN = P1^2;
36
37
38 typedef union{ // font data type
39 unsigned int wcode ;
40
41 struct {
42 unsigned char high ;
43 unsigned char low ;
44 } scode ;
45 } TCODE ;
46
47 typedef struct{
48 unsigned char row;
49 unsigned char col;
50 unsigned char size: 4 ;
51 unsigned char bc: 4 ;
52 unsigned char cc: 4 ;
53 unsigned char at: 1 ;
54 unsigned char dummy: 3 ;
55 }DISP_ATTR;
C51 COMPILER V7.06 MB9002 06/10/2005 13:26:29 PAGE 2
56
57 typedef struct{
58 unsigned char *str; //待显示的字符串
59 DISP_ATTR str_attr;
60 }ATTR;
61
62 void Turn_disp_off(void);
63 void Turn_disp_on(void);
64 void Vram_clear(void);
65 void Send_byte(byte I_data);
66 //void Delay(void);
67 void Disp_color(byte row);
68 void Disp_num(byte row,byte col,unsigned int adr,byte size,byte bc,byte cc,byte at);
69
70 void Init_mb9002_ic(byte bc);
71 void Turn_disp_off(void);
72 int Isascii2( int c ) ;
73 unsigned char* Disp_next_font(unsigned char *s);
74 unsigned char *Disp_next_content(unsigned char *s) ;
75 unsigned int Dfontadr( unsigned int font_code );
76 void Set_str_attr(byte x,byte y,byte size,byte bc,byte cc,byte at);
77 void Set_content_attr(byte x,byte y,byte size,byte bc,byte cc,byte at);
78 void Disp_content(unsigned char *pointer,byte x,byte y,byte size,byte bc,byte cc,byte at);
79 void Disp_str(unsigned char *pointer,byte x,byte y,byte size,byte bc,byte cc,byte at);
80
81 /*********************************************************/
82 /*********************************************************/
83
84 void Turn_disp_off(void)
85 {
86 1 Send_byte(COMMAND_4+0x02); //内同步,非隔行扫描,一般性的屏幕背景显示
87 1 Send_byte(0x2a); /*区域控制:一般显示,显示颜色:彩色,放大控制:不放大*/
88 1 /*制式:PAL制,显示控制:使能显示输出 */
89 1 }
90
91 /*********************************************************/
92 /*********************************************************/
93 void Turn_disp_on(void)
94 {
95 1 Send_byte(COMMAND_4+0x02);
96 1 Send_byte(0x2b);
97 1 }
98
99 /*********************************************************/
100 /*********************************************************/
101 void Vram_clear(void)
102 {
103 1 register unsigned char i,j;
104 1 for(i=0;i<13;i++)
105 1 {
106 2 for(j=0;j<24;j++)
107 2 {
108 3 Disp_num(i,j,0x00,3,0,0,0);
109 3
110 3 }
111 2 }
112 1 }
113 /*********************************************************/
114 /*********************************************************/
115
116
117 /*********************************************************/
C51 COMPILER V7.06 MB9002 06/10/2005 13:26:29 PAGE 3
118 /* 发送字节到90092 I_data:待发送的数 */
119 /*********************************************************/
120 void Send_byte(byte I_data)
121 {
122 1 register char i;
123 1 IC_CS = 0;
124 1 for(i=0;i<8;i++)
125 1 {
126 2 IC_SLK = 0 ;
127 2 if(I_data&0x01)
128 2 IC_SIN = 1;
129 2 else
130 2 IC_SIN = 0;
131 2
132 2 I_data >>= 1;
133 2 IC_SLK = 1;
134 2 }
135 1
136 1 IC_CS = 1;
137 1 }
138
139 /**********************************************************/
140 /* 延时程序 */
141 /**********************************************************/
142 /*void Delay(void)
143 {
144 byte i;
145 for(i=0;i<0xff;i++)
146 {
147 i++;
148 i--;
149 }
150 }*/
151 /**********************************************************/
152 /* */
153 /* 在屏幕上显示字符 */
154 /* row:行地址 */
155 /* col:列地址 */
156 /* addr:要显示的字符的地址 */
157 /* flag:标志位,主要字符状态 */
158 /**********************************************************/
159
160 void Disp_color(byte row)
161 {
162 1 register byte temp1,temp2;
163 1
164 1
165 1
166 1 temp1=((row >> 2)&0x3)+0x84;
167 1 temp2=((row<<5)&0x60)+1;
168 1
169 1 /* COMMAND0:VSL=1,CA0=1 */
170 1 Send_byte(temp1);
171 1 Send_byte(temp2);
172 1 /* COMMAND1-3*/
173 1 Send_byte(0x88);
174 1 Send_byte(0x0);
175 1 /* COMMAND2-3*/
176 1 Send_byte(0x90);
177 1 Send_byte(0x0);
178 1 }
179
C51 COMPILER V7.06 MB9002 06/10/2005 13:26:29 PAGE 4
180
181 /***************************************************************/
182 /*vram row:行,vram col:列,addr:字体地址,size:尺寸,bc:背景颜色,*/
183 /*cc:前景颜色,at:特殊显示标记 */
184 /***************************************************************/
185
186 //void Disp_num(byte row,byte col,int addr,byte size,byte bc,byte cc,byte ff)
187 //{
188 // byte temp1,temp2,color;
189 /* VRAM ADDRESS SET :COMMAND0 */
190 // temp1=((row>>2)&0x3)+CAMMAND_0; /* Get VRAM SET COMMAND0 :first byte */
191 // temp2=((row<<5)&0x60)+col; /* Get VRAM SET COMMAND0 :second byte */
192 // send_byte(temp1);
193 // send_byte(temp2);
194
195 /* command 6 用于指定字体大小和行的位置 */
196 // send_byte(COMMAND_6+size);/* command 6 */
197 // send_byte(0x20+row);
198
199 // if (singal==4)
200 // {
201 // cc=7;
202 // bc=0;
203 // }
204
205 /* command1-1 */
206 // color=((cc<<4)&0x70)+bc;
207 // Send_byte(0x88+ff);
208 // Send_byte(color);
209
210 /* command2-1 */
211 // Send_byte(0x90+addr/128);
212 // Send_byte(addr%128);
213 //}
214
215
216
217 /***************************************************************/
218 /* at:特殊显示标记 */
219 /***************************************************************/
220 void Disp_num(byte row,byte col,unsigned int adr,byte size,byte bc,byte cc,byte at)
221 {
222 1
223 1 register byte temp1,temp2,high_adr;
224 1 /* VRAM ADDRESS SET :COMMAND0 */
225 1 temp1=((row >> 2)&0x3) + COMMAND_0 ; /* Get VRAM SET COMMAND0 :first byte */
226 1 temp2=((row << 5)&0x60) + col ; /* Get VRAM SET COMMAND0 :second byte */
227 1 Send_byte(temp1);
228 1 Send_byte(temp2);
229 1
230 1 /* command 6 用于指定字体大小和行的位置 */
231 1 Send_byte(COMMAND_6+size);/* command 6 */
232 1 Send_byte(0x20+ row);
233 1
234 1
235 1 /* command1-1 */
236 1
237 1 /* 先做如下地址变换:
238 1 将font->code_addr = XX XX XX MC MB MA BIT9 BIT8 BIT7 BIT6 BIT5 BIG4 BIT3 BIT2 BIT1 BIT0
239 1 ----> temp1 = 0 0 0 0 0 MC MB MA
240 1 */
241 1 temp1=(unsigned char)(adr>>10);
C51 COMPILER V7.06 MB9002 06/10/2005 13:26:29 PAGE 5
242 1 high_adr = temp1 & 0x03 ;
243 1 /*再做如下变换 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 */
244 1 /* 将temp1 = 0 0 0 0 0 MC MB MA
245 1 ----> high_adr = 0 0 0 0 0 MA MB 0 */
246 1
247 1 if(high_adr == 1)
248 1 high_adr = 4;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -