|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机的 IO扩展-8255 仿真及源程序
- g% O2 f6 \- j6 l6 E8 J9 b: B/ Q/ Y7 `0 x& M8 ]5 Q4 q y. `9 g
$ o- W6 K, k- x# k) b! |
51单片机的IO扩展-8255仿真图:( `% }" z2 @$ q3 A
. g6 p5 M5 c! J3 t
: l& i+ _1 t* Z
% q+ e8 K3 u; e8 F0 s S/*0 F6 p/ B U7 D$ `4 e
在应用系统中扩展1片8255, 使A口接8个发光二极管,B口接8个开关,2 N/ y# }9 {7 O8 M0 K3 x
A口工作在方式1输出, B口工作在方式0输入 H4 e: n2 O0 F. Z
要求: 将开关状态赋值到LED灯上& p1 w' X8 @8 N) e% f" i
*/8 l8 s( ]1 T( N. R2 j
#include<reg51.h>$ Z$ |% o; t$ c8 U1 p6 ?
#include<absacc.h>
& k) a' N) E% Y2 `( r#define uchar unsigned char$ }% |$ g8 ?) R8 h7 m% y
#define uint unsigned int
# l% `# G" x: b( H/ @//PA、PB、PC端口及命令端口地址定义
9 ?6 g4 R0 J* d: A7 h7 p# ~7 v! D//#define PA XBYTE[0x0000]
9 k, f& ]- o k3 p" |* {//#define PB XBYTE[0x0001]
4 s( S$ B* T Q* X; G& T2 z! ]//#define PC XBYTE[0x0002]' k9 D- y2 L0 f* K/ { p6 p
//#define COM XBYTE[0x0003]
0 w x1 b7 |4 t! f+ m }! Q0 k
+ s3 R$ p( ^9 T
# G0 ^6 L' t Q9 T& _; s& B. Suchar xdata * PA = 0x0000;
' J. }$ R) H1 Q: ?6 quchar xdata * PB = 0x0001;
) c8 }( E1 S3 i( ?- a; Quchar xdata * PC = 0x0002;
A( I( Z& S p: l2 p1 F; muchar xdata * COM = 0x0003;
4 ]; T% U+ i' u) k0 N
* _ B1 O4 r- Q- K; C& v5 C% [. a! @! M+ ?0 N- T) K" j
void delay(uint ms)% T6 [ e1 v, I5 C2 \
{
$ ~( g V( \# ~6 ]3 B* J uchar i;& M9 G6 x1 R% K) a- w. a' r0 D3 p! X
while (ms--) 6 z$ }) H H8 v' P z* h
for (i = 0; i<120; i++);: h% v4 e0 L( O- H
}# }% q8 @) \! r+ M
//主程序
* n5 ~; D( e2 I! ]! R" |! i6 yvoid main()4 N. S! M+ H( W1 {
{
! t; P: P) U7 |' @4 M. s *COM = 0xA2; //8255工作方式选择: A口工作在方式1输出, B口工作在方式0输入 1010 00108 ?* T1 v3 l" s! k A! X
while (1)# ?, H$ I( j/ |& k! N
{! {1 R, x0 [& w: }( _4 d9 B! ?3 L
*PA = *PB;
2 g j. J* ^7 S( ^; ]- F delay(10);8 x: t# p4 D# i& o- u: W3 _
. p @0 n2 h- \& V3 |2 E+ b/ [
4 s+ X& O7 i% \- R: w& M…………限于本文篇幅 余下代码请从论坛下载附件…………; Q5 [! e/ B( x$ p
: B& y# b5 G- R% x# U
. D* f7 `0 l9 c# U |
|