单片机8952接2个8155,怎么解决地址问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 01:12:58
8952个2个8155的时候,怎么保证地址的问题。我用的线选法,现在发现问题了!P2.7接1号8155,P2.6接2号8155,不同时读两个8155时,1号8155地址起始为8000,2号8155的起始地址为4000,当8952同时对2个8155操作的时候,P2.6和P2.7都要为1,这样的话8952读的地址为C000了,2个8155的都读不到啊!大家给个建议
2个8155单独用的时候我知道,如果同时对2个操作呢?是不是会出问题 !
同时读两个是这样的。一个8155是保持状态用的。比如要某个二极管闪亮,而另一个8155是接键盘的。就是说这边有键按下,那边对应的二极管就反应!并且系统可同时受理多个键盘请求,就是说即要保持按下的那个对应灯的显示,还要扫描键盘输入,这样就造成同时使用两个8155的情况

我也认为放弃总线的方式要方便的多,因为你这并不是一个大型系统。
我建议你如果要扩展IO口,用74XX系列芯片扩展要方便的多,比方用
串行扩展方式(74HC164,74HC165,74HC595等)
并行扩展方式(74HC245,74HC573等)

不考虑总线问题,直接用软件控制P2.6和P2.7的高低电平,把两个8155都当成外设来用,在需要那个8155读取的时候选通那个就可以了。几个外设的时候,用总线反而很麻烦,地址还容易出错。

只能回答一次真不爽……你说的同时读取,你程序设计的时候也要有个先MOV,后MOV之分吧?不可能说你一个MOV能读进来两个8155的值。

除非你有两个CPU,不然怎么可能是同时读取8155并且还扫描键盘啊,在1ms以内的时间里面先扫描键盘,再读取8155,再干别的。李小龙在世他也不会分辨出那个先,那个后。本来CPU就是逐条指令运行的,肯定存在着先后顺序,不存在着同时的概念,楼主你要补充下别的知识啊……

我认为同时对2个操作是不可能的,指令是依次执行的,不可能同一时刻运行两条指令,即使在同一条指令中,各微操作也是按时序严格一步一步做。
其实我理解你所说的同时,是我们人的时间概念,但计算机在我们感觉“同时”的时间里,是分步做很多动作的。
一已之言,仅供参考。

为什么要把地址加上呢,多麻烦