在使用PROTEUS进行仿真时,各元件的引脚,可以使用导线直接连接,也可以使用标号进行连接,还可以使用“总线”进行连接。
在PROTEUS零件库中,有些零件的引脚,就是使用“总线”形式的,如8031、8155、8255等。
那么,在这种零件的外部,就必须使用“总线”进行连接,而在总线上,也必须加上“总线形式”的标号,只有做了这样标记,该总线才能和零件内部的线路连通上。
下图就是51单片机和8155进行连接,为单片机系统扩充三个并行接口的电路图。
图中的8155是作为片外RAM来使用的,明确了地址之后,再写出驱动程序,是很简单事。
先进行初始化,之后,通过PA、PB输出两个字节的数据,全部代码如下:
COMMANDEQU7F00H
PORTAEQU7F01H
PORTBEQU7F02H
PORTCEQU7F03H
ORG0000H
LJMPMAIN
ORG0080H
MAIN:
MOVDPTR,#COMMAND
MOVA,#00000011B;PA方式0输出,PB方式0输出
MOVX@DPTR,A
INCDPTR;转到PA
MOVA,#00110011B;数据
MOVX@DPTR,A;输出
INCDPTR;转到PB
MOVA,#00001111B;数据
MOVX@DPTR,A;输出
LJMP$
END
原问题如下:
【问】89C51单片机扩展8155芯片 proteus仿真 七段数码管不显示
程序如下:
ORG0000H
COMMAND EQU 7F00H
PORTA EQU 7F01H
PORTB EQU 7F02H
PORTC EQU 7F03H
LJMPMAIN
ORG0080H
MAIN:
MOVSP,#0030H
MOVDPTR,#COMMAND
MOVA,#00000011B;设置为方式0且PA口输出,PB口输出
MOVX@DPTR,A
INCDPTR
MOVA,#00110011B;测试共阳极7段数码管
MOVX@DPTR,A
INCDPTR
MOVA,#00001111B
MOVX@DPTR,A
LJMP$
END
但是仿真时6个七段数码管都没有显示,不解。望指教
【答】
电路画的不仔细,总线的标号,都没有标上。
在粗蓝线上,应该标注AD[0..7]、PA[0..7]......,
这样,总线,才能和8255器件内部的标号对应连接上。
你看看PROTEUS软件所带的例子,就知道了。
按照楼主的电路,调整了零件布局,增加了总线标号;
程序一个字也不改,楼主所期望的输出,就都出来了。
请看下8155的使用方法图。