|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机的 IO扩展-8255 仿真及源程序
2 U3 b2 Q( F5 I8 k" u3 \8 R$ `& _4 Z2 N2 L* _+ ^5 k
6 J' ~6 B/ H' p! x) Q51单片机的IO扩展-8255仿真图:
2 E- G9 M. }$ |- k
6 Z& d; P( Z# ]5 a% s u) m; i; D# K. x/ S. D% [
8 u. h) R7 [( [
/*0 X0 n( V0 k7 \% C2 ] }7 U: \
在应用系统中扩展1片8255, 使A口接8个发光二极管,B口接8个开关,
# S+ ~9 H" g. [8 n/ f0 JA口工作在方式1输出, B口工作在方式0输入0 d! n) ]4 V7 y- B
要求: 将开关状态赋值到LED灯上( s" y1 L8 m# W. B+ [! T6 m
*/# e7 X: H D( _
#include<reg51.h>! d+ e& S4 m! d4 g& s, V5 ?+ h1 ~
#include<absacc.h>
" y$ s j/ O( ~+ Y; Y' M. l: e; \#define uchar unsigned char/ ~: ]. T! a7 G: |! f7 r
#define uint unsigned int' ]6 T. G+ r) {# ]( S& F5 r
//PA、PB、PC端口及命令端口地址定义0 A4 G0 P( z2 w! y7 n
//#define PA XBYTE[0x0000]
2 ]: \! N) A# V( y& K5 R, Y d//#define PB XBYTE[0x0001]7 h& w& d: M+ T1 g9 v! y/ C/ ?8 {
//#define PC XBYTE[0x0002]: r( u7 G. R5 D; q- _: k
//#define COM XBYTE[0x0003], H) W) n- P' L( K
2 d, E: V% L1 `$ G8 X( e; t
6 x+ f4 c0 n d5 l( xuchar xdata * PA = 0x0000;4 K+ U- Z( a6 W2 i8 n+ D
uchar xdata * PB = 0x0001;
% g5 g6 ]( ~, a8 Q$ y- @uchar xdata * PC = 0x0002;
1 j9 j( s5 \2 s6 y G2 F3 vuchar xdata * COM = 0x0003;
+ \% n1 f! |' j: s1 L! ] ]/ i1 }$ C u
# v+ k5 U$ ]. S) P; d* z/ `void delay(uint ms)' o6 a0 V+ k% w; E5 j! I
{2 k6 z5 c$ O6 E& J
uchar i;4 k. w e+ }% v! I5 z. T1 d
while (ms--)
! y2 q9 F+ o( Y( w4 y for (i = 0; i<120; i++);
/ H" l4 n' o% i' H% P} |- }2 ^3 z7 x- H
//主程序4 t2 o' R- ]1 I$ J+ D+ J
void main()
6 t8 ?% x' H; V! D) e' S{
* c6 R& p$ L3 J ]. }- @ *COM = 0xA2; //8255工作方式选择: A口工作在方式1输出, B口工作在方式0输入 1010 0010
& H) Q; Q$ y1 a; x0 i while (1)
$ k1 ~+ D; B8 E! X {- ?1 P% l, i) F$ m0 s# e
*PA = *PB;
) e& |+ g, J% S, t c delay(10);
, a+ `2 w, f* u0 w" ]3 G( S/ [3 v: r$ c/ E1 s
8 @+ o9 `6 S; k: V' ]- Z3 G& `…………限于本文篇幅 余下代码请从论坛下载附件…………7 A1 _. Y. g3 X u) T) y3 q q
* A# h) |. f" A/ k% s0 k2 m# b% _* F- Y, b- ^
|
|