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