|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机的 IO扩展-8255 仿真及源程序
! T; _, N# {2 G
, r7 T) x7 {0 ~! h* _5 g' _5 R. `: O# o0 a( Q: l
51单片机的IO扩展-8255仿真图:
' j( |, ?$ u6 i$ p2 B7 B% v . m3 M) p4 }1 }/ M6 ]
4 e7 O! |( h; d* {; Q2 q
$ j# p1 d. t$ A4 g
/*
. K1 k, w3 h6 n8 x8 i6 w在应用系统中扩展1片8255, 使A口接8个发光二极管,B口接8个开关,
" w' t3 b) y9 [' w" m) IA口工作在方式1输出, B口工作在方式0输入
' z( Q% b& ?3 H% O. b要求: 将开关状态赋值到LED灯上
5 R# `2 a9 s8 {% F; h& B) c*/
& {# l/ s2 D* ]+ y- `8 a#include<reg51.h>
% l/ P8 x' w1 T* t( A5 d#include<absacc.h>4 W" A* V2 m7 z8 ]" |9 m7 t
#define uchar unsigned char8 E- D$ E; f) I
#define uint unsigned int
& \( x, o6 b* h4 s" Y9 U; Z//PA、PB、PC端口及命令端口地址定义7 R1 ^5 R. y7 O3 P3 u
//#define PA XBYTE[0x0000]
1 }. j; Q2 U' Z! l7 c//#define PB XBYTE[0x0001] c+ E6 R4 |* I6 r) D+ y; q
//#define PC XBYTE[0x0002]% w" _ _# u% A, [
//#define COM XBYTE[0x0003]3 L+ j `4 }" W7 B/ U& k3 I% c
# V- I9 K! H. _) J$ V
8 T/ i3 e1 h' }6 z/ d4 cuchar xdata * PA = 0x0000;7 o+ W% F( T$ [! i" j) T6 ?$ L# G' F
uchar xdata * PB = 0x0001;+ r1 R# j ]! i9 E V; U4 n3 K, L, D+ Q
uchar xdata * PC = 0x0002;
4 ]# o, U7 Y$ E' buchar xdata * COM = 0x0003;
3 Y. F# }0 A0 Z" t, K
- W2 H% [6 |- n8 g. t+ V' n' m' y7 z& N/ |
void delay(uint ms)1 |- _; v1 Z7 w0 {2 m" z
{
) r7 a! k0 f6 J8 X/ T% M: t) {% X uchar i;& |9 d* o' p4 ^2 x: z1 m6 C
while (ms--) : E7 {9 l0 \/ W W2 M! h! b/ r% a
for (i = 0; i<120; i++);- g, r2 _ q a, Y- ^
}% X- Y0 P+ e2 O' N% O; i: d
//主程序
4 A7 ?! y5 R8 |9 t5 Hvoid main()1 q7 @1 x7 F& q, [0 P3 B
{+ f8 E# D' X0 `6 [8 f4 s1 P, N6 R
*COM = 0xA2; //8255工作方式选择: A口工作在方式1输出, B口工作在方式0输入 1010 00106 h0 m: e9 d: X& L6 `
while (1)# _+ i& v' o5 K/ H" n; X
{
" u4 Y6 p/ l& h+ e *PA = *PB;& B$ ?9 U w( w) b
delay(10);/ z5 E; @, X C9 Q( q2 c
8 T3 m" X, t+ T N% @. s
: A* d, g) J7 c# O6 V% i9 @
…………限于本文篇幅 余下代码请从论坛下载附件…………4 c9 _! g" A0 g1 v
H1 U7 v: ?: x5 n6 P. b# Q6 j7 d2 i% E& g* V4 u# O
|
|