zoukankan      html  css  js  c++  java
  • 51单片机 | I/O口直接输入输出实例

    51单片机P0/P1/P2/P3口的区别:

    P0口要作为低8位地址总线和8位数据总线用,这种情况下P0口不能用作I/O,要先作为地址总线对外传送低8位的地址,然后作为数据总线对外交换数据;

    P1口只能作为I/O口(P1.0、P1.1以外);

    P2口除了作为普通I/O口之外,在扩展外围设备时,要用作高8位地址线;

    P3口除了作为普通I/O口之外,其每个引脚都有第二功能。

    I/O端口具有以下特性:

    端口自动识别:无论是P0 P2口的总线复用还是P3口的功能复用,内部资源会自动选择,不需要通过指令的状态选择。

    准双向口功能:准双向口作为输入口时,应先使锁存器置"1",然后再读引脚。

    P0作为普通I/O口使用:不使用并行扩展总线时,必须外加上拉电阻。

    I/O口驱动特性:P0口作为I/O口时可输出驱动8个LSTTL输入端,P1-P3口则可以输出驱动4个LSTTL输入端

    ————————————————————————————————————————————

    I/O接口直接输入输出实例

    //51单片机原理及应用(第二版)——基于Keil C与Proteus》第四章例4.3

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    程序分析:

    电路中的P2口既用作输入也用作输出,P2.0-P2.3作为输入,P2.4-P2.7作为输出;

    首先将 P2 = 0xff; P2口全部赋高电平 1111 1111,因为I/O作为输入时应先设置各个锁存器为"1",才能确保输入结果正确;

    P2.0-P2.3读入开关状态 if ((P2 & 0x0f) != 0x0f)时,通过对其移位 P2 = P2<< 4;,将P2.0-P2.3的值对应移到了P2.4-P2.7

    代码分析:

        

    代码具体执行情况以及P2调试情况见下 ↓

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    调试及P2情况

    Keil与Proteus联调,打开P2状态图;

    开始调试并且未操作时,P2 = 0xff;,P2状态为 1111 1111,

    闭合开关2,单击RUN执行,在这个执行过程中P2情况:

    ① 初始状态 1111 1111

    ② 闭合开关 1111 1101

    ④ "与运算" 0000 1101

    //通过 (1111 1101 & 0000 1111) 运算得到 (0000 1101) 屏蔽掉高四位的情况,进行!= 0x0f 判断。

    // 如果四开关同时断开,(1111 1111 & 0000 1111) == (0000 1111)

    // 如果有任何一个开关闭合,则将执行左移操作

    ③ 左移四位 1101 0000

    LED2 左端获得低电平,右端高电平,LED亮

    所有开关断开,重新进入循环,P2 = 0xff;

    程序代码执行结束,分析完毕。

  • 相关阅读:
    eclipse中的Invalid text string (xxx).
    在jsp文件中出现Unknown tag (c:out)
    eclipse 界面复原
    ecilpse 纠错插件
    Multiple annotations found at this line:- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    Port 8080 required by Tomcat v9.0 Server at localhost is already in use. The server may already be running in another process, or a system process may be using the port.
    调用第三方https接口
    调用第三方http接口
    创建带值枚举
    spring整合redis之Redis配置文件
  • 原文地址:https://www.cnblogs.com/hughdong/p/6729308.html
Copyright © 2011-2022 走看看