技术文章>> 用273+8255扩展IO口
 

 

原理图如下图所示。

硬件图

#include "reg52.h"
#include "absacc.h"

#define up_pa8255 XBYTE[0XF8]//上一片的各端口及控制寄存器地址
#define up_pb8255 XBYTE[0XF9]
#define up_pc8255 XBYTE[0XFA]
#define up_ctrl8255 XBYTE[0XFB]

#define down_pa8255 XBYTE[0X8F]//下一片的各端口及控制寄存器地址
#define down_pb8255 XBYTE[0X9F]
#define down_pc8255 XBYTE[0XAF]
#define down_ctrl8255 XBYTE[0XBF]

#define led XBYTE[0XF8]

void delay10ms(void)
{
     unsigned char i=0,j=0;
     for(i=0;i<20;i++)
         for(j=0;j<248;j++);
}

//------------------------------------------------

void key(void)
{
    delay10ms();
     if(down_pa8255!=0xff)
     switch(~down_pa8255)
    {
         case 0x01:led=1;break;//输出的是BCD码
         case 0x02:led=2;break;
         case 0x04:led=3;break;
         case 0x08:led=4;break;
         case 0x10:led=5;break;
         case 0x20:led=6;break;
         case 0x40:led=7;break;
         case 0x80:led=8;break;
    }
}

//------------------------------------------------

void main(void)
{
    led=0x00;
    up_pa8255=0xff;
    down_pa8255=0xff;
    up_ctrl8255=0x80;//A,B,C口均为输出
    down_ctrl8255=0x90;//A口输入,B,C口输出


    while(1)
    {
        if(down_pa8255!=0xff)
        key();
    }
}

附注:转载请注明作者与出处!


编写:建锋电子/jfdz 【打印此页】 【返回  
 
 
地址:河南省郑州市金水区北环汽配城

电话:0371-69615683 手机:13253329746 15038271069