|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
我用44b0的板子驱动淘宝上27块钱的那个液晶,I/O口太慢所以用总线方式,本人又是菜鸟,就下了一个程序防用,但是一直搞不定。LCD_Reg=Reg可以,但是到了LCD_Data=Data的时候仿真就死在那里了,请大虾帮帮忙看一下是怎么回事啊!!!
#define rPCONC (*(volatile unsigned *)0x1d20010)
#define rPDATC (*(volatile unsigned *)0x1d20014)
#define rPUPC (*(volatile unsigned *)0x1d20018)
#define rPCONB (*(volatile unsigned *)0x1d20008)
#define rPDATB (*(volatile unsigned *)0x1d2000c)
#define LCD_Reg_Addr (0x0A000000|(0<<1))
#define LCD_DATA_Addr (0x0A000000|(1<<1))
#define LCD_Reg (*(volatile unsigned int *)LCD_Reg_Addr)
#define LCD_Data (*(volatile unsigned int *)LCD_DATA_Addr)
void BUS_init()
{
rPCONC &= ~(3<<10); //
rPCONC |= (1<<10);//PC5配置为输出
rPUPC &= ~(1<<5);
rPCONB |= (1<<9);//PB9配置为nGCS4
}
static __inline void Wr_LCD_Data8(unsigned char Data)
{
LCD_Data =Data;
}
static __inline void Wr_LCD_Data16(unsigned int Data)
{
LCD_Data =(unsigned char)(Data>>8);
LCD_Data =(unsigned char)Data;
}
static __inline void Wr_LCD_Reg(unsigned char Reg)
{
LCD_Reg =Reg;
}
static __inline void Wr_LCD_Reg8(unsigned char Reg_Addr,unsigned char Data)
{
LCD_Reg =Reg_Addr;
LCD_Data =Data;
}
static __inline void Wr_LCD_Reg16(unsigned char Reg_Addr,unsigned int Data)
{
LCD_Reg =Reg_Addr;
LCD_Data =(unsigned char)(Data>>8);
LCD_Data =(unsigned char)Data;
}
int LCD_Init(void)
{
rPDATC|=(1<<5);
LCD_Delay(1000);
rPDATC&=~(1<<5);
LCD_Delay(40000);
rPDATC|=(1<<5);
LCD_Delay(1000); //LCD Reset.
Wr_LCD_Reg(0xA1);
delay_us(16);
Wr_LCD_Data8(0x00);
delay_us(90);
Wr_LCD_Reg(0xA0);
就执行完Wr_LCD_Reg(0xA1);到Wr_LCD_Data8(0x00);一句的时候就死了,请问是怎么回事啊??? |
|