注意8155的控制命令字寄存器只写不读,状态字寄存器只读不写,它们共用一个地址。
- R _' L: y; k6. 8155的基本用法:" q& X; C9 T* k' h
① 可扩展256字节片外RAM# x' H; H) h9 o
IO/M引脚低电平时,只能用作片外RAM扩充,其低8位地址为00H~FFH,共256字节,对其读写时用MOVX指令。1 j) K2 B- W/ w. f2 B; @% n
② 作扩展I/O口使用4 o7 ^) s0 v9 d$ s3 w& p
IO/M引脚高电平时,可根据命令字的规定从A、B、C口输入输出,共有20条输入输出线,
9 U# _! Z2 y9 p, F. \5 S③ 扩充一个14位定时器计数器
$ T* J7 j$ T+ E4 Q: H b8155提供一个14位减1计数器,它的功能主要用于计数,从TIMER IN端输入计数脉冲,计数满时由TIMER OUT输出脉冲或方波。
4 T7 [& V2 b$ R: d" e3 z使用步骤:
! _) ^% u$ E& v$ A; Q) u3 \& r: Y写入控制命令字的D7、D6位控制启停。 Y. V! u2 K! z5 c9 u( a& ]7 W
写入计数长度:端口地址04H的8位为计数器的低8位
3 ^/ e; A' o% _2 d9 R0 T端口地址05H的低6位为计数器的高6位,共14位。( O4 l) X4 i# H, W" D. h
05H的高2位确定当计数器时减到0时的输出方式。
, J0 G! y, P& `/ [% h6 O7 Q/ E1 J8 _6 U2 ?1 C: w
8155片内带有地址锁存器,可在ALE的下降沿锁存地址,不必在外部另接锁存器。$ I( r/ z8 o+ T
由上图得到8155各端口的地址为:
+ ]8 h% o; A9 {, l( F$ g- f: eP2.7 = 0 ,片选CE有效;P2.0 = 1,则为端口地址' I% U1 a9 y) Z) m2 x1 J
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0
+ }7 ~* F/ p4 h" G! H
3 b9 B. x& @2 m( A( D! R0 m0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 命令状态口7F00H; x- a$ Q3 p6 }* K- T
( c0 Q2 R( Z3 d& J$ M0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 PA口 7F01H5 a3 `$ n& M& o: J) m$ r' ^& e
0 B( |4 J. u! e9 }0 F0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 PB口 7F02H
4 P- l' r- X$ l$ b
, i+ k9 ]- n: l: K4 B( \0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 PC口 7F03H
$ c% [3 C" f/ e+ L
% B0 M+ z8 x* e0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 定时器低位7F04H- M* R( y' ?$ s1 c
2 \* M: I" w( K: T l4 C0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 定时器高位 7F05H
/ o2 G3 q- `' c5 y( f H, l( B$ G; X. c8 d+ s: N# U% w+ l
P2.7 = 0,片选CE = 0,且P2.0 = 0则为8155片内RAM地址:4 e& T! e R. Z- N
7E00H~7EFFH 共256字节。; T/ h2 X/ B% p7 H/ Q7 I1 `! G
8155的基本操作软件:
( V! [) `3 ?2 ]9 v( @, Y①I/O口及8155RAM的操作软件:
) ^$ U8 J/ |( s, qMOV DPTR , #7F00H ;选命令状态口
5 b& B6 E9 M- I. ZMOV A, #0C2H ;送命令字 1 1 0 0 0 0 1 0
1 b$ Y) _! w/ B. yMOVX @DPTR , A ;A口输入、B口输出、C口输入
3 C, e3 e7 }9 { T6 x: H! fMOV DPTR , #7F01H ;选A口1 ?/ }* i+ [0 ?1 T! |
MOVX A , @DPTR ;从A口输入数据# U6 Y5 x0 ?+ G- G, W
MOV DPTR , #7E30H ;选8155RAM的30H单元6 g' v u! M2 F9 W- E4 u
MOVX @DPTR , A ;将A口输入的数据存入30H单元, p1 Z; ?4 S' H& e
MOV DPTR , #7F02H ;选B口# F& P5 S9 |+ x3 M
MOVX @DPTR , A ;将A口输入的数据转从B口输出
& L" I" |# M: @3 ?! I②计数器的软件:5 w. M& c: {' y
MOV DPTR , #7F04H ;选计数器低8位
0 U( }; N# V3 ^0 ~1 ~0 M+ lMOV A , #18H 2 L7 ?3 ]+ k8 L' T' f3 i
MOVX @DPTR , A ;计数常数24装入计数器低8位: C5 ]6 `7 M& h4 G% Z: Z
1NC DPTR ;选计数器高位6 _1 \( } i0 u/ Y1 Y) v& `
MOV A, #40H. a. }% O+ Y/ |
MOVX A ,@DPTR ; 高2位01选择输出方式为连续方波4 [. h; e% F3 u3 L: i6 p: t
其低6位为计数器的高6位为00H
# z" T# x+ O9 b1 z0 S1 H$ {- S, c" N" p1 _2 k% [
|