|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机的 IO扩展-8255 仿真及源程序
7 T- W! `8 a3 w0 Y& }7 j4 N$ M: B3 ^' ^1 P# @+ Z
$ o" C; R }3 U1 x8 j+ z7 a
51单片机的IO扩展-8255仿真图:
1 t- g1 E4 D6 s) P I% e7 m! w+ o1 r8 x
, x% p' O8 i) e1 f/ r
6 {* p+ y) {7 e- g, {/*
3 g7 u z; j% f0 z- b在应用系统中扩展1片8255, 使A口接8个发光二极管,B口接8个开关,
% Q# u; W1 N6 l! ZA口工作在方式1输出, B口工作在方式0输入
& e7 y2 c% |( E1 j$ d要求: 将开关状态赋值到LED灯上/ y* c: l6 B* B2 S4 b
*/1 W6 l" m/ k# E- |1 ]
#include<reg51.h>6 _5 D' {8 J1 m; u# T
#include<absacc.h>
- R, r5 G$ T( ]' @0 o, ~& B#define uchar unsigned char4 q# `6 {$ o4 t4 o* D$ h
#define uint unsigned int, h0 R5 Y4 F0 T2 t8 }* R4 |8 ?% p
//PA、PB、PC端口及命令端口地址定义6 E6 N" h( p+ A: ~
//#define PA XBYTE[0x0000]
5 e. j7 @5 A8 n; c `//#define PB XBYTE[0x0001], T) f, }% ^) @! b
//#define PC XBYTE[0x0002]
, M0 l7 @) C6 B. ^$ N7 T/ t) d//#define COM XBYTE[0x0003]
- s7 O' z- i6 g- f+ v$ C' Y! d! n3 Y3 K( B
' y1 u7 m3 }% v" h W' J5 w8 P
uchar xdata * PA = 0x0000;- e5 s( g+ w/ d& Y# @
uchar xdata * PB = 0x0001;, V! ^& k3 ~( p$ t9 c
uchar xdata * PC = 0x0002;
/ e; E; V' l6 w r; Z1 Juchar xdata * COM = 0x0003;
8 U" N7 @$ m! F# T4 G7 p6 S
0 Y3 N' ?$ T% E3 D( z' m% K) ~
void delay(uint ms)
6 t9 u, G# A" h0 U{
! f! F; @" B. g( _$ J6 ?; `9 J uchar i;. ^# p8 U* R& e2 t$ m0 c8 ^
while (ms--)
+ ?, L( w5 H4 `! y" ^7 `( i. l for (i = 0; i<120; i++);& K& l/ d0 x+ R4 m/ R
}+ _1 b* ^5 c9 j( s0 Y' `
//主程序
( c; Q/ |3 A! hvoid main()7 e6 d, s) g B z" E
{) \5 |" A1 h) E* [0 r0 G& `
*COM = 0xA2; //8255工作方式选择: A口工作在方式1输出, B口工作在方式0输入 1010 0010
6 b. q2 p0 o2 ^8 a/ T" i+ D while (1)* _2 [0 W5 |* A G
{
* ]( p* g' t: n% I *PA = *PB;0 X* B; y% ^& _4 J( h( |8 U
delay(10);* U: \8 e7 r- i: E
2 x9 r4 K! `0 T) U0 v
, P2 M- C7 q T4 n- [' a$ u9 v…………限于本文篇幅 余下代码请从论坛下载附件…………& B* e# z2 q% p3 B2 @
! y4 C) Z0 L( r& }5 n- Q1 ?# L) Y3 G4 N' {3 I; ?2 |
|
|