注意8155的控制命令字寄存器只写不读,状态字寄存器只读不写,它们共用一个地址。
, f7 |! Q. I2 k6. 8155的基本用法:
- f2 d1 ]: b2 t① 可扩展256字节片外RAM6 X+ s; m/ P( J6 f8 J6 t; B
IO/M引脚低电平时,只能用作片外RAM扩充,其低8位地址为00H~FFH,共256字节,对其读写时用MOVX指令。. u- Y8 b" g! t6 p
② 作扩展I/O口使用5 K- N/ m- y! Z U9 t( A
IO/M引脚高电平时,可根据命令字的规定从A、B、C口输入输出,共有20条输入输出线,$ }& X' X, ?* G% ~1 y
③ 扩充一个14位定时器计数器0 I8 Y8 s( Z D& {1 w# I3 k6 ~
8155提供一个14位减1计数器,它的功能主要用于计数,从TIMER IN端输入计数脉冲,计数满时由TIMER OUT输出脉冲或方波。2 x, A: p& j# Z
使用步骤:
7 A% E- O; n2 T2 N. f写入控制命令字的D7、D6位控制启停。
( p* U) d/ q5 d/ O* y5 d, V* W/ o- [写入计数长度:端口地址04H的8位为计数器的低8位5 i# j, b* n$ ^- S9 ^$ ^8 X
端口地址05H的低6位为计数器的高6位,共14位。. ^3 k, O7 |, s% j7 z l
05H的高2位确定当计数器时减到0时的输出方式。, P8 T/ I @+ V/ q
0 Y! P2 F0 n' q. o
8155片内带有地址锁存器,可在ALE的下降沿锁存地址,不必在外部另接锁存器。0 N9 \. Y* s9 F% [- m$ l" i! ]+ p6 ?
由上图得到8155各端口的地址为:
, @ N: G, \2 S3 `P2.7 = 0 ,片选CE有效;P2.0 = 1,则为端口地址
/ e$ f, X$ n/ t% `! ?" UP2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0 & q/ ]: j+ ] G5 |) }- D( e
/ U1 ]9 D1 u/ u0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 命令状态口7F00H
' s. w0 z# O& W5 H
' N2 e& R+ r4 j: B/ m1 d2 I0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 PA口 7F01H, t w4 J+ q/ P8 n0 o. N7 w
# |$ M4 J/ S0 C. G+ r( C
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 PB口 7F02H+ x& Q9 G b2 `2 k2 t7 a. s4 Q2 g
4 T6 ?$ N8 A7 S: P/ d
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 PC口 7F03H6 v! Y. x$ I0 k# P9 I) }, Y
7 Y6 T2 E( v2 r3 z9 d
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 定时器低位7F04H$ y1 `. G3 ]. w7 C; y$ r+ ^
2 P; W$ B$ z0 D: n1 D- Q% G
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 定时器高位 7F05H! i8 B. C1 J! }# |# w3 z& S+ v
, C4 E2 B0 R$ U' k$ g4 bP2.7 = 0,片选CE = 0,且P2.0 = 0则为8155片内RAM地址:
& R6 u( k: p" b1 t4 N7E00H~7EFFH 共256字节。: c( Q7 n* D5 {8 u, [
8155的基本操作软件:7 C$ q* \7 h/ [2 h0 V$ M
①I/O口及8155RAM的操作软件:& t a: }5 n- A3 l1 u; ^% A
MOV DPTR , #7F00H ;选命令状态口+ ^2 X) o0 d, G
MOV A, #0C2H ;送命令字 1 1 0 0 0 0 1 0 % u& X& g$ e4 h1 t
MOVX @DPTR , A ;A口输入、B口输出、C口输入$ [0 Q8 @ d6 R% o, T! j& n
MOV DPTR , #7F01H ;选A口% L0 ^7 L7 w& E
MOVX A , @DPTR ;从A口输入数据
- X7 o$ K; }5 ?, eMOV DPTR , #7E30H ;选8155RAM的30H单元
! N4 o6 V8 D8 s( W* X! }MOVX @DPTR , A ;将A口输入的数据存入30H单元0 v. U3 L/ M+ Z4 i- N! Y
MOV DPTR , #7F02H ;选B口& U2 R) g E! ^) c8 F/ U; _
MOVX @DPTR , A ;将A口输入的数据转从B口输出% {: E" P" R. w* |6 R
②计数器的软件:) H6 m9 @% w8 k4 J
MOV DPTR , #7F04H ;选计数器低8位$ U: P' T3 @ T0 @
MOV A , #18H - Y+ y* ^* ]& q3 H( C8 t
MOVX @DPTR , A ;计数常数24装入计数器低8位- |3 a Z; M( N
1NC DPTR ;选计数器高位
. }' w$ ~- h4 B) R5 j8 _5 lMOV A, #40H
& X9 C+ C& C/ m8 W0 C: l p3 W) CMOVX A ,@DPTR ; 高2位01选择输出方式为连续方波
. d& k0 ^. F- j: T) C& i* ^ 其低6位为计数器的高6位为00H
7 p. W4 |& ^( e( T9 M' C1 a# C9 A! x9 S6 `+ k9 A
|