|
2#
發(fā)表于 2006-9-23 23:03:56
|
只看該作者
Re: 單片機(jī)與8155 之間的數(shù)據(jù)是怎樣傳送的?---[請(qǐng)教]
注意8155的控制命令字寄存器只寫(xiě)不讀,,狀態(tài)字寄存器只讀不寫(xiě),,它們共用一個(gè)地址。$ U" L9 k2 o6 h5 w) ^ s6 y
6. 8155的基本用法:& c7 @+ c: }1 }% u/ ]! d$ x& L
① 可擴(kuò)展256字節(jié)片外RAM
$ Y+ c* a' g0 f8 T9 WIO/M引腳低電平時(shí),,只能用作片外RAM擴(kuò)充,,其低8位地址為00H~FFH,共256字節(jié),,對(duì)其讀寫(xiě)時(shí)用MOVX指令,。+ E d; ~' ]& E5 D$ z' }, z5 P
② 作擴(kuò)展I/O口使用1 m, _: z2 l$ U' {! u: @
IO/M引腳高電平時(shí),,可根據(jù)命令字的規(guī)定從A、B,、C口輸入輸出,,共有20條輸入輸出線,
0 b1 s% ~7 K* G* N/ K③ 擴(kuò)充一個(gè)14位定時(shí)器計(jì)數(shù)器. o9 O1 t9 y% E0 l5 d* L& {
8155提供一個(gè)14位減1計(jì)數(shù)器,,它的功能主要用于計(jì)數(shù),,從TIMER IN端輸入計(jì)數(shù)脈沖,計(jì)數(shù)滿時(shí)由TIMER OUT輸出脈沖或方波,。
. T; m2 }8 f" ?8 ^* h' v使用步驟:
, {" N! `' e- G0 L; @$ z寫(xiě)入控制命令字的D7,、D6位控制啟停。4 a) ?* l1 }3 t. ]' v& K2 }2 P3 Y M
寫(xiě)入計(jì)數(shù)長(zhǎng)度:端口地址04H的8位為計(jì)數(shù)器的低8位 u, ^* j) M6 i" b2 @2 H7 b
端口地址05H的低6位為計(jì)數(shù)器的高6位,,共14位,。/ K# ^$ i Z0 g
05H的高2位確定當(dāng)計(jì)數(shù)器時(shí)減到0時(shí)的輸出方式。
" i& i/ g- U9 I) n; B
+ D, H$ E% k3 F* r& S8155片內(nèi)帶有地址鎖存器,,可在ALE的下降沿鎖存地址,,不必在外部另接鎖存器。; m1 ^% u. z$ u
由上圖得到8155各端口的地址為:" R% Q! O N5 w( m. w4 P' I
P2.7 = 0 ,片選CE有效,;P2.0 = 1,,則為端口地址* x$ M4 z5 a, R: S
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 u8 s# G) c0 @; b2 d/ N + f' b Y: F. ^5 W, f
0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 命令狀態(tài)口7F00H- }# q6 a8 [8 L" G8 M6 B2 I
) w. |2 D6 ~& Q N/ k U# y. z/ L0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 PA口 7F01H
4 u0 d. O' {! O3 `$ U5 m1 S5 T( F% a& F/ \! G1 D4 y1 U
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 PB口 7F02H
1 W0 ^, d. D% N, n( W7 d$ M$ m* s5 @ l+ y; D8 T: h
0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 PC口 7F03H- P! S( Q9 q" B1 z5 a% \+ l
8 C4 J+ d5 X s1 E9 m
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 定時(shí)器低位7F04H
7 @( W( g' ]3 s# T" J. ~% V; g. X& ~2 q2 z
0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 定時(shí)器高位 7F05H
/ ?- E5 O# r0 V( \) j3 \+ C
u A/ ]- r( v3 [% RP2.7 = 0,片選CE = 0,,且P2.0 = 0則為8155片內(nèi)RAM地址:: k5 s/ `; b# i8 \- [# t
7E00H~7EFFH 共256字節(jié),。
& W' j* k0 ? z+ @/ f: j3 t! ~8155的基本操作軟件:
9 F* z+ t. f% Z" i8 p①I/O口及8155RAM的操作軟件:
; Y3 d! `% H; i- Z# d- H7 [0 gMOV DPTR , #7F00H ;選命令狀態(tài)口0 R; w; s1 A- A7 o/ k5 x) z# i. f
MOV A, #0C2H ;送命令字 1 1 0 0 0 0 1 0
8 E: R" a- n! }3 a* U% TMOVX @DPTR , A ;A口輸入、B口輸出,、C口輸入
$ _& J. Y+ A7 \6 z9 g0 B% xMOV DPTR , #7F01H ;選A口
' i. M3 e( z( Y- _MOVX A , @DPTR ;從A口輸入數(shù)據(jù)
) H: ~1 f4 X/ m3 kMOV DPTR , #7E30H ;選8155RAM的30H單元8 C, [' B- i+ W! N5 n0 O. L$ W
MOVX @DPTR , A ;將A口輸入的數(shù)據(jù)存入30H單元
, I, y$ O. n0 |/ g/ vMOV DPTR , #7F02H ;選B口( } t/ F5 K- B
MOVX @DPTR , A ;將A口輸入的數(shù)據(jù)轉(zhuǎn)從B口輸出 f: S/ e" o+ J0 _* ]$ A
②計(jì)數(shù)器的軟件:
3 P# A/ Y9 U* vMOV DPTR , #7F04H ;選計(jì)數(shù)器低8位" G8 i( l: P1 f
MOV A , #18H 5 Y2 @3 X4 @) W, u5 P" W& a
MOVX @DPTR , A ;計(jì)數(shù)常數(shù)24裝入計(jì)數(shù)器低8位
9 L0 G9 u0 Q/ [. o3 c; \; F1NC DPTR ;選計(jì)數(shù)器高位
" _5 t ~) \) R" I7 \: KMOV A, #40H
0 R1 N) S0 g! V- u2 D) r- D! dMOVX A ,@DPTR ; 高2位01選擇輸出方式為連續(xù)方波* ?0 x% v# S. }4 b& b
其低6位為計(jì)數(shù)器的高6位為00H
- K/ y- G$ t# t! X4 i# Z1 z4 V1 s0 u1 _# a! b
|
|