新手上路
- 积分
- 25
- 金钱
- 25
- 注册时间
- 2016-5-22
- 在线时间
- 4 小时
|
1金钱
在移植某液晶的时候用到8位并口,向ODR寄存器赋值,结果始终不对。
程序首先是对8位并口数据进行倒序,然后赋值给u16的data,对data左移8位,赋值给ODR,结果低8位居然不是0,ODR的值也是乱的
程序如下,各位大神求指点。。。
[mw_shl_code=c,true]void LCD_Write(GPIO_TypeDef* GPIOx, uint8_t PortVal)
{
u8 temp=0;
uint16_t data=0;
//8λÊý¾Ý½øÐе¹Ðò
temp=(PortVal^(PortVal>>1))&0x55;
PortVal=PortVal^temp^(temp<<1);
temp=(PortVal^(PortVal>>2))&0x33;
PortVal=PortVal^temp^(temp<<2);
temp=(PortVal^(PortVal>>4)&0x0f);
PortVal=PortVal^temp^(temp<<4);
data|=PortVal;
GPIOx->CRH|=0x33333333;
data<<=8;
GPIOx->ODR=data;
}[/mw_shl_code]
|
|