注意8155的控制命令字寄存器只写不读,状态字寄存器只读不写,它们共用一个地址。9 [: g) ?* ]2 ^- Q
6. 8155的基本用法:. Q; C5 H! X" p8 S6 V* R4 l
① 可扩展256字节片外RAM
) l4 \1 E) h: ?* c' l" AIO/M引脚低电平时,只能用作片外RAM扩充,其低8位地址为00H~FFH,共256字节,对其读写时用MOVX指令。, Z# U9 K9 z, _
② 作扩展I/O口使用! ?4 r; a+ L- u! T6 z ^2 u
IO/M引脚高电平时,可根据命令字的规定从A、B、C口输入输出,共有20条输入输出线,
9 G" y/ K2 e/ u+ q0 K: {③ 扩充一个14位定时器计数器; S: Y- o0 Y) D
8155提供一个14位减1计数器,它的功能主要用于计数,从TIMER IN端输入计数脉冲,计数满时由TIMER OUT输出脉冲或方波。2 v) Z( ?" t n( X
使用步骤:
9 m/ R: M% r1 H! `4 ?; J+ q& `" i写入控制命令字的D7、D6位控制启停。 D X1 \- o" ^4 Y
写入计数长度:端口地址04H的8位为计数器的低8位9 g* K( `% h+ w3 h5 m( A
端口地址05H的低6位为计数器的高6位,共14位。( b1 O6 j! _, t& v" j7 R8 c
05H的高2位确定当计数器时减到0时的输出方式。5 O8 L$ x$ \: S% D
6 l# M% t/ g: S) W, ]/ b8 Q" Y8155片内带有地址锁存器,可在ALE的下降沿锁存地址,不必在外部另接锁存器。
! M; M8 V8 u, j( b. h. M/ |由上图得到8155各端口的地址为:
: g8 o7 l# n3 K- t7 B+ x+ _P2.7 = 0 ,片选CE有效;P2.0 = 1,则为端口地址5 p& e4 V) `: |2 u( 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 # J3 m+ }- F& Z6 }
$ k+ w+ l6 d" B- w* ]" X( J- z" f0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 命令状态口7F00H, m5 e0 [1 j2 G+ f# \
2 R. H. `. n) e; m! T) o, m( U
0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 PA口 7F01H
, a. X, }$ k9 ]/ h. C) ?2 {$ V4 P, I
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 PB口 7F02H
; T& U. i2 d! K7 I- H; q) }+ q+ P$ i5 j
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 PC口 7F03H& b- O, H1 Q6 G6 f: l% W- c# [
' V" g3 _6 l: m: z; R( `0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 定时器低位7F04H
$ |3 N; m5 d1 c4 p" ~( ~! A: ?/ l# N7 p, A2 F2 h
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 定时器高位 7F05H+ ?8 V: U+ v, K: w, q
# R( z& P$ e7 e7 f" u' ^P2.7 = 0,片选CE = 0,且P2.0 = 0则为8155片内RAM地址:
* B) _+ [+ A9 d7 h7 P& F7E00H~7EFFH 共256字节。% ^' d" M2 R, n1 Y4 P- @2 g
8155的基本操作软件:" G. ^1 h7 M( V' [# t" ~5 E
①I/O口及8155RAM的操作软件:
3 m& @( u1 q# H: [MOV DPTR , #7F00H ;选命令状态口+ k- b& l# S; R
MOV A, #0C2H ;送命令字 1 1 0 0 0 0 1 0 2 X+ i& V4 N- K2 X6 d9 T- i+ q
MOVX @DPTR , A ;A口输入、B口输出、C口输入" ?: z3 s% R' p& `+ w1 s
MOV DPTR , #7F01H ;选A口" N8 c" M( V5 B3 }$ r
MOVX A , @DPTR ;从A口输入数据, ?; T: R4 j: h$ v% d2 U6 y
MOV DPTR , #7E30H ;选8155RAM的30H单元" c- G6 E" h, J) n% k! z$ C
MOVX @DPTR , A ;将A口输入的数据存入30H单元
; t) S/ x. }& _5 v) f! w7 `' FMOV DPTR , #7F02H ;选B口
4 o) v2 Q! g8 l" DMOVX @DPTR , A ;将A口输入的数据转从B口输出
2 @1 G. [+ b0 q②计数器的软件:3 ^. I4 \. B" T4 D( w
MOV DPTR , #7F04H ;选计数器低8位
1 A( M* Q8 k( g5 ]6 G6 YMOV A , #18H
8 L/ O( x# p" O/ V! i* W# bMOVX @DPTR , A ;计数常数24装入计数器低8位
1 g8 h( p, q1 u1 b( z0 q1NC DPTR ;选计数器高位
3 b3 p% j& ] G' s+ v( HMOV A, #40H
3 j! L$ A6 K( d: rMOVX A ,@DPTR ; 高2位01选择输出方式为连续方波
# b5 F# c& k6 G 其低6位为计数器的高6位为00H
# m$ a% R8 R+ H7 I E1 f: F: W' Y/ l
|