|
2#
發(fā)表于 2006-9-23 23:03:56
|
只看該作者
Re: 單片機(jī)與8155 之間的數(shù)據(jù)是怎樣傳送的?---[請教]
注意8155的控制命令字寄存器只寫不讀,,狀態(tài)字寄存器只讀不寫,,它們共用一個地址。
+ b0 U7 ~2 e$ K, x2 c. H6 i7 L& S; T6. 8155的基本用法:
' }. k l K5 _6 K① 可擴(kuò)展256字節(jié)片外RAM
^) y, w. _: u6 xIO/M引腳低電平時,,只能用作片外RAM擴(kuò)充,,其低8位地址為00H~FFH,共256字節(jié),,對其讀寫時用MOVX指令,。( T) w+ P. B2 w3 ?. J4 v4 C
② 作擴(kuò)展I/O口使用- n- Y$ N5 P3 N3 Z/ U, |
IO/M引腳高電平時,可根據(jù)命令字的規(guī)定從A,、B,、C口輸入輸出,共有20條輸入輸出線,,
' n' ^0 j/ |) V, V6 M! t③ 擴(kuò)充一個14位定時器計數(shù)器
( y/ u. c0 f" y' p% y9 A8155提供一個14位減1計數(shù)器,,它的功能主要用于計數(shù),從TIMER IN端輸入計數(shù)脈沖,,計數(shù)滿時由TIMER OUT輸出脈沖或方波,。
0 ?/ s) ]" n! [使用步驟:5 t3 P5 i4 c) C' z& C( ^+ [
寫入控制命令字的D7、D6位控制啟停,。
+ [- o% N" {) Q+ s) z0 d _1 b' E( t. v寫入計數(shù)長度:端口地址04H的8位為計數(shù)器的低8位, G; M5 Y2 O, Y/ T0 {
端口地址05H的低6位為計數(shù)器的高6位,,共14位。/ K* j2 A0 |! C7 G1 c6 \
05H的高2位確定當(dāng)計數(shù)器時減到0時的輸出方式,。
$ u4 d% r) k3 [* S( M# M' N: W3 a0 b/ a8 c# f
8155片內(nèi)帶有地址鎖存器,,可在ALE的下降沿鎖存地址,,不必在外部另接鎖存器。# p/ E2 y) t# Z5 j5 f2 Y) F
由上圖得到8155各端口的地址為:8 [, R: \0 ~. W0 i5 @, p, f! k! \1 `3 ]
P2.7 = 0 ,片選CE有效,;P2.0 = 1,,則為端口地址
# e& e" R9 a) l. y7 ZP2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0
4 T7 R9 e. L* j) @ # j7 v0 O6 c/ \3 {; c# c. V" C9 c
0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 命令狀態(tài)口7F00H" S2 K6 p& Z5 q2 [+ d3 H
p5 k' _7 j- E9 s! w0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 PA口 7F01H& G6 j# {2 w- [/ E: q% ~
. P5 }7 l9 a7 F C9 B9 c0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 PB口 7F02H
4 n: c% m& J+ @/ K! ?. _' h" @* A4 r4 @8 L+ x6 N- Q" i
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 PC口 7F03H
6 o) M" M5 W& ^4 f% \
+ I: D8 F- F# v0 S. F6 y9 ?. |0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 定時器低位7F04H9 u9 G! O+ s2 O" {0 G) D7 y4 g
1 h7 g# t# |1 }+ [) J
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 定時器高位 7F05H
4 _- f- J# b$ Y' F' V A& o( G( e6 |, Z r& N/ C$ }" b' V
P2.7 = 0,片選CE = 0,,且P2.0 = 0則為8155片內(nèi)RAM地址:
2 _) w$ ~; p7 V' K% ~6 ~+ X7E00H~7EFFH 共256字節(jié),。
- Z u* \5 L; A8155的基本操作軟件:
) h: i- r$ g7 j6 L% ]$ L①I/O口及8155RAM的操作軟件:6 e+ [5 d' Q( }) m9 I4 a
MOV DPTR , #7F00H ;選命令狀態(tài)口
. F3 y' z, N3 x( _MOV A, #0C2H ;送命令字 1 1 0 0 0 0 1 0 + G f5 v2 ] x# \
MOVX @DPTR , A ;A口輸入、B口輸出,、C口輸入$ P9 a+ A6 S# p3 J' w
MOV DPTR , #7F01H ;選A口+ `; b; [3 E- u+ u6 y8 ~ l. R4 S
MOVX A , @DPTR ;從A口輸入數(shù)據(jù)
& N7 ~6 w4 q' y) e" m8 KMOV DPTR , #7E30H ;選8155RAM的30H單元
0 s2 p7 K& J) a0 l; j- M9 j d- [MOVX @DPTR , A ;將A口輸入的數(shù)據(jù)存入30H單元
$ _2 D9 I- `4 W( fMOV DPTR , #7F02H ;選B口
( j5 A" T5 Y3 B2 {$ a0 A' `8 dMOVX @DPTR , A ;將A口輸入的數(shù)據(jù)轉(zhuǎn)從B口輸出$ C, H) Q* P S
②計數(shù)器的軟件:' K4 |+ H$ g% q: d5 v5 N5 [
MOV DPTR , #7F04H ;選計數(shù)器低8位7 g \. G9 I$ I R0 M2 k. Z* g% z( i
MOV A , #18H " N' R* B1 _. n* r
MOVX @DPTR , A ;計數(shù)常數(shù)24裝入計數(shù)器低8位
% ]1 X6 z5 k0 a3 F: e1NC DPTR ;選計數(shù)器高位
8 E' @! ?6 k8 I2 sMOV A, #40H
# w' q+ d6 D: }6 v# OMOVX A ,@DPTR ; 高2位01選擇輸出方式為連續(xù)方波0 M0 P& T7 p7 b# }" u% W7 Q) S
其低6位為計數(shù)器的高6位為00H
2 m }6 J! a4 y; \8 q: M) N+ A: h9 R2 z7 a; d
|
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,,沒有帳號?注冊會員
x
|