注意8155的控制命令字寄存器只写不读,状态字寄存器只读不写,它们共用一个地址。" e! D& s7 Y8 l' K6 U: A8 d
6. 8155的基本用法:
2 H) l1 R p9 P8 u( o① 可扩展256字节片外RAM; F" U+ e9 }' P9 q
IO/M引脚低电平时,只能用作片外RAM扩充,其低8位地址为00H~FFH,共256字节,对其读写时用MOVX指令。% p, }, q5 H* k. |( |8 M
② 作扩展I/O口使用
U! Y- c; P( w. FIO/M引脚高电平时,可根据命令字的规定从A、B、C口输入输出,共有20条输入输出线,
* s* N* Q+ {/ ^* j& ]③ 扩充一个14位定时器计数器
9 x! n3 Q* t3 A$ M8155提供一个14位减1计数器,它的功能主要用于计数,从TIMER IN端输入计数脉冲,计数满时由TIMER OUT输出脉冲或方波。9 H' h# M, E {8 r( y) O" c- P+ A3 C# ~
使用步骤:
/ y; `. `* d v9 |" {" E% ~写入控制命令字的D7、D6位控制启停。1 T& l$ Z4 u8 L3 R+ M2 {" h
写入计数长度:端口地址04H的8位为计数器的低8位
1 {+ X- B. F7 n/ e6 {5 I端口地址05H的低6位为计数器的高6位,共14位。
/ f) K @ T7 y1 ]; n0 T: a& K4 ]05H的高2位确定当计数器时减到0时的输出方式。
0 u. C2 g4 Q6 G* d( t8 J7 n; n" X% ^7 u3 g
8155片内带有地址锁存器,可在ALE的下降沿锁存地址,不必在外部另接锁存器。1 |9 U5 j) ~4 M
由上图得到8155各端口的地址为:
5 u* R" B" d0 U/ |- H, g0 |P2.7 = 0 ,片选CE有效;P2.0 = 1,则为端口地址
3 b |% }( }" e2 E) [P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0 / _! ?8 w: U d# p
0 y f6 b6 v6 Y$ N7 m0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 命令状态口7F00H& h( B. N' @; c4 K' U
! @. f+ R$ C2 }6 i0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 PA口 7F01H) S! N4 f! B* t
- X1 m( E' k# K3 s; c& L. X2 K7 V
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 PB口 7F02H
' d/ r9 L! h, p/ J. k1 W9 h# S/ o B3 |2 h) m1 m
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 PC口 7F03H
1 Q/ L/ {3 z& O2 X# _
3 s5 }& I9 W$ ?! [0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 定时器低位7F04H! d* r' ^; q* D- s( B. a2 ?9 k) Y
: r& I% M1 ? r
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 定时器高位 7F05H7 O8 j4 c6 F# R
1 S* k* G- r: m t0 NP2.7 = 0,片选CE = 0,且P2.0 = 0则为8155片内RAM地址:! w' R3 n2 C% t' s! W0 s
7E00H~7EFFH 共256字节。8 X' }" Y( J( P; P% ^; p* i
8155的基本操作软件:
0 M8 }0 d' J$ W" N+ e①I/O口及8155RAM的操作软件:$ V! U4 L7 v( r6 i. H9 J, Z" \# X7 L
MOV DPTR , #7F00H ;选命令状态口% e. t J0 B6 G6 G
MOV A, #0C2H ;送命令字 1 1 0 0 0 0 1 0 ' U, K/ g9 d$ r& B
MOVX @DPTR , A ;A口输入、B口输出、C口输入
9 \& p! e* d( \4 A ZMOV DPTR , #7F01H ;选A口, u1 i1 r- ^! S6 E, r
MOVX A , @DPTR ;从A口输入数据7 v6 r, n9 K5 m( S$ r( ]+ ?
MOV DPTR , #7E30H ;选8155RAM的30H单元& s. Q u4 N J: N! K
MOVX @DPTR , A ;将A口输入的数据存入30H单元
% J: |$ H( G4 Y8 E4 SMOV DPTR , #7F02H ;选B口
5 U( K3 b- V1 @MOVX @DPTR , A ;将A口输入的数据转从B口输出
2 G) W1 _3 x2 p- x4 H②计数器的软件:5 R0 R, h1 C7 Y) ?' {2 Y
MOV DPTR , #7F04H ;选计数器低8位1 S7 B) s- B( |. o! f
MOV A , #18H 8 d4 a2 |, A; D7 F* s
MOVX @DPTR , A ;计数常数24装入计数器低8位
6 k9 I+ E0 l' h1NC DPTR ;选计数器高位$ Z3 ^# `8 ~- x( Q/ M( |5 w) B# {& W
MOV A, #40H- x% Y. D, p+ h' }" k* R
MOVX A ,@DPTR ; 高2位01选择输出方式为连续方波0 q1 F% e8 F1 v; E
其低6位为计数器的高6位为00H 1 R& X. D2 B( m' r
: l, H0 {4 d4 G0 d" {& z |