📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 12/30/2008 11:47:53 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*------------------------------------------------------------------------------------------
2 [文件名] t6963.c
3 [功能] 240X128液晶
4 [版本] 3.0
5 [作者] 鞠春阳
6 [最后修改时间] 2003年5月12日
7 ===========================================================================================*/
8
9 #include "absacc.h"
10 #include "math.h"
11
12 #include "ASCII816.h" //标准ASCII库
13 #include "HZTable.h" //汉字点阵库(自做)
14 #include "menu.h" //菜单库(自做)
15 #define ComPort 0xB101
16 #define DataPort 0xB000
17 #define GraphAddr 0x0000 //head of graph
18 //以8*8字符计算,显示屏横向、纵向可以显示的字符个数
19 //以240*128为例:
20 #define LineChar 30 //一行16个字符(8*8)
21 #define ColumnChar 16 //总共16列
22
23 //指令,数据 读写状态检查
24 #define RWCheck() { unsigned char sta; do{ sta=XBYTE[ComPort] & 0x03; }
25 while(sta!=0x03); }
*** ERROR C141 IN LINE 25 OF MAIN.C: syntax error near 'while'
*** ERROR C141 IN LINE 25 OF MAIN.C: syntax error near '!=', expected ')'
26 //数据自动读 状态检查
27 #define AutoRCheck() { unsigned char sta; do{ sta=XBYTE[ComPort] & 0x04; }
28 while(sta!=0x04); }
*** ERROR C141 IN LINE 28 OF MAIN.C: syntax error near '!=', expected ')'
29 //数据自动写 状态检查
30 #define AutoWCheck() { unsigned char sta; do{ sta=XBYTE[ComPort] & 0x08; }
31 while(sta!=0x08); }
*** ERROR C141 IN LINE 31 OF MAIN.C: syntax error near '!=', expected ')'
32 /*------输入/出函数,与T6963通讯------------------------------------------------*/
33 /*------------------------------------------------------------------------*/
34 // 向数据口发Data
35 #define OutPortData(dat ) { RWCheck(); XBYTE[DataPort]=dat; }
36 //写有 1 个参数命令
37 #define OutPortCom1(command) { RWCheck(); XBYTE[ComPort]= command; }
38 //写有 2 个参数命令
39 #define OutPortCom2(dat, command) { OutPortData(dat);
40 OutPortCom1(command); }
*** ERROR C141 IN LINE 40 OF MAIN.C: syntax error near 'do'
*** ERROR C231 IN LINE 40 OF MAIN.C: 'sta': redefinition
*** ERROR C141 IN LINE 40 OF MAIN.C: syntax error near '}'
*** ERROR C141 IN LINE 40 OF MAIN.C: syntax error near 'unsigned'
*** ERROR C141 IN LINE 40 OF MAIN.C: syntax error near ')'
*** ERROR C141 IN LINE 40 OF MAIN.C: syntax error near '}'
41 //写有 3 个参数命令
42 #define OutPortCom3(data1, data2, command) { OutPortData(data1);
43 OutPortData(data2);
*** ERROR C231 IN LINE 43 OF MAIN.C: 'sta': redefinition
*** ERROR C141 IN LINE 43 OF MAIN.C: syntax error near 'do'
C51 COMPILER V7.50 MAIN 12/30/2008 11:47:53 PAGE 2
*** ERROR C279 IN LINE 43 OF MAIN.C: 'sta': multiple initialization
*** ERROR C141 IN LINE 43 OF MAIN.C: syntax error near '}'
*** ERROR C141 IN LINE 43 OF MAIN.C: syntax error near 'unsigned'
*** ERROR C141 IN LINE 43 OF MAIN.C: syntax error near ')'
*** ERROR C141 IN LINE 43 OF MAIN.C: syntax error near '}'
44 OutPortCom1(command);
*** ERROR C231 IN LINE 44 OF MAIN.C: 'sta': redefinition
*** ERROR C141 IN LINE 44 OF MAIN.C: syntax error near 'do'
*** ERROR C279 IN LINE 44 OF MAIN.C: 'sta': multiple initialization
*** ERROR C141 IN LINE 44 OF MAIN.C: syntax error near '}'
*** ERROR C141 IN LINE 44 OF MAIN.C: syntax error near 'unsigned'
*** ERROR C141 IN LINE 44 OF MAIN.C: syntax error near ')'
*** ERROR C141 IN LINE 44 OF MAIN.C: syntax error near '}'
45 }
46
47 unsigned char InPortData() { RWCheck(); return(XBYTE[DataPort]); }
*** ERROR C141 IN LINE 47 OF MAIN.C: syntax error near ';', expected 'while'
48 2 /*-----------------------------------------------------------------------------------*/
49 2 //显示8*16字符
50 2 //lin:行(0-7), column: 列(0-15)
51 2 //ch:字符代码(标准ASCII码)
52 2 void ShowChar(unsigned char lin,unsigned char column,unsigned char ch)
53 2 {
54 2 unsigned char i;
55 2 unsigned char dat;
56 2 unsigned int StartAddr;
57 2 StartAddr=lin*LineChar +column; //定位起始行
58 2 for(i=0;i<16;i++)
59 2 {
60 2 dat=ASCII816[ ch-0x20 ][i];
61 2 OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8),
62 2 0x24); //set address
63 2 OutPortCom2( dat, 0xc4);
64 2 StartAddr=StartAddr + LineChar;
65 2 }
66 2 }
67 2 /*----------------------------------------------------------------------------------------------*/
68 2 //显示一个汉字(16*16点阵)
69 2 //lin:行(0-7), column: 列(0-7)
70 2 //hzcode: 汉字代码(自定义的)
71 2 void ShowHZ(unsigned char lin,unsigned char column,unsigned int hzcode)
72 2 {
73 2 unsigned char i;
74 2 unsigned int StartAddr;
75 2 StartAddr=lin*LineChar + column; //定位起始行
76 2 for(i=0;i<16;i++)
77 2 {
78 2 OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8),
79 2 0x24);
80 2 OutPortCom2( HZTable[hzcode][i*2], 0xc0); //左半部 地址加一
81 2 OutPortCom2( HZTable[hzcode][i*2+1], 0xc4); //右半部 字模地址加一
82 2 StartAddr=StartAddr + LineChar;
83 2 }
84 2 }
85 2 /////////////////////////////////////////////////////////////////////////////////////////////
86 2 //显示一个汉字(16*16点阵)
87 2 /*240x128液晶T6963控制器驱动程序(C51)-P2
88 2 240x128液晶T6963控制器驱动程序(C51)-P2
89 2 作者:佚名 51单片机来源:不详 点击数:540 更新时间:2007-8-4
90 2
91 2 //hzcode: 汉字代码(自定义的)
92 2 void ShowHZD(unsigned char lin,unsigned char column,unsigned int hzcode)
C51 COMPILER V7.50 MAIN 12/30/2008 11:47:53 PAGE 3
93 2 {
94 2 unsigned char i,j;
95 2 unsigned int StartAddr;
96 2 StartAddr=lin*LineChar*16 +column; //定位起始行
97 2 for(i=0;i<35;i++)
98 2 {
99 2 OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8),
100 2 0x24); //定位当前操作位置
101 2 for(j=0;j<5;j++) OutPortCom2( HZTable[hzcode][i*5+j], 0xc0); //显示当前一行
102 2 StartAddr=StartAddr + LineChar;
103 2 }
104 2 }
105 2 ////////////////////////////////////////////////////////////////////////////////////////////
106 2 /*-----------------------------------------------------------------------------------*/
107 2 //显示一行字符串(汉字,字母混排,一行16字节)
108 2 //lin:行
109 2 //lineheadaddr: 此行汉字代码区首地址
110 2 /* void ShowLine(unsigned char lin,unsigned char column,unsigned char
111 2 linehead[])
112 2 {
113 2 unsigned char i,j;
114 2 unsigned char byte;
115 2 unsigned int hzcode;
116 2 for( i= column,j=0; i< column+14 ; )
117 2 { byte=linehead[j];
118 2 if(byte < 0x80) //字母
119 2 {
120 2 ShowChar(lin, i , byte);
121 2 i=i+1;j=j+1;
122 2 }
123 2 else // byte >= 0x80(汉字)
124 2 {
125 2 byte=byte & 0x7f; //最高位置0,即:减去0x8000
126 2 hzcode=byte*256 + linehead[j+1]; //加低8位,组合成整型数地址
127 2 ShowHZ( lin,i,hzcode);
128 2 i=i+2;j=j+2;
129 2 }
130 2 }
131 2 }
132 2 /*-----------------------------------------------------------------------------------*/
133 2 //显示一屏汉字
134 2 //pageheadaddr:此屏汉字代码地址区首地址
135 2 /* void ShowPage(unsigned char lin,unsigned char column1,unsigned char
136 2 pagehead[][14])
137 2 {
138 2 unsigned char i;
139 2 for(i=0;i< 4 ;i++)
140 2 ShowLine((lin+i*20),column1,pagehead[i]); //1行8个汉字,16字节
141 2 }
142 2 /*--------------------------------------------------------------------------------------------------
---*/
143 2 //反显一个字符
144 2 //lin:行(0-7), column: 列(0-15)
145 2 /* void ReverseShowChar(unsigned char lin,unsigned char column)
146 2 {
147 2 unsigned char i;
148 2 unsigned char dat;
149 2 unsigned int StartAddr;
150 2 StartAddr=lin*LineChar +column; //定位起始行
151 2 for(i=0;i<16;i++)
152 2 {
153 2 OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8),
C51 COMPILER V7.50 MAIN 12/30/2008 11:47:53 PAGE 4
154 2 0x24); //set address
155 2 OutPortCom1( 0xc5 ); //数据一次读,地址不变
156 2 dat=InPortData(); //读入数据
157 2 dat=~dat; //取反
158 2 OutPortCom2( dat, 0xc4); //送回
159 2 StartAddr=StartAddr+ LineChar;
160 2 }
161 2 }
162 2
163 2 /*--------------------------------------------------------------------------------------------------
---*/
164 2 //反显一个汉字
165 2 //lin:行(0-7), column: 列(0-15)
166 2 /* void ReverseShowHZ(unsigned char lin,unsigned char column)
167 2 {
168 2 ReverseShowChar(lin,column);
169 2 ReverseShowChar(lin,column+1);
170 2 }
171 2 /*--------------------------------------------------------------------------------------------------
---*/
172 2 //反显一行汉字
173 2 //lin:行(0-7)
174 2 /* void ReverseShowLine(unsigned char lin)
175 2 {
176 2 unsigned char column;
177 2 for(column=0; column< ColumnChar; column++) ReverseShowChar(lin,column);
178 2 }
179 2
180 2 //////////////////////////////////////////////////////////////////////////////////////
181 2 void ShowPicture(unsigned char Startline,unsigned char
182 2 Startcolumn,unsigned char LineWidth,unsigned char ColumnWidth,unsigned int
183 2 address)
184 2 {
185 2 unsigned char i,j;
186 2 unsigned int StartAddr;
187 2 StartAddr=Startline*LineChar + Startcolumn; //定位起始位置
188 2 for(i=0;i<ColumnWidth;i++)
189 2 {
190 2 OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8),
191 2 0x24); //set address
192 2 /*240x128液晶T6963控制器驱动程序(C51)-P3
193 2 240x128液晶T6963控制器驱动程序(C51)-P3
194 2 作者:佚名 51单片机来源:不详 点击数:548 更新时间:2007-8-4
195 2
196 2 for(j=0;j<LineWidth;j++)
197 2 {
198 2 OutPortCom2( CBYTE[address + i*LineWidth+ j ], 0xc0);
199 2 }
200 2 StartAddr=StartAddr + LineChar;
201 2 }
202 2 }
203 2 ////////////////////////////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////
204 2 /////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -