【一】单片机引脚介绍

1.电源引脚
●VSS:接地。
●VCC:外接5V电源。
2.外接晶振引脚
●XTAL1:当单片机使用内部振荡电路时,接外部晶体的一端和微调电容。当单片机采用外部时钟信号时,此引脚接地。
●XTAL2:当单片机使用内部振荡电路时,接外部晶体的一端和微调电容。当单片机采用外部时钟信号时,用来输入时钟脉冲。
3.控制引脚
●RST/VPD:复位信号输入端,高电平有效。当此引脚保持两个机器周期的高电平时,进行复位操作。该引脚的第二功能是备用电源。
●ALE/PROG:地址锁存允许信号端。当MCS-51单片机上电后,ALE引脚不断向外输出振荡器频率fosc 1/6的正脉冲信号。此引脚具有第二功能PROG,其作为对带有片内可编程ROM单片机进行固化程序写入操作时的编程脉冲输入端。
●EA/VPP:外部程序存储器地址允许输入端。当EA引脚接高电平时,CPU先访问片内程序存储器并执行其中的指令,然后再访问外部程序存储器。当EA引脚接低电平时,CPU只访问外部程序存储器并执行其中的指令,此时并不管该单片机是否具有片内程序存储器。该引脚的第二功能是作为对 EPROM 型单片机进行编程时的编程电源。
●PSEN:程序存储允许输出信号端。在访问片外程序存储器时,该引脚输出负脉冲作为读片外存储器的选通信号。在CPU从外部程序存储器取指令期间,PSEN信号在每个机器周期中两次有效。
4.输入/输出引脚
●P0口:8位漏极开路型双向I/O口,能驱动8个LS TTL负载。当访问外部存储器时,分时传送低字节和数据。
●P1口:带有内部上拉电阻的8位准双向I/O口,能驱动4个LS TTL负载。
●P2口:带有内部上拉电阻的8位准双向I/O口,能驱动4个LS TTL负载。当访问外部存储器时,输出高8位地址。
●P3口:带有内部上拉电阻的8位准双向I/O口,能驱动4个LS TTL负载。此外还具有第二功能,见表2.5。

【2】C51的程序结构

C51的程序也是由各个函数组成的。其中最重要的是main()函数,它也是必须存在的一个函数。作为程序的入口,程序每次执行均从main()函数开始,每次调用完其他函数后都将返回到main()函数,而当执行完main()函数中的所有代码后,结束整个程序。整个过程并不关心函数的排列顺序。

一个函数一般由两部分组成:函数说明部分和函数体部分。

函数说明部分包括函数名、函数类型、函数属性、函数参数。函数名后紧跟一个圆括号(),函数参数列于其中。一个函数也可以没有参数。

在函数说明部分后边紧跟的就是函数体部分。函数体的全部内容在一个大括号 {} 中,其中还包括变量说明和执行代码,函数运行时依次执行其中的代码。

一个标准的C51函数的格式如下所示。

函数类型 函数名(函数参数表)

{

变量说明部分;

执行代码部分;

}

下面是一个C51函数的实际例子,该函数的功能为完成一次加法运算。

int fun plus(int A,int B)

{

int result;

result=A+B;

return(result);

}

对于用户来说,C51函数可以使用标准库函数,或者自定义函数。

标准库函数在C51库文件中已经定义好,并在相关的头文件中也已加以说明,用户只需要直接调用即可。

自定义函数是用户根据自己的需要自己定义并调用的一类函数。

下边是一个完整的C51程序结构例子。

# include <reg52.h>       //包含头文件
void main(void)         //主函数部分
{sbit P1.0=P1^0;       //P1端口位定义sbit P1.1=P1^1;P1.0=1;          //给位定义的变量赋初值P1.1=1;delay();          //调用延时子程序while(1)           //P1.0、P1.1交替赋值,实现LED交替闪烁的效果{P1.0=0;P1.1=1;delay();P1.0=1;P1.1=0;delay();}
}
void delay(void)         //延时子程序部分
{uint i;for(i=0;i <256;i++);
}

对于用户来说,只需要将两个LED的正极接高电平,串联一个电阻后分别连接到MCS-51单片机的P1^0和P1^1引脚,利用上述代码即可实现LED交替闪烁的效果。

这是个很小的成功的C51程序,可以看到,它清楚地包括头文件和程序主题。头文件中包含了硬件信息,并给外部模块提供可使用的函数和变量说明。程序代码中sbit P1.0=P1^0的P1^0便是在头文件reg52.h定义的。该程序函数包括main()函数和自定义子函数delay()。在main()函数运行过程中曾多次调用子函数实现延时功能,这样,LED的闪烁不至于快到人肉眼无法分辨的程度。

该程序对应的单片机电路如图4.1所示。

利用Keil来进行MCS-51单片机C51程序的开发,通常使用项目来进行管理。

项目一般分为两大块:C文件块和头部文件块。将不同功能写在不同的C文件中,依靠项目的管理,最后将所有文件连接,从而得到可以刻录的HEX文件或BIN文件。在所有这些C文件中,有且只有一个main()函数,头文件将各个C文件互相连接。

图4.1 LED交替闪烁单片机电路图

【3】Proteus8.6模拟仿真

proteus 常用元件中英文对照表
RES 电阻
CRYSTAL 晶振
CAP 电容
DIODE 二极管
BUZZER 蜂鸣器
AND 与门
OR 或门
NOT 非门
NAND 与非门
NOR 或非门
NPN NPN 三极管
MOTOR 马达

起风了:用Proteus8.6学单片机系列(1)工程建立​zhuanlan.zhihu.com

51单片机(1)学会控制引脚你就入门啦​mp.weixin.qq.com

lj245a引脚功能图_零基础入门单片机(2)学会控制IO引脚你就入门啦相关推荐

  1. 小白到学会python要多久_零基础小白多久能学会python

    学习任何一门编程语言,都是为了去实现一个个项目,来解决实际的问题.无论项目是大还是小,都关联着许多知识与技能. 例如要写一个「文件资源管理器」的应用,就需要MVC设计模式.组件化构建.对象集合及操作. ...

  2. 用稳压管保护单片机引脚_零基础入门单片机(2)学会控制IO引脚你就入门啦

    [一]单片机引脚介绍 1.电源引脚 ●VSS:接地. ●VCC:外接5V电源. 2.外接晶振引脚 ●XTAL1:当单片机使用内部振荡电路时,接外部晶体的一端和微调电容.当单片机采用外部时钟信号时,此引 ...

  3. cad新手必练300图_零基础学习CAD软件难吗?超全CAD入门学习教程送给你

    CAD软件作为一种制图工具,真要学起来其实并没那么困难.它好比你手中写字的笔,吃饭的筷子,拿笔拿筷子实在算不上多难的事情,且在你下定决心要进行CAD入门学习时,就已经成功了一半,难得是保持这份决心. ...

  4. 数据结构和算法_零基础入门01

    数据结构和算法_零基础入门01 一.数据结构是什么? 逻辑结构.物理结构 二.算法 算法的五个基本特征 算法设计的要求 b站学习小甲鱼的数据结构与算法,自留笔记. 程序设计=数据结构+算法 一.数据结 ...

  5. python入门需要多久-零基础小白多久能学会python

    学习任何一门编程语言,都是为了去实现一个个项目,来解决实际的问题.无论项目是大还是小,都关联着许多知识与技能. 例如要写一个「文件资源管理器」的应用,就需要MVC设计模式.组件化构建.对象集合及操作. ...

  6. 初学者先学python语音好吗_献给Python初学者 零基础学习Python能学会吗

    献给Python初学者 零基础学习Python能学会吗 时间:2018-01-08     来源:零基础学习Python方法讲解 零基础学习Python能学会吗?这个问题几乎是所有初学Python的小 ...

  7. 零基础学习单片机切记这四点要求,少走弯路

    零基础学习单片机切记这四点要求,少走弯路 其中一种,其它的都能够触类旁通,快捷上手了.假如你这些条件都没有,那就跟着我学吧,我建议你进修51单片机. 为什么要进修51单片机: 虽然此时单片机品种和型号 ...

  8. 【题解】《算法零基础100讲》(第44讲) 位运算 (位或) 入门

    文章目录 一. 概念定义 1.1 位或定义 1.2 位与定义 二. 推荐专栏 三. 相关练习 3.1 根据数字二进制下 1 的数目排序 3.2 二进制表示中质数个计算置位 3.3 2 的幂 一. 概念 ...

  9. python学多久可以接单-零基础小白多久能学会python

    学习任何一门编程语言,都是为了去实现一个个项目,来解决实际的问题.无论项目是大还是小,都关联着许多知识与技能. 例如要写一个「文件资源管理器」的应用,就需要MVC设计模式.组件化构建.对象集合及操作. ...

  10. python零基础能学吗-零基础小白多久能学会python

    学习任何一门编程语言,都是为了去实现一个个项目,来解决实际的问题.无论项目是大还是小,都关联着许多知识与技能. 例如要写一个「文件资源管理器」的应用,就需要MVC设计模式.组件化构建.对象集合及操作. ...

最新文章

  1. 项目中AppDelegate详解
  2. JSR 303 - Bean Validation 介绍及最佳实践
  3. java多图片上传json_SpringMVC框架五:图片上传与JSON交互
  4. mysql join null_Mysql Join语法以及性能优化
  5. java 消息推送_hanbo-push分布式消息推送、IM服务
  6. 三维重建1-位姿追踪:单应矩阵、本质矩阵和基本矩阵
  7. 五大板块(2)—— 指针
  8. 一文教你轻松搞定ANR异常捕获与分析方法
  9. 从service启动activity startActivity慢 的解决方案
  10. java从入门到精通_Java大数据:数据库开发从入门到精通
  11. 使用ConnectivityManager 判断网络是否连接
  12. ZED2+ORB_SLAM3+视觉惯性轨迹保存
  13. 多重检验_LSD方法不准确性
  14. [转载]ubuntu samba Windows共享 你可能没有权限访问网络资源
  15. -bash: netstat: command not found
  16. 如何用windows7搭建radius服务器
  17. 苏宁金融红包系统大促海量流量背后的技术支撑
  18. 世界地图的制作(总体概念设计)
  19. maven报错解决办法之一
  20. 慎读书,精读书,反复读好书并学以致用

热门文章

  1. 华为招聘产业联盟高级专家、 开发者生态专家
  2. Alex Chen:3月21日阿里云北京峰会演讲大神
  3. 刚从 Nova 生出来的 Placement 是什么东西?
  4. 【优化求解】基于matlab遗传算法求解仓库货位优化问题【含Matlab源码 1770期】
  5. 【语音隐写】基于matlab GUI DCT+DWT音频数字水印嵌入提取【含Matlab源码 836期】
  6. autocoder自动代码生成器_Spring Boot 集成MyBatis Plus代码生成器
  7. node-red 可视化_可视化与注意-第1部分
  8. 游戏ai人工智能_AI与游戏,第1部分:游戏如何推动了两门AI研究流派
  9. 恩佐盒子服务器维护,恩佐宝盒有苹果版吗
  10. php接收url的json,api-php中url接收的json数据,json_decode为空