51单片机特有的程序语法以及 Keil 软件的根柢操作进程,请咱们必定要有耐性。
咱们首要是用 C 言语来对单片机编程,而有的单片机有那么几条很分外的特有的编程句子,51 单片机就有,先介绍 2 条。
榜首条句子是:sfr P0 = 0x80;
sfr 这个要害字,是 51 单片机特有的,他的作用是界说一个单片机分外功用寄存器(special function register)。51 单片机内部有许多个小模块,每个模块寓居在具有仅有房间号的房间内,一同每个模块都有 8 个操控开关。P0 便是一个功用模块,就住在了 0x80 这个房间里,咱们便是经过设置 P0 内部这个模块的 8 个开关,来让单片机的 P0 这 8 个 IO 口输出高电平或许低电平的。而 51 单片机内部有许多寄存器,假定咱们想运用的话有必要提行进行 sfr 声明。不过 Keil 软件现已把悉数这些声明都预先写好并保存到一个专门的文件中去了,咱们要用的话只需文件开端添加一行#include即可,这个在后边有用法详解。
第二条句子是:sbit LED = P0^0;
这个 sbit,便是对方才所说的 SFR 里面的 8 个开关其间的一个进行界说。经过上边第二条句子后,往后只需在程序里写 LED,就代表了 P0.0 口(“^”这个符号在数字键 6 上边),留神这个 P 有必要大写,也便是说咱们给 P0.0 又取了一个更形象的姓名叫做 LED。
了解了这两个句子后,咱们来大约看一下单片机的分外功用寄存器。请留神,每个类型的单片机都会配有出产厂商所编写的数据手册(Datasheet),所以咱们来看一下 STC89C52 的数据手册,从 21 页到 24 页,悉数是对分外功用寄存器的介绍以及地址映射列表。咱们在运用这个寄存器之前,有必要对这个寄存器的地址进行阐明。是不是花花绿绿的太多了,记不住啊,这个没联络的,不需求你记住,了解一下,后边大有些我会逐步给咱们阐明,稀有些需求用到的时分,自个过来查手册就能够了,做技能不是为了唐塞考试,你能够随时翻阅手册查找你需求的材料。
如图 2-7,是截取的手册中第 22 页最下边的一个表格。
图 2-7 IO 口分外功用寄存器
咱们来看一下这个表,其间 P4 口 STC89C52 对规范 51 的拓宽,咱们先疏忽它,只看前边的 P0、P1、P2、P3 这 4 个,每个 P 口自身又有 8 个操控端口。咱们能够联络咱们的开发板原理图或许图 2-1 来看,那么这么就断定了咱们的单片机一共有 32 个 IO 口(IO,Input 和 Output,别离是输入和输出)。
其间 P0 口地址的地址是 0x80,一共有从 7 到 0 这 8 个 IO 口操控位,后边有个 Reset Value(复位值),这个很首要,是咱们看寄存器必看的一个参数,8 个操控位复位值悉数都是 1。
这便是通知咱们,每逢单片机上电复位的时分,悉数的引脚的值默许是都是 1,即高电平,咱们在方案电路的时分也要充沛的思考这个疑问。
那么上边那 2 条句子,咱们写 sfr 的时分,有必要要根据手册里的这个地址(Add)去写,写sbit 的时分,就能够直接将一个字节其间某一位取出来。咱们编程的时分,也有现成的写好寄存器地址的头文件,咱们直接包括该头文件就能够了,不需求逐一去写了。
关键字:51单片机
引用地址:
51单片机分外功用寄存器操作进程
推荐阅读最新更新时间:2024-11-12 10:26
【51单片机快速入门指南】4.5:I2C 与 TCA6416实现双向 IO 扩展
普中51-单核-A2 STC89C52 MSP430G2553 Launchpad 扩展板 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机:Vofa+ 1.3.10 摘自《Launchpad口袋实验平台(指导书)》、《AY-G2PL KIT_用户手册》 硬知识 对于低速的 IO,可以通过串行转并行的方法扩展。1 片 I2C 接口控制的 IO 扩展芯片 TCA6416A可为 单片机额外扩展出 16 个双向 IO。 扩展输出口的方法其实就是将串行数据转为并行数据输出,串入并出移位寄存器加一个锁存器就可以将串行转并行输
[单片机]
基于51单片机的脉搏体温监测仪
一.硬件方案 系统以STC89C52单片机为核心,以光电传感器利用单片机系统内部定时器来计算时间,由光电传感器感应产生信号,单片机通过对信号累加得到脉搏跳动次数,时间由定时器定时而得。系统运行中可以通过观察指示灯闪烁,若均匀闪烁说明测量值准确。系统停止运行时,能够显示总的脉搏次数,此外我们也加了温度传感器DS18B20来检测人体温。 主要由51单片机+1602液晶显示+红外对管采集+按键+蜂鸣组成;如图: 二.设计功能 (1)本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用)单片机。 (2)LCD1602液晶显示当前的心率和当前体温,心率单位是心率/分钟,温度单位为摄氏度。 (3)手指放到
[单片机]
51单片机 EEPROM 24c02 I2C代码封装保存实现流水灯
这里把EEPROM 24c02封装起来,今后可以直接调用,其连线方式为:SDA-P2.1;SCL-P2.0;WP-VCC _ :i2c.c 1 /*-- 2 名称:IIC协议 3 内容:函数是采用软件延时的方法产生SCL脉冲,固对高晶振频率要作 一定的修改....(本例是1us机器 4 周期,即晶振频率要小于12MHZ) 5 */ 6 #include i2c.h 7 #define _Nop() _nop_() //定义空指令 8 bit ack; //应答标志位 9 sbit SDA=P2^1; 10 sbit SCL=P2^0; 11 /* 12 uS延时函数,含有输入参数 unsig
[单片机]
51单片机基础计算器
电路原理图如下: 单片机源程序如下: /* 接盘按键说明: -------------------------------------------------- | 1 | 2 | 3 | + | - - - - - - - - - - - - - | 4 | 5 | 6 | - | - - - - - - - - - - - - - | 7 | 8 | 9 | * | - - - - - - - - - - - - - | C | 0 | = | / | ------------------------------
[单片机]
一种基于51单片机的多任务机制及应用
引言 传统的单片机程序一般采用单任务机制,单任务系统具有简单直观、易于控制的优点。然而由于程序只能按顺序依次执行,缺乏灵活性,只能使用中断函数实时地处理一些较短的任务,在较复杂的应用中使用极为不便。嵌入式多任务操作系统的出现解决了这个问题。在多任务系统中,可以同时执行多个并行任务,任务之间可以相互跳转。但是嵌入式操作系统在提供强大功能的同时,也带来了代码量大、结构复杂、对硬件要求较高、开发难度大且成本高等问题。而很多时候只需要实现简单的多任务操作就可以满足实际需要,本文设计的这种简单的多任务机制,在只增加极少量C语言代码的前提下,不需使用汇编,无需对原本的程序进行大改动,就可以实现多任务操作。 实时操作系统RTOS的
[单片机]
51单片机4种工作方式及应用示例
一、方式0: 二、方式1 三、方式2 四、方式3
[单片机]
51单片机开发之中断
4.2 中断 4.2.1 中断介绍 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。 当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完完后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断,实现这种功的部件称为中断系统,请示CPU中断的请求源称为中断源。 微型机的中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断,要求为它服务的时候,这就存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别,CPU总是先响应优先级别最高的中断请求。 当CP
[单片机]
基于51单片机的语音万年历设计
一.硬件方案 本电路是由AT89C52单片机为控制核心,具有在线程功能,低功耗,能在3V超低压工作;时钟电路有DS1302提供,它是一种高性能.低功耗,带RAM的实时时钟电路,它可以对年,月,日,周日,时,分,秒进行及时,同时具有闰年补偿功能,工作电压为2.5~5.5V.采用三线接口与CPU进行同步通信,并可采用突发方式一次产送多个字节的时钟信号或RAM数据.具有寿命长精度高和低功耗等特点.温度数据有DS18B20采集.显示部分有LCD12864液晶显示。 主要由51单片机+最小系统+LCD12864液晶显示模块+时钟模块+温度采集模块+按键模块+语音芯片及喇叭;如图: 二.设计功能 (1)采用DS1302时钟芯片、DS1
[单片机]