注意8155的控制命令字寄存器只写不读,状态字寄存器只读不写,它们共用一个地址。$ D& r: l* A/ x g1 w2 f, r4 T
6. 8155的基本用法:
4 q2 f" q) T: l) |, i @① 可扩展256字节片外RAM5 W4 Q2 E% I, L6 S0 _
IO/M引脚低电平时,只能用作片外RAM扩充,其低8位地址为00H~FFH,共256字节,对其读写时用MOVX指令。8 d3 i8 I# a- `; H, @
② 作扩展I/O口使用) ~) S8 v: u4 Q, K) U6 S6 O
IO/M引脚高电平时,可根据命令字的规定从A、B、C口输入输出,共有20条输入输出线,. j+ ?8 b% {! ]
③ 扩充一个14位定时器计数器
6 L9 l- `, [6 h8155提供一个14位减1计数器,它的功能主要用于计数,从TIMER IN端输入计数脉冲,计数满时由TIMER OUT输出脉冲或方波。
^- H; n# ?1 F$ J2 g使用步骤:. z0 x i4 p* y/ s
写入控制命令字的D7、D6位控制启停。4 V. D0 P% s- U2 d
写入计数长度:端口地址04H的8位为计数器的低8位' R+ ^$ W' t$ ]1 O3 ]
端口地址05H的低6位为计数器的高6位,共14位。
2 t0 X/ f* T# z. N5 U. M. m05H的高2位确定当计数器时减到0时的输出方式。
0 o2 D/ b2 N* r3 D( f2 ?' g! f' b4 k: ?6 {9 C: P7 d$ E1 l3 v
8155片内带有地址锁存器,可在ALE的下降沿锁存地址,不必在外部另接锁存器。9 c# Z+ l: u6 b6 j( X( h
由上图得到8155各端口的地址为:& o2 c- T/ F* Z$ b$ j& ^# p8 u1 `
P2.7 = 0 ,片选CE有效;P2.0 = 1,则为端口地址
3 m! m4 N0 o1 J7 p1 r' ~P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0
! W) f. `3 u! Y! Y1 [% m% |& s+ k
3 j! V4 F0 o8 v d0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 命令状态口7F00H
0 N3 j; F/ E u: Z' n. l4 u( N5 Y7 G6 T( A% K6 h: I& @
0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 PA口 7F01H
1 p7 {5 w8 O5 K* h7 W% W
Z$ W i4 y! D: i4 x0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 PB口 7F02H
. n8 e' G; |" ^. x% g: S( k+ H7 d$ Y
1 z6 L" O4 U8 O" m0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 PC口 7F03H
k: l2 V8 u! d+ t
" u- h5 F3 Y) q. A! q( |0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 定时器低位7F04H- a( R9 E$ b( q; Y
! E& V/ \% C+ b, H' p3 e4 a
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 定时器高位 7F05H( Q7 c+ z& f4 n* i p
5 h: k" l6 E) A3 |; X
P2.7 = 0,片选CE = 0,且P2.0 = 0则为8155片内RAM地址:/ h+ J! V0 i6 g9 ~& O; @
7E00H~7EFFH 共256字节。! }- M7 @% c" j0 G+ x$ k9 q8 S
8155的基本操作软件:6 E- e# D, b9 Z) {
①I/O口及8155RAM的操作软件:
% R9 z% r% h& `1 I, ^MOV DPTR , #7F00H ;选命令状态口* P1 C+ g/ B+ j: I5 \1 I
MOV A, #0C2H ;送命令字 1 1 0 0 0 0 1 0
% Y, L" |+ Q+ jMOVX @DPTR , A ;A口输入、B口输出、C口输入" ]- y& I7 d. M8 Y7 y' o5 i" D3 ~
MOV DPTR , #7F01H ;选A口
1 r: M+ V0 F" I; H8 bMOVX A , @DPTR ;从A口输入数据
7 c7 L& E* c8 Z4 FMOV DPTR , #7E30H ;选8155RAM的30H单元
: P0 M6 \6 E. x( yMOVX @DPTR , A ;将A口输入的数据存入30H单元7 n- c# H& D0 R* v: d
MOV DPTR , #7F02H ;选B口1 B; w2 R+ K% g; o6 @
MOVX @DPTR , A ;将A口输入的数据转从B口输出* x, Y E* H$ Z" `7 p _0 K
②计数器的软件:- R6 p3 i2 @$ h# P
MOV DPTR , #7F04H ;选计数器低8位" {" j+ a# q, k9 p- v3 N. o
MOV A , #18H
+ _7 `! v. ^4 X( C0 l1 Y% A) w* CMOVX @DPTR , A ;计数常数24装入计数器低8位) _+ t/ i9 J6 ]( o3 s5 X
1NC DPTR ;选计数器高位
8 y5 h9 A$ V* I9 q% m! dMOV A, #40H
5 @7 O0 H. v# D6 W0 }" G3 IMOVX A ,@DPTR ; 高2位01选择输出方式为连续方波
, i [2 o' p7 E9 q 其低6位为计数器的高6位为00H 4 e0 p$ ]" B0 O9 J2 J
?' N( W7 j- i2 f" ]
|