直接对P2口赋值跟将数据拆分后重组有何区别? 求解
sbit LCD_DB7 = P2^7;sbit LCD_DB6 = P2^6;
sbit LCD_DB5 = P2^5;
sbit LCD_DB4 = P2^4;
sbit LCD_DB3 = P2^3;
sbit LCD_DB2 = P2^2;
sbit LCD_DB1 = P2^1;
sbit LCD_DB0 = P2^0;
sbit LCD_EN= P3^2;
sbit LCD_RW= P3^1;
sbit LCD_RS= P3^0;
void Lcd_Bus(unsigned char Data)
{
LCD_DB7 = Data&0x01;
LCD_DB6 = Data&0x02;
LCD_DB5 = Data&0x04;
LCD_DB4 = Data&0x08;
LCD_DB3 = Data&0x10;
LCD_DB2 = Data&0x20;
LCD_DB1 = Data&0x40;
LCD_DB0 = Data&0x80;
}
请教下这样调用Lcd_Bus() 跟直接对P2口赋值有什么区别?
仿真中调用Lcd_Bus() 不行能显示,直接对P2口赋值则正常。
由于硬件电路上数据总线不是在同一组端口上的,所以需要上面程序那样做。 求解。 没人知道么~~~ 几乎不能看明白你想说什么. 没有使用过sbit, 但我猜,sbit xxx = yyy 是对xxx赋值为yyy,而不是把xxx绑定在yyy上. 下次再对xxx赋值也就不影响yyy了 本帖最后由 shenrongze 于 2014-3-5 11:02 编辑
albert_w 发表于 2014-3-5 10:21
几乎不能看明白你想说什么. 没有使用过sbit, 但我猜,sbit xxx = yyy 是对xxx赋值为yyy,而不是把xxx绑定在yy ...
呀。。好久没写程序了,难道是我弄错了么,但我实验对Lcd_Bus()送数据是正常的呀。
先说下我们硬件,
LCD_DB7 = P4^6
LCD_DB6 = P4^5
LCD_DB5 = P4^4
LCD_DB4 = P2^7
LCD_DB3 = P2^6
LCD_DB2 = P2^5
LCD_DB1 = P2^4
LCD_DB0 = P2^3
由于LCD的数据总线不是连接在单片机上的同一组端口,所以写了个Lcd_Bus(),通过测试随便送一组数据到Lcd_Bus()是正常的,但是实际上LCD不能显示。仿真没有P4口,所以我就在P2口测试,直接把数据送给P2可以显示,通过Lcd_Bus()就不行 本帖最后由 xiakang 于 2014-3-5 11:20 编辑
Data的第0位赋给P2第7位,Data的第7位赋给P2第0位。比如Data是0x32,转化后P2为0x4C。你说有什么区别 xiakang 发表于 2014-3-5 11:19
Data的第0位赋给P2第7位,Data的第7位赋给P2第0位。比如Data是0x32,转化后P2为0x4C。你说有什么区别 ...
噢。。。。知道了,谢谢您~~
页:
[1]