注意8155的控制命令字寄存器只写不读,状态字寄存器只读不写,它们共用一个地址。% M( J( t! f( U# t. n" D+ ?) `
6. 8155的基本用法:
7 L) {8 \9 E8 w9 A% A( l① 可扩展256字节片外RAM
8 v8 C! N0 ]4 j3 G4 t4 wIO/M引脚低电平时,只能用作片外RAM扩充,其低8位地址为00H~FFH,共256字节,对其读写时用MOVX指令。& \0 ?( U6 L+ i i- \
② 作扩展I/O口使用
3 L0 [1 k; u% K$ J! d8 H, u( S2 vIO/M引脚高电平时,可根据命令字的规定从A、B、C口输入输出,共有20条输入输出线,
* @5 L' O; ? \, h0 X- p+ t& J- d③ 扩充一个14位定时器计数器) p" W9 L5 m! x( S
8155提供一个14位减1计数器,它的功能主要用于计数,从TIMER IN端输入计数脉冲,计数满时由TIMER OUT输出脉冲或方波。9 P* K4 {' x1 D! B, v
使用步骤:3 W6 F: L: w/ o; W7 U. Y0 t
写入控制命令字的D7、D6位控制启停。8 H$ s6 [8 z2 V) V& n- N
写入计数长度:端口地址04H的8位为计数器的低8位
; D2 ^9 L" |& v+ J端口地址05H的低6位为计数器的高6位,共14位。' F$ v, I( l* L1 v# q
05H的高2位确定当计数器时减到0时的输出方式。+ P1 l# ~6 O0 R
+ m" F$ k1 Z2 ~8 S x: ]
8155片内带有地址锁存器,可在ALE的下降沿锁存地址,不必在外部另接锁存器。8 {/ `2 K# ^) L! a/ B
由上图得到8155各端口的地址为:( l3 Z/ \+ b& G, o4 q
P2.7 = 0 ,片选CE有效;P2.0 = 1,则为端口地址
& Q, ?2 J1 x( k" fP2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0
5 H% s- Z' X9 `2 c) s/ W. H 1 ~8 w7 t1 r" L' i4 D/ w
0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 命令状态口7F00H
8 a# M& w( Q' l+ g- y# K9 h! W v( H- v1 k0 L4 e( B2 G, K! m
0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 PA口 7F01H
2 _. N- f1 j& M1 F1 Q: z2 u3 k; |* u9 @; X6 Y) u
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 PB口 7F02H
% B8 K( b$ Z- B1 e( }, @! y
( k. `' Z* F5 Q+ D' d$ p$ q0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 PC口 7F03H
1 z/ ^, B: j0 ^. n
+ \. w- m R5 G; ^% G6 D) x0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 定时器低位7F04H6 x: _5 _1 p, O! P0 w
; y2 m( D9 b* ^% C
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 定时器高位 7F05H; y4 t5 E: c0 Y4 E g! S8 H; E
8 a4 U5 p4 E( D2 d) s1 D0 Q0 o
P2.7 = 0,片选CE = 0,且P2.0 = 0则为8155片内RAM地址:
5 c! ~7 v' n$ v% W, n1 d4 i5 r7E00H~7EFFH 共256字节。+ G( R1 K7 G" L! T" G
8155的基本操作软件:0 L% l2 s! r0 p1 ]2 U5 h% j' q# j$ y
①I/O口及8155RAM的操作软件:; q* t) Y4 w2 O' V
MOV DPTR , #7F00H ;选命令状态口
* E4 U$ N4 n- P" u+ _MOV A, #0C2H ;送命令字 1 1 0 0 0 0 1 0
+ D6 o) m; b9 zMOVX @DPTR , A ;A口输入、B口输出、C口输入( _# j7 i% N& A S
MOV DPTR , #7F01H ;选A口/ t( U. K9 _, h8 K3 { M5 b
MOVX A , @DPTR ;从A口输入数据
. c5 |+ E% a6 x& {! G+ NMOV DPTR , #7E30H ;选8155RAM的30H单元
0 G( e3 k# T- IMOVX @DPTR , A ;将A口输入的数据存入30H单元4 ]: G6 n$ G$ R/ W% q
MOV DPTR , #7F02H ;选B口
' @4 g8 u3 g( s; U! z' }" ?7 y- {5 e }$ ZMOVX @DPTR , A ;将A口输入的数据转从B口输出
: A( J9 @4 b& h( }3 L/ u& o* j②计数器的软件:
' f2 b+ i) L6 xMOV DPTR , #7F04H ;选计数器低8位
f6 {% X" U% W) C2 yMOV A , #18H
8 d: f# Z" c/ S$ ^4 q7 w1 g B/ O' RMOVX @DPTR , A ;计数常数24装入计数器低8位
& y/ l0 Z+ p, {/ C1NC DPTR ;选计数器高位) p9 r( g) g: `: D( H e1 W" A
MOV A, #40H( x" V, x _3 P s* q- D
MOVX A ,@DPTR ; 高2位01选择输出方式为连续方波
% G$ W& B; n4 u2 s- w 其低6位为计数器的高6位为00H 8 p! l' Q& q/ D h( P
6 d$ H* U* |9 P- B! W, F! |
|