在主程序中VIEWTECH_54(100,10,'d',1);发送一个字符,程序可以编译成功,如果发送2个及以上字符就报char const too long错误,请朋友们帮忙分析一下原因。谢谢!
#include<pic.h>
#define uint unsigned int
#define uchar unsigned char
#ifndef u8
#define u8 unsigned char
#endif
#ifndef u16
#define u16 unsigned int
#endif
#ifndef u32
#define u32 unsigned long
#endif
__CONFIG(0X1939);
void init();
void txbyte ( u8 Byte );
u8 recieve_byte ( void );
void tx8p (u8 *P,u8 Size);
void VIEWTECH_00();
void VIEWTECH_40(u16 FC,u16 BC);
void VIEWTECH_52(void);
void VIEWTECH_5E (void);
void VIEWTECH_5F_P(u8 PWM_T);
void VIEWTECH_5F();
void VIEWTECH_E0 (u8 Bode_Set,u8 Para1, u8 Para2);
void VIEWTECH_54(u16 X,u16 Y,u8 *P,u8 Size);
void VIEWTECH_98 (u16 X,u16 Y,u8 Lib_ID,u8 C_Mode,u8 C_Dots,u16 FC,u16 BC,u8 *P,u8 Size);
void main()
{
init();
// VIEWTECH_00();
// VIEWTECH_5E ();
VIEWTECH_52();
// VIEWTECH_5F();
VIEWTECH_54(100,10,'d',1);
while(1);
}
void init()
{
TRISA=0;
PORTA=0XFF;
TXSTA=0x24;
RCSTA=0X90;
SPBRG=25;
GIE=0;
PEIE=1;
RCIE=1;
}
/****************************************************************************
* 名 称: send_byte ( )
* 功 能: 串口发送单个字节
* 入口参数: 有
* 出口参数: 无
****************************************************************************/
void txbyte ( u8 Byte )
{
TXREG = Byte ;
while(!TRMT);
TRMT=0;
}
/****************************************************************************
* 名 称: recieve_byte ( )
* 功 能: 串口接收一个字节数据
* 入口参数: 无
* 出口参数: 有
****************************************************************************/
u8 recieve_byte ( void )
{
while(!RCIF);
RCIF=0;
return RCREG;
}
/****************************************************************************
* 名 称: tx8p ( )
* 功 能: 串口发送字符串,Size是字符串的长度
* 入口参数: 有
* 出口参数: 无
****************************************************************************/
void tx8p (u8 *P,u8 Size)
{
u8 i;
for(i=0;i<Size;i++)
txbyte(*(P+i));
}
/****************************************************************************
* 名 称: VIEWTECH_00()
* 功 能: 联机测试指令
* 入口参数: 无
* 出口参数: AA 00 OK_V*.* P1 P2 P3 Pic_ID CC 33 C3 3C
OK_V*.*,*.*是 SDW 系列的当前软件版本;
P1 是显示屏分辨率(具体参数请参考 0xE0 指令)
P2 是当前用户所设置的串口波特率;
P3 是触摸屏按键配置参数;
Pic_ID 是当前显示图片的 ID;
****************************************************************************/
void VIEWTECH_00()
{
txbyte(0xAA);
txbyte(0x00);
txbyte(0xCC);
txbyte(0x33);
txbyte(0xC3);
txbyte(0x3C);
}
/****************************************************************************
* 名 称: VIEWTECH_40()
* 功 能: 联机测试指令
* 入口参数: FC 前景色调色板
BC 背景色调色板
* 出口参数: 无
****************************************************************************/
void VIEWTECH_40(u16 FC,u16 BC)
{
txbyte(0xAA);
txbyte(0x40);
txbyte((FC>>8)&0xff);
txbyte(FC&0xff);
txbyte((BC>>8)&0xff);
txbyte(BC&0xff);
txbyte(0xCC);
txbyte(0x33);
txbyte(0xC3);
txbyte(0x3C);
}
/****************************************************************************
* 名 称: VIEWTECH_52()
* 功 能: 清屏
****************************************************************************/
void VIEWTECH_52(void)
{
txbyte(0xAA);
txbyte(0x52);
txbyte(0xCC);
txbyte(0x33);
txbyte(0xC3);
txbyte(0x3C);
}
/****************************************************************************
* 名 称: VIEWTECH_5E()
* 功 能: 关闭背光
****************************************************************************/
void VIEWTECH_5E (void)
{
txbyte(0xAA);
txbyte(0x5E);
txbyte(0xCC);
txbyte(0x33);
txbyte(0xC3);
txbyte(0x3C);
}
/****************************************************************************
* 名 称: VIEWTECH_5F()
* 功 能: 背光亮度调整
****************************************************************************/
void VIEWTECH_5F_P(u8 PWM_T)
{
txbyte(0xAA);
txbyte(0x5F);
if(PWM_T<0x63)
txbyte(PWM_T);
txbyte(0xCC);
txbyte(0x33);
txbyte(0xC3);
txbyte(0x3C);
}
/****************************************************************************
* 名 称: VIEWTECH_5E()
* 功 能: 背光打开最亮
****************************************************************************/
void VIEWTECH_5F()
{
txbyte(0xAA);
txbyte(0x5F);
txbyte(0xCC);
txbyte(0x33);
txbyte(0xC3);
txbyte(0x3C);
}
/****************************************************************************
* 名 称: VIEWTECH_E0()
* 功 能: 工作模式设置
******************************************************************************/
void VIEWTECH_E0 (u8 Bode_Set,u8 Para1, u8 Para2)
{
txbyte(0xAA);
txbyte(0xE0);
txbyte(Bode_Set);
txbyte(Para1);
txbyte(Para2);
txbyte(0xCC);
txbyte(0x33);
txbyte(0xC3);
txbyte(0x3C);
}
/*****************************************************************************
文本显示指令 VIEWTECH_54/55/6E/6F/98
54 -显示16X16点阵GBK扩展码字符串
55 -显示32X32点阵GB2312内码字符串
6E -显示12X12点阵GBK扩展码字符串
6F -显示24X24点阵GB2312内码字符串
98 -选择字库显示文本,可以使用用户自定义的字库,显示透明字体等效果
*****************************************************************************/
void VIEWTECH_54(u16 X,u16 Y,u8 *P,u8 Size) //void VIEWTECH_54/55/6E/6F (u16 X,u16 Y,u8 *strings,u8 Size)
{
u8 j;
txbyte(0xAA);
txbyte(0x54);
txbyte((X>>8)&0xff);
txbyte(X&0xff);
txbyte((Y>>8)&0xff);
txbyte(Y&0xff);
for(j=0;j<Size;j++)
{
txbyte(*(P+j));
}
txbyte(0xCC);
txbyte(0x33);
txbyte(0xC3);
txbyte(0x3C);
}
void VIEWTECH_98 (u16 X,u16 Y,u8 Lib_ID,u8 C_Mode,u8 C_Dots,u16 FC,u16 BC,u8 *P,u8 Size)
{
u8 j;
txbyte(0xAA);
txbyte(0x98);
txbyte((X>>8)&0xff);
txbyte(X&0xff);
txbyte((Y>>8)&0xff);
txbyte(Y&0xff);
txbyte(Lib_ID);
txbyte(C_Mode);
txbyte(C_Dots);
txbyte((FC>>8)&0xff);
txbyte(FC&0xff);
txbyte((BC>>8)&0xff);
txbyte(BC&0xff);
for(j=0;j<Size;j++)
{
txbyte(*(P+j));
}
txbyte(0xCC);
txbyte(0x33);
txbyte(0xC3);
txbyte(0x3C);
}
|
|