注意8155的控制命令字寄存器只写不读,状态字寄存器只读不写,它们共用一个地址。, g7 f! w' i% C' g
6. 8155的基本用法:" y2 Y& j! `! q& X0 z
① 可扩展256字节片外RAM7 g5 W+ }. L) t' A; t! H ?
IO/M引脚低电平时,只能用作片外RAM扩充,其低8位地址为00H~FFH,共256字节,对其读写时用MOVX指令。5 u! w7 t$ s1 _7 V3 l! m- j4 W
② 作扩展I/O口使用! G( F; P$ y% {
IO/M引脚高电平时,可根据命令字的规定从A、B、C口输入输出,共有20条输入输出线,
$ f9 o7 O- c2 ?/ P6 Y1 t# z# f③ 扩充一个14位定时器计数器& A1 t* Z& |7 J
8155提供一个14位减1计数器,它的功能主要用于计数,从TIMER IN端输入计数脉冲,计数满时由TIMER OUT输出脉冲或方波。
8 o) `6 d2 J4 [* [5 I( }使用步骤:+ A$ [3 { ?* d6 }8 H
写入控制命令字的D7、D6位控制启停。
* {3 l4 ]7 _( |1 D, Q4 j( x写入计数长度:端口地址04H的8位为计数器的低8位 L! V& o+ A/ R& }
端口地址05H的低6位为计数器的高6位,共14位。
9 g) \* M( c) @, F+ F$ z: }05H的高2位确定当计数器时减到0时的输出方式。4 t2 c9 z8 Y0 V+ s+ r9 ]- Y
1 B3 s& q; Q$ ^% W8155片内带有地址锁存器,可在ALE的下降沿锁存地址,不必在外部另接锁存器。
; _ f/ @- L+ R( p1 S( A由上图得到8155各端口的地址为:
" v' W: P& D7 ~0 M% W% YP2.7 = 0 ,片选CE有效;P2.0 = 1,则为端口地址5 |3 _' h5 {% w9 i, A |
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0
2 f( [" E$ m2 w. p / g5 i# v" d! G! ?. r5 w9 R) A t" `
0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 命令状态口7F00H( |8 j' P) O4 ^4 `# C
' q# k2 }7 V- G1 H( s1 m
0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 PA口 7F01H
9 _# ~. t! ]5 o6 c7 p Q
* M! ~. o5 r1 Q5 f2 O7 O0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 PB口 7F02H, W) J7 k. X1 ~
) Z9 w( P" ^" z
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 PC口 7F03H
v$ P) R4 R7 W# q: ^
9 U+ a& ~7 h: v) d2 _4 \0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 定时器低位7F04H0 [5 I# ^2 k% J7 [5 a B( \0 q
0 r/ i8 Y& ^( [- l8 m S- E
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 定时器高位 7F05H
% O; Z, T- g+ b6 l, i( q8 u, M
1 G1 ]' E# a! z S: H* ?5 d0 PP2.7 = 0,片选CE = 0,且P2.0 = 0则为8155片内RAM地址:
6 x1 m; H* x- X; U+ t5 D0 B' s7E00H~7EFFH 共256字节。( d1 u3 @& R' T5 F' O8 y# K: U& m
8155的基本操作软件:
0 E! n$ a% W, V' Q. h①I/O口及8155RAM的操作软件:
. q( ?1 \( p2 H- |3 c4 p& Y" RMOV DPTR , #7F00H ;选命令状态口/ \! B2 j) x' [( T Q
MOV A, #0C2H ;送命令字 1 1 0 0 0 0 1 0 $ V! \- D9 S+ m+ f' p9 {
MOVX @DPTR , A ;A口输入、B口输出、C口输入7 ^1 G# v3 @* Y& X0 r
MOV DPTR , #7F01H ;选A口
6 i$ r2 c/ B. T' ]3 JMOVX A , @DPTR ;从A口输入数据
5 u3 R' X* @9 p& O$ cMOV DPTR , #7E30H ;选8155RAM的30H单元8 ~+ Z0 B1 Z) n" O4 n
MOVX @DPTR , A ;将A口输入的数据存入30H单元9 v. E9 J& t9 l+ J
MOV DPTR , #7F02H ;选B口
# }2 F; k& u8 k0 ` w4 UMOVX @DPTR , A ;将A口输入的数据转从B口输出. _/ b, Z0 D1 e) {
②计数器的软件:/ u! I* G. p4 o4 S+ i0 w" J: {# t
MOV DPTR , #7F04H ;选计数器低8位
) s1 R1 b7 m( a- H z6 sMOV A , #18H
8 g0 d6 v: z9 {& L: w8 r9 ]3 WMOVX @DPTR , A ;计数常数24装入计数器低8位8 M6 ^/ F6 Q* P
1NC DPTR ;选计数器高位& I9 |: g O% V. a* L7 r
MOV A, #40H
! ]( n; y5 @/ ^, S* MMOVX A ,@DPTR ; 高2位01选择输出方式为连续方波4 \2 N) p% O9 {
其低6位为计数器的高6位为00H 3 t6 \/ W2 ] F: y6 E
; k! k& Z: H r% v. t6 C
|