注意8155的控制命令字寄存器只写不读,状态字寄存器只读不写,它们共用一个地址。
v5 T# E8 ?5 R$ d5 h6. 8155的基本用法:' K5 X! T" M1 r/ m* U
① 可扩展256字节片外RAM* v9 J: _9 m; U6 E/ ~6 V( U* d) e
IO/M引脚低电平时,只能用作片外RAM扩充,其低8位地址为00H~FFH,共256字节,对其读写时用MOVX指令。
$ V9 O7 P% c* O: ^, E. i② 作扩展I/O口使用
. N' m$ c% [9 V7 L: e9 Z6 Y; pIO/M引脚高电平时,可根据命令字的规定从A、B、C口输入输出,共有20条输入输出线,
. \' j9 T" b, q. @③ 扩充一个14位定时器计数器
2 s3 j% z( f- W$ ^* R. ` F8155提供一个14位减1计数器,它的功能主要用于计数,从TIMER IN端输入计数脉冲,计数满时由TIMER OUT输出脉冲或方波。
" P! W' E) c& i2 ?使用步骤:
7 j* O. d7 \ k" c) P) v写入控制命令字的D7、D6位控制启停。
* E9 R$ _$ B# X% ?' U$ @9 n写入计数长度:端口地址04H的8位为计数器的低8位
+ ^6 o- H, l; n9 g- H端口地址05H的低6位为计数器的高6位,共14位。8 K8 Z4 u2 b* Q& F1 U6 c- C. e
05H的高2位确定当计数器时减到0时的输出方式。
4 Y) d6 ?' J0 ]9 B
- [. H. A0 k1 O8 M4 y8155片内带有地址锁存器,可在ALE的下降沿锁存地址,不必在外部另接锁存器。
$ \& P/ T0 E n7 A" k0 _) r; Y由上图得到8155各端口的地址为:
6 H4 q* }. U) cP2.7 = 0 ,片选CE有效;P2.0 = 1,则为端口地址 y$ X6 Z$ P9 q. r7 R2 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 5 ?! |4 o' N6 y$ o+ y; _
( W" U; Y" V5 t/ I
0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 命令状态口7F00H% y6 J# h& i1 D k$ }0 Z5 M" C7 j
, {7 ~% e. F; B0 t( U% X0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 PA口 7F01H* A! X, I& H3 T. ]. Z1 ^
, d+ Z A( D1 F0 y2 S- q& g0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 PB口 7F02H
5 N. I) Y$ d& I+ [7 P% d" v0 ?9 `2 Q4 L0 @* A: W
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 PC口 7F03H7 y$ ~( U" T8 o) B
7 F: q) v6 o; B3 |+ k9 p2 t' l$ Y
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 定时器低位7F04H
7 ?' k0 p1 E g0 h/ |% d+ S2 `% `! ?% ? R# w
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 定时器高位 7F05H0 \ x/ x7 j# m
! `/ ^, R" w; P N+ h
P2.7 = 0,片选CE = 0,且P2.0 = 0则为8155片内RAM地址: F- T5 l/ ]2 _- G: m
7E00H~7EFFH 共256字节。
# B8 E( W, j. ?, y- a8155的基本操作软件:
1 H: H8 b0 L6 r1 x7 C/ K①I/O口及8155RAM的操作软件:
! r+ |. t9 m2 Y; z! C+ DMOV DPTR , #7F00H ;选命令状态口
0 d5 M3 G% u3 z L9 ~( M6 qMOV A, #0C2H ;送命令字 1 1 0 0 0 0 1 0 ' P! R ?( V. \) [: O: Z7 k
MOVX @DPTR , A ;A口输入、B口输出、C口输入& q- W+ X# ]" y3 v2 W7 I% U& w' S
MOV DPTR , #7F01H ;选A口% B- ?8 X& Y" Y# L
MOVX A , @DPTR ;从A口输入数据& h w/ `; `, O7 c
MOV DPTR , #7E30H ;选8155RAM的30H单元
; C: ?6 R' i/ e oMOVX @DPTR , A ;将A口输入的数据存入30H单元
z7 ]; X4 A% a; Y. G) } q% iMOV DPTR , #7F02H ;选B口
8 d" @7 p: ~ a* uMOVX @DPTR , A ;将A口输入的数据转从B口输出) `9 O8 T2 n" N( [' J. V
②计数器的软件:
) s( k. i0 |2 \' Y& O! g! F$ GMOV DPTR , #7F04H ;选计数器低8位
/ M& u, Q* t0 h( C/ XMOV A , #18H 8 G1 g& \- B5 `% M, g
MOVX @DPTR , A ;计数常数24装入计数器低8位( @9 V; j: U; ~# a3 z6 @( B
1NC DPTR ;选计数器高位+ t) j% z* I6 h% L3 k* I- t$ K
MOV A, #40H$ _* u" u) C( e# I4 T8 L& Z
MOVX A ,@DPTR ; 高2位01选择输出方式为连续方波
# J, S, |/ ^: W! U: I) e& X 其低6位为计数器的高6位为00H
# w: B+ T" r4 {4 q* v+ u3 p7 c7 T! k1 X m$ M
|