用了很久的mc8051,一直以为mc8051的外扩接口有问题,只能写出不能读入。
尝试了很多种方案,包括外部接口使能打一拍读入都试了,都不行。
突然发现数据读入一直都用的assign,换成always@*会是什么样,居然TMD好使了。原始代码
// assign xdata_o =ramx_en ? ramx_data:
// portA_en_d? portA_i_d: //portA_i不用打一拍,因为它是有外部提供的,如果接按键的话,持续值肯定超过一个总线时钟
// portA_en ? portA_i:
// xdata_o;
换成
always@(*)
begin
if(ramx_en) xdata_o=ramx_data;
//if(portA_en)xdata_o=portA_i; //此处不起作用,删掉
if(portA_en_d)xdata_o=portA_i;
end
注:portA_en_d为portA_en在总线时钟上的打一拍
居然能正常运行了