STC89C51系列单片机共有如下几类GPIO口:

(1)P0.0-P0.7:

对应DIP40封装的39-32号引脚:P0口既可以作为输入/输出GPIO口,也可以作为地址/数据复用总线使用。

a)P0口作为输入/输出IO口时,P0是一个8位准双向IO口,上电复位后处于开漏模式。且P0口内部无上拉电阻,在作为I/O使用时必须外接4.7K-10K的上拉电阻;

b)P0口作为地址/数据复用总线时,是低八位地址线【A0-A7】,数据线【D0-D7】,无需外接上拉电阻

(2)P1.0-P1.7:

对应DIP40封装的1-8号引脚:均可作为标准IO口,对于90系列的51内核的单片机其中P1.0,P1.1均有第二功能,P1.0可以作为定时器/计数器2(Timer2/Count2)的外部输入;P1.1可以作为定时器/计数器2(Timer2/Count2)的捕捉/重装方式的触发控制。

(3)P2.0-P2.7:

对应DIP40封装的21-28号引脚:内部含有上拉电阻,即可作为输入输出口,也可作为高8位地址总线使用(A8-A15);作为输入输出口时,P2口是一个准双向口

(4)P3.0-P3.7:

对应DIP40封装的10-17号引脚:均可作为标准IO口使用。此外均具备第二功能;

P3.0—RXD:串行数据接收端

P3.1—TXD:串行数据发送端

P3.2—INTO:外部中断0,下降沿中断或者低电平中断(低电平有效)

P3.3—INT1:外部中断1,下降沿中断或者低电平中断(低电平有效)

P3.4—T0:定时器/计数器0的外部输入

P3.5—T1:定时器/计数器1的外部输入

P3.6—WR:外部数据存储器写脉冲(低电平有效)

P3.7—RD:外部数据存储器读脉冲(低电平有效)

GPIO模式简介:

51单片机IO口均具备准双向口/弱上拉,和开漏输出模式;P1,P2,P3上电复位后是准双向口/弱上拉,P0口上电复位后是开漏输出。

其中5V单片机P0口的灌电流最大为12mA,其他IO口的灌电流最大为6mA;

3V单片机的P0口的灌电流最大为8mA,其他IO口的灌电流最大为4mA;

准双向口读外部状态前,要先锁存为‘1’,才可以读取到外部状态;

当端口锁存器为0时,开漏输出关闭所有的上拉晶体管;当作为一个逻辑输出时,这种配置方式必须外部上拉。一般通过电阻外接到VCC,如果外部有上拉电阻,开漏的IO口还可以读取外部状态。

实验—LED亮灭与闪烁

LED工作原理:当其阳极和阴极之间有大于0.7V的正向压降,LED导通,然后变亮;

与单片机的连接如下图:

限流电阻的计算公式如下图:

LED(light-emitting diode),即发光二极管,俗称LED小灯,普通的贴片发光二极管。这种二极管通常的正向导通电压是 1.8V到2.2V 之间,工作电流一般在 1mA~20mA 之间。

所以,在工程上为了安全起见,一般选择200-3k的电阻

引脚定义:

IO口初始化如下:

主函数如下:

通过以上程序便可以实现点亮LED灯;

下面实现LED灯的闪烁:

闪烁的原理是在亮灭切换中间加入一定的延时函数,我们对LED灯点亮程序做如下修改:

delay()函数定义如下:

自此就可以实现LED1闪烁,LED2常亮。

c51用c语言写PO口复用6,毕业回馈—89C51之GPIO使用(示例代码)相关推荐

  1. java socket 重连复用_Java Socket编程基础及深入讲解(示例代码)

    Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要讲解Socket的基础编程.Socket用在哪呢,主要用在进程间,网络间通信.本篇比较长,特别做了个目录: 一.Socket通信基 ...

  2. ios c语言调用oc方法,ios开发之OC基础-类和对象(示例代码)

    本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...

  3. 在html中怎么写背景色渐变,CSS 实现背景色渐变和文字颜色渐变(示例代码)

    1. 背景色渐变 A . linear-gradient:用线性渐变创建图像. 语法: = linear-gradient([ [  | to  ] ,]? [, ]+) 下述值用来表示渐变的方向,可 ...

  4. html中全选按钮代码怎么写,html中的javascript 全选/取消全选操作示例代码

    复制代码代码如下: 无标题文档 function selectAllDels() { var allCheckBoxs = document.getElementsByName("preDe ...

  5. android镊 姩瀹夎 apk,用java写的jodconverter借用openoffice来转换office成pdf的示例代码...

    下载安装java sdk7安装完成即可.不用设置环境 安装openoffice到d:/program files/open....目录中 创建目录 g:/sys/qidizi/desktop/java ...

  6. c语言fmod英文全称,C语言fmod()函数:对浮点数取模(求余)(示例代码)

    头文件:#include fmod() 用来对浮点数进行取模(求余),其原型为: double fmod (double x); 设返回值为 ret,那么 x = n * y + ret,其中 n 是 ...

  7. c语言strsep,C/C++ 字符串分割: strtok 与 strsep 函数说明(示例代码)

    函数原型: char *strtok(char *s, const char *delim); char *strsep(char **s, const char *delim); 功能:strtok ...

  8. c51中断优先级c语言,51单片机中断优先级设置,中断优先级如何设置

    Q1:请教高人C51单片机C语言中的中断优先级怎么设置? C51中设置中断优先级,需要对中断寄存器IP进行配置.具体值需要根据用户需要的优先级顺序进行确定,具体的设置方法就是直接写如下C语言语句: I ...

  9. 【牛客刷题】上手用C语言写一个三子棋小游戏超详解哦(电脑优化)

    作者:[南航科院小张 南航科院小张的博客 专栏:从c语言的入门到进阶 学习知识不只是要懂,还要会用:想要找到好的工作,这里给大家介绍一件可以斩获诸多大厂offer的利器–牛客网 点击免费注册和我一起开 ...

  10. 瑞萨单片机CAN口复用唤醒

    瑞萨单片机CAN口复用唤醒 瑞萨单片机睡眠模式 CAN总线唤醒的原理 外部GPIO口唤醒步骤 注意事项 目前笔者在公司实习接触到了瑞萨单片机 经过了一个月的踩坑已经对瑞萨单片机的开发有了一定的了解,现 ...

最新文章

  1. NYOJ 837 Wythoff Game
  2. Git协作流程(转)
  3. 经常用everything对硬盘有伤害吗?
  4. 专家读《Windows 内核情景分析》这本书
  5. form表单的get和post传值问题
  6. Microsoft visual FoxPro使用教程--添加csv文件数据到dbf文件中
  7. [教程]黑莓终极中文混刷教程 终身受用
  8. 论文排版一步搞定之公式——(公式居中,编号居右)
  9. 停下来想一想:你为什么会离开游戏行业?
  10. 技术人员在客户现场工作注意事项
  11. [SDN]使用mininet搭建单臂路由的VLAN网络
  12. 重装系统后开机黑屏显示cannot load file怎么办
  13. MTK开发之—添加aw21024 i2c设备驱动
  14. 网络通讯学习(1)---TCP通讯
  15. 卡通渲染——眼睛面部
  16. (H-ADCP)声学多普勒剖面流量计
  17. 论文阅读笔记:Low-Rank Tensor Graph Learning for Multi-view Subspace Clustering(LRTG)
  18. Eclipse中拷贝粘贴偶尔失效的解决方法
  19. java 下载加速_Java实现大文件下载,提速30倍!想学?我教你啊!
  20. 用java的io做一个代码计数器_Java中的程序计数器是什么

热门文章

  1. wine 运行QQ的问题
  2. android imagebutton 设置边框,Android ImageButton没有边框但仍然有点击指示
  3. 用 SIR 模型拟合疫情感染情况
  4. https://www.bejson.com/devtools/properties2yaml/
  5. The Environment class in C#
  6. 力软敏捷开发框架源码7.0.6旗舰版 JNPF开发平台3.3.3 3.4.1企业版/旗舰版框架
  7. 智慧档案馆之区级档案库房温湿度智能化监控系统案例(一)
  8. TwinCAT与台达伺服驱动器连接调试控制电机正反转
  9. [娱乐]华为HWT文件手动修改字体名称
  10. Linux 环境下maven安装配置