指令出错的问题
下面这段程序 是向12864液晶写如一段汉字 可是在编译到
flag="XBYTE"[comre]&0x80;
XBYTE[comwr]=command;
时 系统总提示语法错误 因为本人是做软件的 现在刚转硬件 所以不是很懂 哪位高手能指下
这是什么错误 XBYTE 指令如何使用
#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char
#define datawr 0E8FFH //写数据通道
#define comwr 0E0FFH //写控制命令通道
#define datare 0EFFFH //读数据通道
#define comre 0E7FFH //读忙状态
uchar code disp_data[]={"二次矩阵的可逆转换"
"测试程序"};
void Ini12864();
void write_command(uchar command);
void write_page(uchar data_add);
void read_page(uchar data_add);
void delays(uchar cont);
void main()
{
while(1)
{
Ini12864(); //初始化12864
write_page(0); //写入一页数据
read_page(0x30); //读出一页数据到内部RAM
delays(2); //延时2s
write_page(64); //写入下一页数据
delays(2); //延时2s
}
}
//初始化12864子程序
void Ini12864()
{
write_command(0x30); //功能设定控制字
write_command(0x0c); //显示开关控制字
write_command(0x01); //清除屏幕控制字
write_command(0x06); //进入设定点控制字
}
//写控制命令子程序
void write_command(uchar command)
{
bit flag="1"; //12864空闲标志位
while(flag) //检查12864是否空闲
flag="XBYTE"[comre]&0x80;
XBYTE[comwr]=command; //空闲传送控制字
}
//写一页子程序
void write_page(uchar data_add)
{
bit flag="1"; //12864空闲标志位
uchar num="64"; //64个循环,连续写入32个汉字或是64个西文字符
write_command(0x80);
for(;num>0;num--)
{
while(flag) //检查12864是否空闲
flag="XBYTE"[comre]&0x80;
XBYTE[datawr]=disp_data[data_add++]; //空闲传送数据
}
}
//读一页子程序
void read_page(uchar data_add)
{
bit flag="1"; //12864空闲标志位
uchar num="64"; //64个循环,连续写入32个汉字或是64个西文字符
write_command(0x80);
for(;num>0;num--)
{
while(flag) //检查12864是否空闲
flag="XBYTE"[comre]&0x80;
DBYTE[data_add++]=XBYTE[datare]; //空闲传送数据
}
}
//延时cont秒子程序
void delays(uchar count)
{
unsigned char h,i,j,k;
do
{
for(h=5;h>0;h--)
for(i=4;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--);
}while(--count);
}
[解决办法]
进来了就留个脚印吧
[解决办法]
去掉XBYTE外边的双引号。
[解决办法]
XBYTE 是这个样的
#define XBYTE ((unsigned char volatile xdata *) 0)
你是搞软件的这个肯定能看懂。
[解决办法]
XBYTE两边的引号去掉。其他应该就pass了