機械社區(qū)
標題: 單片機與8155 之間的數(shù)據(jù)是怎樣傳送的?---[請教] [打印本頁]
作者: kissme 時間: 2006-9-23 21:48
標題: 單片機與8155 之間的數(shù)據(jù)是怎樣傳送的?---[請教]
有誰知道單片機與8155 之間的數(shù)據(jù)是怎樣傳送的嗎?8155做為單片機的I/O口數(shù)據(jù)擴展
9 I0 \4 S4 I0 `$ S) H! Y* `,如果單片機要擴展40個通道請問數(shù)據(jù)是怎樣傳送的
作者: 黃一鈁 時間: 2006-9-23 23:03
標題: Re: 單片機與8155 之間的數(shù)據(jù)是怎樣傳送的?---[請教]
注意8155的控制命令字寄存器只寫不讀,狀態(tài)字寄存器只讀不寫,它們共用一個地址。
6 S9 O3 g9 O8 H' l6. 8155的基本用法:
( e% G4 G# b1 g, D& T① 可擴展256字節(jié)片外RAM
) B! _3 k7 w7 N4 @* HIO/M引腳低電平時,只能用作片外RAM擴充,其低8位地址為00H~FFH,共256字節(jié),對其讀寫時用MOVX指令。
5 ^6 p5 j; Z& `* Z" |② 作擴展I/O口使用) b; N0 s' V- L5 @- E4 `6 T
IO/M引腳高電平時,可根據(jù)命令字的規(guī)定從A、B、C口輸入輸出,共有20條輸入輸出線,
2 Z% ^( u6 p/ u7 c& {' |③ 擴充一個14位定時器計數(shù)器# d' z4 E3 u. g* N9 n% I/ N
8155提供一個14位減1計數(shù)器,它的功能主要用于計數(shù),從TIMER IN端輸入計數(shù)脈沖,計數(shù)滿時由TIMER OUT輸出脈沖或方波。 d2 \/ Z0 c+ S7 a# p8 s
使用步驟:
$ ~1 ]! j3 O) W寫入控制命令字的D7、D6位控制啟停。
1 b# d6 ?+ w- |( ]' T/ q( T0 s寫入計數(shù)長度:端口地址04H的8位為計數(shù)器的低8位
# g% q! y) w0 i/ f& A5 c: g端口地址05H的低6位為計數(shù)器的高6位,共14位。
7 r- N; p0 a$ ^' C05H的高2位確定當計數(shù)器時減到0時的輸出方式。
- x, b% E# @, P" I4 x1 n) E
% f) S! h$ O8 `& e- Y' z1 Z& k& h+ }4 v8155片內帶有地址鎖存器,可在ALE的下降沿鎖存地址,不必在外部另接鎖存器。
- g) b+ r1 |1 h% z由上圖得到8155各端口的地址為:& n& S- q F$ ~7 F& G+ ~
P2.7 = 0 ,片選CE有效;P2.0 = 1,則為端口地址& u$ l7 t* ^( _( }8 t* u R
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0
+ e" e% s/ v4 b7 [( E
8 O s5 e& g2 T. v% l9 }0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 命令狀態(tài)口7F00H
/ G8 Q) f$ p" d% |! z; d% ~3 i# C
0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 PA口 7F01H
4 P; g2 ^1 w% X& r( L! `/ E+ G [7 R; g0 [( w
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 PB口 7F02H* G) T$ Z [, j
' H: r) B4 t' p3 i* n0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 PC口 7F03H
/ [, _4 D' o' T) e% C5 p) K$ s; T. ?* X2 `0 P7 W- G
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 定時器低位7F04H2 X1 |- J# C+ h+ w) X/ h1 P
/ w D4 U! X4 z+ b+ X
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 定時器高位 7F05H
* \6 X2 B4 W8 U; p6 q* T* C7 k( E5 w+ P! D
P2.7 = 0,片選CE = 0,且P2.0 = 0則為8155片內RAM地址:
2 U0 S3 f! C% h% E3 T& U s7E00H~7EFFH 共256字節(jié)。
- Y- m5 s j5 y8 j* I8155的基本操作軟件:4 ?4 ?! V2 w9 z5 u
①I/O口及8155RAM的操作軟件:
7 W! n% k4 R" e6 G# gMOV DPTR , #7F00H ;選命令狀態(tài)口
0 t u4 x9 l" |MOV A, #0C2H ;送命令字 1 1 0 0 0 0 1 0
" y" h* F @3 C pMOVX @DPTR , A ;A口輸入、B口輸出、C口輸入& v1 Y6 K# _4 D+ N4 ?0 N
MOV DPTR , #7F01H ;選A口! ?( G, q2 ^, [3 j& A8 P! X, h
MOVX A , @DPTR ;從A口輸入數(shù)據(jù)
3 t1 Q! e5 t) Y8 B( u! J5 r6 V" rMOV DPTR , #7E30H ;選8155RAM的30H單元
" v, R) k9 r+ d e) y& S1 O6 CMOVX @DPTR , A ;將A口輸入的數(shù)據(jù)存入30H單元# s& d4 i) p1 \/ q' R
MOV DPTR , #7F02H ;選B口
! D2 b8 B* y- e/ Z( B8 ?4 LMOVX @DPTR , A ;將A口輸入的數(shù)據(jù)轉從B口輸出, R" A9 U* Z4 ?/ p3 J
②計數(shù)器的軟件:
7 ]3 B* U+ B( f/ p6 O/ A' ^MOV DPTR , #7F04H ;選計數(shù)器低8位9 ^5 X0 W* y' A: i+ ~+ x7 n7 r$ u
MOV A , #18H
7 g V6 j1 n4 z" KMOVX @DPTR , A ;計數(shù)常數(shù)24裝入計數(shù)器低8位
; Y \0 a3 o2 R5 K/ J; b1NC DPTR ;選計數(shù)器高位
- a' D* I8 Y/ n0 s( m6 JMOV A, #40H
2 \8 p3 x& J, n0 I) u$ WMOVX A ,@DPTR ; 高2位01選擇輸出方式為連續(xù)方波
+ p2 A+ _' [0 @2 Z# J5 _8 r 其低6位為計數(shù)器的高6位為00H 8 L1 G1 V/ r, n8 D
2 D) G5 t) ~5 X- _! M7 M2 F
作者: syw開門造車 時間: 2006-9-24 04:37
標題: Re: 單片機與8155 之間的數(shù)據(jù)是怎樣傳送的?---[請教]
樓主網(wǎng)友好!
5 _9 L9 k0 p" i( k8 {8 [1 s6 l, x
你說的:“單片機要擴展40個通道……?!?br />
" c( e0 ^9 e8 E6 z4 [5 Z: {$ z _. R: L4 _1 @
能否告訴一下,這40個通道端口具體要做什么?4 j% K/ h: \( R9 }- \2 v" l
6 C4 H: ?/ Y9 E3 K. F7 m5 f7 P也許有好辦法幫你解決點實際問題。; @' [; C5 Q/ `& v' }7 h1 I5 v
; j' o K8 a( \% K7 f* V' X$ gsyw 060924---04.37
: u/ X' f+ Q+ ^
作者: dzw1988 時間: 2010-6-19 22:42
給你個鏈接吧 http://liuyunfeng484.blog.163.com/blog/static/6683171520096219621632/
歡迎光臨 機械社區(qū) (http://www.xa-space.com/) |
Powered by Discuz! X3.5 |