注意8155的控制命令字寄存器只写不读,状态字寄存器只读不写,它们共用一个地址。
+ o. M1 z- C# V w6. 8155的基本用法:4 q Z. m2 T. ?4 ]& \
① 可扩展256字节片外RAM9 v& n- o" K( c5 x
IO/M引脚低电平时,只能用作片外RAM扩充,其低8位地址为00H~FFH,共256字节,对其读写时用MOVX指令。
\0 r. W7 f0 M, @( x# T) I② 作扩展I/O口使用
1 G6 ~& \3 w& I& J+ S0 E" yIO/M引脚高电平时,可根据命令字的规定从A、B、C口输入输出,共有20条输入输出线, A z! t* i) A
③ 扩充一个14位定时器计数器3 s+ C K; P% R, u C& z' y
8155提供一个14位减1计数器,它的功能主要用于计数,从TIMER IN端输入计数脉冲,计数满时由TIMER OUT输出脉冲或方波。
6 c8 B7 p+ i+ h/ X/ j: L使用步骤:% J! r/ K# x0 u& o' {
写入控制命令字的D7、D6位控制启停。+ ]: ~* Z7 t: I# G2 s' j* V/ b
写入计数长度:端口地址04H的8位为计数器的低8位3 T& A2 H3 L6 [3 `% s3 G% t
端口地址05H的低6位为计数器的高6位,共14位。
$ Z# x& J' D6 b# Y# g" V* p* J3 V: W05H的高2位确定当计数器时减到0时的输出方式。. o" f, V- w: Z1 K
" t' S* w. Y3 J5 O* ?& H
8155片内带有地址锁存器,可在ALE的下降沿锁存地址,不必在外部另接锁存器。, A N. O3 Q9 Z
由上图得到8155各端口的地址为:
) b; z5 w/ @$ _) j; xP2.7 = 0 ,片选CE有效;P2.0 = 1,则为端口地址; x$ O' k; N; M) M
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0
% j- s2 ?# O. t1 L: n+ t* n* f* y
% Q+ |! j" Q+ V' ~2 H3 N5 C0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 命令状态口7F00H
' \( Z: G M( O/ U* q" v" F/ h; {/ t( @6 R: @
0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 PA口 7F01H! i: z) ~7 N! m P* k) i
- c9 T% R) f1 b0 t
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 PB口 7F02H+ e# e9 |" r* W& L8 M5 ?* n# ?
" ?4 w/ d' P4 [: h6 K! X2 f
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 PC口 7F03H3 O: Q# ?# k9 ?4 E
$ H* `6 h& w5 R" Q, C% T
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 定时器低位7F04H
; D6 m3 y% H0 Z) c! V" r J2 @' I" [
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 定时器高位 7F05H
* n8 ^$ {7 }: n% e! A5 T2 k
, |% B. p4 U3 a/ s4 M7 k! kP2.7 = 0,片选CE = 0,且P2.0 = 0则为8155片内RAM地址:
* N% f+ R/ a' t7E00H~7EFFH 共256字节。
5 W2 V$ ~8 |. k8155的基本操作软件:
7 D* H# s; l7 Z/ m% `: |. S- f9 d①I/O口及8155RAM的操作软件:
W) l. A4 q* [* r' x9 Q- G2 XMOV DPTR , #7F00H ;选命令状态口
# o6 Y5 H8 e+ W- C- t* y% h7 T' ]MOV A, #0C2H ;送命令字 1 1 0 0 0 0 1 0 . Z( u0 {$ A4 H* {
MOVX @DPTR , A ;A口输入、B口输出、C口输入& j v/ W5 C$ o
MOV DPTR , #7F01H ;选A口" f. D& ^% O; Y' j1 P: y/ t
MOVX A , @DPTR ;从A口输入数据
% |& ~4 [5 k$ ?, ~7 lMOV DPTR , #7E30H ;选8155RAM的30H单元
8 @; a7 u* B8 u, QMOVX @DPTR , A ;将A口输入的数据存入30H单元
, x. Y) y) v* b/ Q% V- b; GMOV DPTR , #7F02H ;选B口3 U/ e! y; d( Z. m; _. y- _
MOVX @DPTR , A ;将A口输入的数据转从B口输出
# \6 w( y* m" f% k- O②计数器的软件:9 ]& _0 B+ i! q- z( B
MOV DPTR , #7F04H ;选计数器低8位) y$ _5 P# ]. M0 t$ I/ ?- P
MOV A , #18H
- I; a. `1 [1 O% aMOVX @DPTR , A ;计数常数24装入计数器低8位! W! J# ` y4 S& [
1NC DPTR ;选计数器高位& v& U2 M6 ?; K1 g
MOV A, #40H7 p* _0 x& H( N# D, T8 I% U1 N+ c
MOVX A ,@DPTR ; 高2位01选择输出方式为连续方波5 O) m7 |% w% P
其低6位为计数器的高6位为00H + t1 i6 U, F Q
5 I9 B) |" I) J, M& M' o! P. t
|