一:背景介绍

随着时代的发展,人们希望把CPU、RAM等器件集成到一个平台上来工作,单片机就这么诞生了。到现在为止市面上的单片机款式种类多如牛毛,继承的功能也要根据实际需求演化出了不同的方向。以51系列为例,比较常见的是Intel开发的MCS-51系列,和国内的STC51系列。

之后也以51系列(STC89C52RC型号)学习。

STC89C52RC资源:8kbROM程序储存器,256B数据存储器RAM,3个定时器计数器,6个中断源,16位重装

二:51的结构

51是40针脚直插式排布。下图是51芯片的实际引脚图。(细枝末节的硬件结构以后再补)

2.1 各引脚的功能作用

C51总体来讲可以分为六个类型的引脚。如下图所示:

先解释一下IO口是什么:就是单片机用来传送信息的端口,这个信息包括数据和地址等,可以理解成,单片机就像自家的房子,外部环境就是超市,通过房子里的主人(CPU)下达指令需要买什么东西回来,于是货物(数据)和指令(地址)通过房子的大门(IO口)进行传递。

P0:P0.0~0.7(下同),无外扩芯片时作I/O口用,读入或写出数据。有外扩时既要连接锁存器,从锁存器出去在连接外扩芯片的8位地址线;同时P0还要直接连接外扩的数据总线

P1:作普通的I/O口用

P2:无外扩作IO口。有外扩时,直接连接外扩的外扩芯片的剩余高位地址。

P3:P3的每一对端口都是是功能口。3.1,3.0是串口通信的TXD,RXD;3.2,3.3是外部中断输入的INT0和INT1; 3.4和3.5控制T1和T0的定时/计数器功能; 3.6,3.7控制读写数据

涉及到扩容时其他接线的作用:

ALE连接锁存器;RD,WR连接外部数据存储器的读和写;PSEN是外部程序存储器的读。(理解区别大概就在RD,WR连接外扩的存储器,PSEN连CPU或者存储器这类)

下面是一个基本的扩容连接原理图,也可以认为是扩容能正常运行的最小工作模板。锁存器实现数据和低位地址线的分离,高位地址可以直接扯出去。

2.2 复位电路

万一工作环境非常恶劣,单片机有可能罢工,然后好不容易运行起来的数据就会丢失。所以需要复位电路来进行保护。

复位操作三种,上电自动复位,按键手动复位,看门狗自动复位。

这方面在实际工程上很重要,但是初步学习不予考虑。

2.3内存安排

51单片机只有低128位寻址空间(就是只有128位的RAM)。此外,还有4K的ROM,不够用时可以外扩ROM;内ROM+外ROM≤ 64K。

52单片机有256位寻址空间,低128位空间称为通用RAM,结构如下。

高128B的RAM单元中有21个单元可用,称为SFR。这21个SFR分散在高128B的地址空间内,分别是A,B,PSW,SP,DPH,DPL,P0,P1,P2,P3,IP,IE,TCON,TMOD,TH0,TL0,TH1,TL1,SCON,SBUF,PCON。 有些可以按位寻址。 特殊功能寄存器名称、 标识符、 地址见下表。

2.4 特殊寄存器表

这些特殊的寄存器保存在SFR区里,也就是实现各种硬件功能的开关,比如定时器,指针这类。

使用方法:

要用到哪个功能先sfr(C51的头文件直接包含了这些语法所以就不用再写一遍,直接用接口),或者对要操作的位进行单独的操作。举个例子:

sfr P0 = 0x80; // 把单片机内部的0x80这个地址区的东西命名为P0,见上图的表

这些定义都是放在头文件里,例如:#include<reg52.h>,编程只需要头文件写上就行了。

注意:但是对于位变量,例如P1.2,P1.3,P1.4,P1.5......这种可以使用整体字节赋值(就是直接P1=0xff这种),也可以用sbit单独设置为新的变量(sbit P1.0 = 0; sbit P1.1=1;)。

三:C51编程

单片机采用的编程方式类似C语言但是又不同,C语言面向的电脑内部寄存器,但是这几十年已经非常简单便于快速上手了。但是单片机的编译语言才从汇编语言进化没几十年,所以现在来看会稍微有点烧脑,但是到了后面其实发现也就是那么回事。

C51编程的核心,我自己总结是:面向设备的端口来操作电平。对于一个设备(包括单片机在内)要工作的原理就是控制输入输出的端口信号,让内部的数字和模拟电路经过一系列复杂的转化实现我们想要的要求。

比如舵机,三根线连上单片机之后,火线接电源(就是高电平),零线接GND(低电平),脉冲线通过不断变换的电平(1-0-1-1-1-1-0-1-1......)来控制电机旋转。所以就需要编程来控制。

3.1程序构成

和c语言基本差不多,自定义函数只是有个特殊的叫做“中断函数”,后面再补充。

3.2 运算符

运算符和C语言的一样,几个特殊常用的有:按位与&,按位或|,分别用作对某个十六进制数的某一位清零或置位。

3.3 程序分析

单片机攻略3——C51入门相关推荐

  1. 51单片机攻略—入门

    51单片机攻略-入门测试:点亮一个LED 一.基础知识 (一)单片机的电平特性 1.TTL电平 TTL电平信号规定,+5V等价于逻辑"1",0V等价于逻辑"0" ...

  2. java江湖2新手开局攻略_原神开局攻略:新手入门少走弯路

    原神游戏开局怎么玩才能有快速的发展呢?很多朋友想要在一开始就能够快速的成长起来,但是不知道从哪些方面来入手,为了帮助大家在游戏中有更好的游戏体验,今天小编就为大家带来原神开局攻略:新手入门少走弯路,感 ...

  3. 小兵大乱斗服务器维修吗,小兵大乱斗攻略大全 新手入门少走弯路[多图]

    小兵大乱斗是一款带兵即时对战手游,目前已经可以在各大平台下载体验游戏,不知道怎么玩的小伙伴下面看乖乖小编为大家介绍小兵大乱斗新手入门少走弯路. 小兵大乱斗攻略大全 <小兵大乱斗>是一款带兵 ...

  4. 王牌竞速服务器维护,王牌竞速攻略大全 新手入门少走弯路[多图]

    王牌竞速这款赛车类型的竞速游戏,还有很多玩家都在询问,那么大家如何快速上手呢,下面为大家介绍王牌竞速攻略大全. 王牌竞速攻略大全 网易激爽驾驶手游<王牌竞速>"不飙寻常路&quo ...

  5. 超级兔子人三人按键_超级兔子人攻略大全 新手入门少走弯路[视频][多图]

    超级兔子人是一款非常有趣的休闲类型游戏,很多新手玩家都不知这款游戏怎么玩,接下来嗨客小陈为大家介绍超级兔子人攻略大全. 超级兔子人攻略大全 从各种3D场景中选择一个闯关模式,可单人进行挑战,也可与好友 ...

  6. 进化计算机小游戏攻略,亘古幻想超详细攻略 新手全方位入门指南

    亘古幻想是一款非常耐玩好玩的卡牌RPG,本作的角色收集.人物培养都有其特点,作为一款人气较高的游戏,该作品每次更新都有萌新入坑,因此本文针对新手玩家,做了全方位的详细攻略,可以帮助大家熟悉游戏,快速成 ...

  7. Unity3D游戏美术全攻略:从入门到精通

    文/拉撒路 Unity现在已经用的很广泛啦,可是却一直没有什么美术向的教程. 程序用方面的内容在各个论坛都有讨论,但是美术似乎很弱势啊. 明明美术也很需要掌握引擎方面的内容嘛! 山谷里的野百合还有春天 ...

  8. 微信小程序全面实战,架构设计 躲坑攻略(小程序入门捷径教程)

    转自:http://www.cnblogs.com/dragondean/p/6247643.html 最近集中开发了两款微信小程序,分别是好奇心日历(每天一条辞典+一个小投票)和好奇心日报(轻量版) ...

  9. 软件测试学习路线全面攻略,从入门到升华......

    目录:导读 前言 一.入门阶段(入行后3个月-1年) 二.提高阶段(入门后3年-5年) 三.升华阶段(老手后5年-10年) 四.总结 前言 测试工程师的工作:TE的根本使命是保护用户和业务的利益 注意 ...

  10. Lisp:AutoLisp入门、操作编程实例详细攻略

    Lisp:AutoLisp入门.操作编程实例详细攻略 目录 AutoLisp入门 1.图文教程 AutoLisp操作 AutoLisp入门 AutoLISP是由Autodesk公司开发的一种LISP程 ...

最新文章

  1. gmr 通信 matlab,matlab使用TCP/IP Server Sockets
  2. git cherry-pick 详解 —— Git 学习笔记 18
  3. 10倍,BoostKit鲲鹏全局缓存3大创新技术助力Ceph性能提升
  4. java shutdowninput,java中socket.shutdownOutput()使用后如果还想用输出流怎么办
  5. 【6.0】组合主键映射
  6. 突然有点想和你唠嗑了~
  7. 虚拟机ubuntu 网速慢的解决方法
  8. 前端程序员:月薪 5K 到 5 万
  9. 程序员量子力学-海森堡式BUG
  10. HTML记事本滚动字幕怎么弄,滚动字幕怎么用word做 如何用WORD制作滚动字幕
  11. 量化投资:研报文本挖掘选股策略
  12. SumaTraPDF
  13. 微信小程序 —— 考勤管理Demo(前后端及数据库)
  14. Centos7 安装部署Kubernetes(k8s)集群过程
  15. MySQL - Row size too large (> 8126). Changing some columns to TEXT or BLOB
  16. 我所认为的产品经理——从读PONY的产品笔记想到的
  17. 政法大学研究员:珊瑚版QQ作者不值得同情
  18. 肯德尔系数怎么分析_Kendall Rank(肯德尔等级)相关系数
  19. 7-11 哈利·波特的考试 (25 point(s))
  20. PAT乙级题 1027 python格式错误(已解决)

热门文章

  1. 【车载IoT】国标《电动汽车远程服务与管理系统技术规范》:车载设备设计规范
  2. MySQL表空间碎片
  3. flask文件上传 flask-uploads
  4. Pr导入录屏视频产生音画不同步问题的解决方法
  5. oracle 同义词循环连,Oracle出现ORA-01775: 同义词的循环链问题
  6. 移动通信基础(8)帧结构
  7. android局域网 nas,华为手机通过群晖NAS备份时提示“本机和您的NAS设备需处于同一局域网”的解决方法...
  8. Centos Siege测试使用
  9. python回归分析
  10. 【黑马程序员】-c函数