|
2#
發(fā)表于 2006-9-23 23:03:56
|
只看該作者
Re: 單片機與8155 之間的數(shù)據(jù)是怎樣傳送的?---[請教]
注意8155的控制命令字寄存器只寫不讀,狀態(tài)字寄存器只讀不寫,它們共用一個地址。
0 o8 G4 ^* ~ k$ K* N* r6. 8155的基本用法:) \; F+ [4 U5 @& s, P
① 可擴展256字節(jié)片外RAM' G3 n2 o3 p, ^ y& M4 N& U' r3 ^4 i
IO/M引腳低電平時,只能用作片外RAM擴充,其低8位地址為00H~FFH,共256字節(jié),對其讀寫時用MOVX指令。
2 { Z# t- n: R& x4 y② 作擴展I/O口使用
}" B0 y8 Y1 @/ ?: ]IO/M引腳高電平時,可根據(jù)命令字的規(guī)定從A、B、C口輸入輸出,共有20條輸入輸出線,2 I( h3 n% B& S, W7 z, `7 ?. `
③ 擴充一個14位定時器計數(shù)器) ~( z* @3 c8 z* Y5 D
8155提供一個14位減1計數(shù)器,它的功能主要用于計數(shù),從TIMER IN端輸入計數(shù)脈沖,計數(shù)滿時由TIMER OUT輸出脈沖或方波。
% K* k" l9 O; O [% a& p; o1 Q" O4 M使用步驟:: }( G* _+ x# N4 L% B
寫入控制命令字的D7、D6位控制啟停。
3 `$ f; K& c7 w4 ~ m寫入計數(shù)長度:端口地址04H的8位為計數(shù)器的低8位' ~% C- `. M- K$ Y# q
端口地址05H的低6位為計數(shù)器的高6位,共14位。, e _0 o. D2 x2 S
05H的高2位確定當(dāng)計數(shù)器時減到0時的輸出方式。8 B# c" q) A4 Z. Q4 h: q0 z
. ~: J; E* W1 g; y7 g
8155片內(nèi)帶有地址鎖存器,可在ALE的下降沿鎖存地址,不必在外部另接鎖存器。
9 Q1 G B& W* }' k由上圖得到8155各端口的地址為:
+ l+ M* l" S/ L9 J' F9 FP2.7 = 0 ,片選CE有效;P2.0 = 1,則為端口地址
. B8 J9 f4 [, ^' q! y3 W- \P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0
7 k" s) _, l' r# ^7 ^2 t! B# c- ] $ b# K4 }) j* K' [$ f
0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 命令狀態(tài)口7F00H
4 Z1 O. m$ b8 G1 N
% e. m9 v4 Y4 C) m4 [" y. B4 E/ Z2 B0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 PA口 7F01H
' B+ B/ ~ T# O8 k# e
% G. D) K* ~. z% F- L9 Z h0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 PB口 7F02H
5 b6 ^& U5 U9 S ~
0 l+ p: N, [9 [8 G, ?$ s3 @0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 PC口 7F03H/ l u8 q" \+ `8 h* [4 Y) Q' [
v6 f4 f. _9 |% J' x0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 定時器低位7F04H
& X; q# @; r; I6 _$ _
7 r- L, W" F2 L) _1 u) l4 t0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 定時器高位 7F05H
9 m" x1 s9 x1 {" i. w+ ^0 C6 u- f- t/ O' r
P2.7 = 0,片選CE = 0,且P2.0 = 0則為8155片內(nèi)RAM地址:! X/ n- d( b" @ @# T
7E00H~7EFFH 共256字節(jié)。% g. F0 B( g6 p9 A9 z) d& f
8155的基本操作軟件:( C" J# z0 c: a& [( b$ `
①I/O口及8155RAM的操作軟件:. k5 W ^2 u7 p, s. |
MOV DPTR , #7F00H ;選命令狀態(tài)口
: k$ g+ c( {* Z3 RMOV A, #0C2H ;送命令字 1 1 0 0 0 0 1 0
# C2 @6 m5 b2 k+ a/ ^" o1 p& RMOVX @DPTR , A ;A口輸入、B口輸出、C口輸入
% {0 v0 K) Z8 G7 x* e! vMOV DPTR , #7F01H ;選A口, ?5 z' Y# D0 Z% u; x: m
MOVX A , @DPTR ;從A口輸入數(shù)據(jù)
- d3 g _! O lMOV DPTR , #7E30H ;選8155RAM的30H單元; ^ b& I( p6 h& |; `/ t {
MOVX @DPTR , A ;將A口輸入的數(shù)據(jù)存入30H單元: U Q3 S3 k1 l. g) s5 F3 t
MOV DPTR , #7F02H ;選B口
" E7 \' H2 Q! C6 f- HMOVX @DPTR , A ;將A口輸入的數(shù)據(jù)轉(zhuǎn)從B口輸出5 i4 L. _1 W, J* L' s( Y
②計數(shù)器的軟件:* ^) k/ x- ~6 ?* S4 k4 L
MOV DPTR , #7F04H ;選計數(shù)器低8位3 t# B/ C* c# ?8 Y4 P
MOV A , #18H / B' `6 y6 e, S4 G
MOVX @DPTR , A ;計數(shù)常數(shù)24裝入計數(shù)器低8位! m M4 u. d5 U/ q; J
1NC DPTR ;選計數(shù)器高位
( [/ _5 x+ ?- y) k5 |8 PMOV A, #40H$ U9 h0 A: Y" g4 z" q/ n5 T2 P* }( k
MOVX A ,@DPTR ; 高2位01選擇輸出方式為連續(xù)方波
* G) C# N& E9 N9 {0 R 其低6位為計數(shù)器的高6位為00H
f2 N6 E/ ^, W/ a. s# U3 ~" [( s4 [& e; c0 x
|
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒有賬號?注冊會員
×
|