kissme 发表于 2006-9-23 21:48:16

单片机与8155 之间的数据是怎样传送的?---[请教]

<P>有谁知道单片机与8155 之间的数据是怎样传送的吗?8155做为单片机的I/O口数据扩展</P>
<P>,如果单片机要扩展40个通道请问数据是怎样传送的</P>

黄一钫 发表于 2006-9-23 23:03:56

Re: 单片机与8155 之间的数据是怎样传送的?---[请教]

注意8155的控制命令字寄存器只写不读,状态字寄存器只读不写,它们共用一个地址。
6.        8155的基本用法:
①        可扩展256字节片外RAM
IO/M引脚低电平时,只能用作片外RAM扩充,其低8位地址为00H~FFH,共256字节,对其读写时用MOVX指令。
②        作扩展I/O口使用
IO/M引脚高电平时,可根据命令字的规定从A、B、C口输入输出,共有20条输入输出线,
③        扩充一个14位定时器计数器
8155提供一个14位减1计数器,它的功能主要用于计数,从TIMER IN端输入计数脉冲,计数满时由TIMER OUT输出脉冲或方波。
使用步骤:
写入控制命令字的D7、D6位控制启停。
写入计数长度:端口地址04H的8位为计数器的低8位
端口地址05H的低6位为计数器的高6位,共14位。
05H的高2位确定当计数器时减到0时的输出方式。

8155片内带有地址锁存器,可在ALE的下降沿锁存地址,不必在外部另接锁存器。
由上图得到8155各端口的地址为:
P2.7 = 0 ,片选CE有效;P2.0 = 1,则为端口地址
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0

0   1   1   1   1   1   1    100000000 命令状态口7F00H

0   1   1   1    1   1   1    100000001   PA口   7F01H

0   1   1   1    1   1   1    100000010   PB口   7F02H

0   1   1   1    1   1   1    100000011   PC口   7F03H

0   1   1   1    1   1   1    100000100 定时器低位7F04H

0   1   1   1    1   1   1    100000101 定时器高位 7F05H

P2.7 = 0,片选CE = 0,且P2.0 = 0则为8155片内RAM地址:
7E00H~7EFFH    共256字节。
8155的基本操作软件:
①I/O口及8155RAM的操作软件:
MOVDPTR ,#7F00H   ;选命令状态口
MOVA, #0C2H         ;送命令字 11000010   
MOVX@DPTR , A      ;A口输入、B口输出、C口输入
MOVDPTR , #7F01H      ;选A口
MOVXA , @DPTR      ;从A口输入数据
MOVDPTR , #7E30H      ;选8155RAM的30H单元
MOVX@DPTR , A      ;将A口输入的数据存入30H单元
MOVDPTR , #7F02H      ;选B口
MOVX@DPTR , A      ;将A口输入的数据转从B口输出
②计数器的软件:
MOVDPTR , #7F04H      ;选计数器低8位
MOVA , #18H            
MOVX@DPTR , A      ;计数常数24装入计数器低8位
1NCDPTR               ;选计数器高位
MOVA, #40H
MOVXA ,@DPTR      ; 高2位01选择输出方式为连续方波
                        其低6位为计数器的高6位为00H

syw开门造车 发表于 2006-9-24 04:37:58

Re: 单片机与8155 之间的数据是怎样传送的?---[请教]

楼主网友好!

你说的:“单片机要扩展40个通道……。”

能否告诉一下,这40个通道端口具体要做什么?

也许有好办法帮你解决点实际问题。

syw   060924---04.37

dzw1988 发表于 2010-6-19 22:42:18

给你个链接吧 http://liuyunfeng484.blog.163.com/blog/static/6683171520096219621632/
页: [1]
查看完整版本: 单片机与8155 之间的数据是怎样传送的?---[请教]