|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机的 IO扩展-8255 仿真及源程序
' F8 R) j$ X/ X/ s" O3 w; w( Y, _3 Z% M* ?* `2 ~# l/ Y4 g2 f6 J( M6 R
( b7 n5 g7 `; A5 t
51单片机的IO扩展-8255仿真图:) c5 L+ z4 w/ R! f5 i9 c
3 U! u- g7 d, ~$ y
8 y6 [) C1 l, Z( z7 D$ Q M
' O( a- Z( f. a% _/** \# S' z( X8 c8 \6 L, V
在应用系统中扩展1片8255, 使A口接8个发光二极管,B口接8个开关,5 ^3 [8 F* w( j' I/ ^& B- @8 i
A口工作在方式1输出, B口工作在方式0输入
" F) I+ C* M" d7 v8 C3 c! Q+ k要求: 将开关状态赋值到LED灯上1 @7 ~4 s8 \* h+ H& \/ q# e7 h
*/
8 i% |) W2 L& v; y% K9 J) h4 f#include<reg51.h>, e7 p* p+ J7 Y
#include<absacc.h>
$ J; V& J& V2 [. n# y#define uchar unsigned char; h9 `' P( Q% {+ U' O" S# L
#define uint unsigned int
1 j: X) j2 F3 D+ l//PA、PB、PC端口及命令端口地址定义
& J3 R; O& L$ h; M7 V$ V//#define PA XBYTE[0x0000]* V, m( B0 _0 {
//#define PB XBYTE[0x0001]
/ E3 {9 g; G5 P8 X//#define PC XBYTE[0x0002]
9 ~0 E, K" c+ }/ f( ?: p5 g0 U k//#define COM XBYTE[0x0003]/ S1 I4 A. m: x2 o" R
* _; [8 c F+ e P9 f( K& q
2 v: @0 D0 r: A6 s: \& T2 q) i# @ }uchar xdata * PA = 0x0000;
" M. D; k1 _# d/ \1 luchar xdata * PB = 0x0001;
" C- v$ m( T& S- W/ o6 b' xuchar xdata * PC = 0x0002;% A9 X% [8 b$ P4 h
uchar xdata * COM = 0x0003;7 C- [! m# F9 i+ b, h) g2 A
; G0 \+ `6 y4 p0 h) T: M
e4 H8 I9 p, C4 G, B) E) ]! O8 o
void delay(uint ms)
7 t! ?: Q6 c7 u, T% v3 m{
# c7 J" p* m$ `4 z: @# D# V uchar i;* z# o% x o* }: z
while (ms--) . ~# I& M6 Y% r& g
for (i = 0; i<120; i++);
0 P l- F2 w" e; G3 Q}4 O4 g `9 S0 b4 i7 v
//主程序* W" V5 q" C) [1 q
void main()
7 n& @- U, D% ?+ n$ ?" k{+ ], t3 D7 g+ l3 K
*COM = 0xA2; //8255工作方式选择: A口工作在方式1输出, B口工作在方式0输入 1010 0010
r. i6 u1 \( K6 c3 n; X, O while (1)
2 G" U% u8 | e e% \3 u {. a8 D, i0 G1 q. d! X
*PA = *PB;" @! [* s. t% S& E
delay(10);- ]% E7 r' K& U1 x# ?9 L( {8 _. F/ u
' x& ]1 E' ?2 X% e5 T+ W
- y* m) d( K: p, L6 [8 |
…………限于本文篇幅 余下代码请从论坛下载附件…………
, O. i ?/ q" l1 o- L1 m( z3 a$ \% U' f' N! A8 y! U7 c
# ^! i2 x9 Y2 X5 x& z9 s- J |
|