微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > IO口拓展输入口

IO口拓展输入口

时间:10-02 整理:3721RD 点击:

用2片74HC244扩展2个8位输入口PORTA、PORTB分别连接两个拨码开关。选中PORTA必须P2.2=0,

选中PORTB必须P2.3=0。设计2个共阳极数码管,P3.0连接一个开关接地,

当P3.0=0,动态显示PORTA读得的数据,当P3.0=1,动态显示PORTB读得的数据。


这个是老师给的程序让我们修改后在AT89C51上运行

#include<reg51.h>

#define uint unsigned int

#define uchar unsigned char

xdata uchar PORTA _at_ 0xfeff;                        //A端口

xdata uchar PORTB _at_ 0xfdff;                        //B端口

data uchar i;

sbit P3_5=P3^5;

uchar code table[ ]={~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90,~0x88,~0x83,~0xc6,~0xa1,~0x86,~0x8e,~0xff};

uchar code sled_bit[]={0xf1,0xf2,0xf4};           //定义点亮的数码管与数组的关系*/                                                                                               

uchar data disp[2];

void main( )

{         data uchar a;

        TMOD=0x01;                                        // 设置定时器T0为方式1定时

    TH0=(65536-500)/256;                // 给T0装入初值

    TL0=(65536-500)%256;                  // 给T0装入初值

    ET0=1;                                                 // 允许T0中断

          EA=1;                                                // CPU开中断

        TR0=1;

        i=0;

        P2=0;

        while(1)

  {       

          if(P3_5) a=PORTB;

        else  a=PORTA;

        disp[0]=a/16;

        disp[1]=a%16;

   }

}


void  T0_int(void)  interrupt 1                   //T0中断函数

  { data uchar k;

          TH0=(65536-500)/256;

    TL0=(65536-500)%256;

        P3=0xfc;

        k = disp;       

        P1 = table[k];                                                         //显示数字

        P3 = sled_bit;

        i++;

        if(i>=2)i=0;       

  }


我不是很理解    比如P3.5是控制什么 还有P3=0xfc
PORTA寄存器里是已经有数据   直接读出来输入单片机总线 通过数码管显示出来?  显示出来具体是什么也知道啊
能给我部分程序 和思路吗

在这个程序里,P3.5相当于你所要求的P3.0的作用,至于p3=0xfc,应该是程序原来有其他用,既然是让你用来修改的,与要求不相关的就都可以改掉

拓展的 porta 是数据寄存器从拓展口读入 可以直接把porta的值赋给一变量 再把变量传递给数码管显示吗

你需要先整理一个符合你要求的流程出来,把流程拆分成若干对立功能的小部分,然后再参考上面的程序进行修改,这个程序是给你参考的,看这个程序,有可能是三个的数码管的,所以现在没必要研究这个程序,先考虑好自己要做什么

厉害,感谢分享,谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top