我的89C52接了外部数据存储器sst29sf040(总线接法,其中数据是从P0口直接输出),而外部接的adc0816,8279,8251等是通过总线方式与89C52相接的(其中数据是从与P0口相连的74245输出);现在我还要接一个lcd,是通过I/0口方式工作的,非总线形式,数据和外部数据存储器sst29sf040一样直接从P0口输出;请问各位朋友我这样规划电路,会出现P0口上的数据冲突吗?--这是我曾经发的贴子,各位大虾门都说应该没问题,可是实验验证好象不行啊 看看这是我写的那段主函数中的程序,其中包含lcd操作和8251(总线方式)的操作,当用示波器测试时,8251的读写信号只有单个波形。如果不加上lcd,8251波形是连续的,且是正确的,大虾能否帮我看看主程序是这样写正确吗 void main(void) { uchar code *h; initmcu(); //8251 function COM8251 = 0x00; DAT8251 = 0x00; DAT8251 = 0x00; COM8251 = 0x40;//以上为8251复位部分 wait(11,82); COM8251 = 0x4e;//9600baud,1停止位,无校验,8位数据,X16 wait(11,82); COM8251 = 0x35; wait(11,82); //lcd lcdwrite(1,0x3e); lcdwrite(1,0xc0); lcdwrite(1,0x3f); clrlcd(0); while(1) { lcdwrite(1,0X3e);//lcd写 h = X1; dis_word(1,5,h);//lcd显示一个字 dis_word(1,0,h); h = X7; dis_word(0,0,h); lcdwrite(1,0x3f); wait(256,256);wait(256,256); //8251 DAT8251 = data_temp[m];//写 temp[m] = DAT8251; m++; if (m==4) { m = 0; } wait(256,256);wait(256,256);wait(256,256); } }
|