Reg51.h

这个头文件将C程序中能用到的寄存器名或寄存器中某位的名称与硬件地址值做了对应,在程序中直接写出这些名称,集成开发环境就能识别,并最终转换成机器代码,实现对单片机各硬件资源的准确操控。

REG51内部规定的SFR寄存器的地址,1.SFR是Special Function Register(特殊功能寄存器)的缩写。

  SFR是80C51单片机中各功能部件对应的寄存器,用于存放相应功能部件的控制命令,状态或数据。它是80C51单片机中最具有特殊的部分,现在所有80C51系列功能的增加和扩展几乎都是通过增加特殊功能寄存器SFR来达到目的的。

  对于80C51系列中的80C51,共定义了21个特殊功能寄存器。在80C52中,除了80C51的21个特殊功能寄存器,还增加了5个,共计26个:

* BYTE Register */
sfr P0 = 0x80; //P0口
sfr P1 = 0x90; //P1口
sfr P2 = 0xA0; //P2口
sfr P3 = 0xB0; //P3口
sfr PSW = 0xD0; //程序状态字,具体位意义见位定义
sfr ACC = 0xE0; //累加器,程序员最常用的
sfr B = 0xF0; //寄存器,主要用于乘除
sfr SP = 0x81; //堆栈指针,初始化为07;先加1后压栈,先出栈再减1,
sfr DPL = 0x82;
sfr DPH = 0x83; //数据指针,用途大
sfr PCON = 0x87; //电源控制
sfr TCON = 0x88; //Timer/Counter控制
sfr TMOD = 0x89; //Timer/Counter方式控制
sfr TL0 = 0x8A;
sfr TL1 = 0x8B; //
sfr TH0 = 0x8C; //存着当前的计数值
sfr TH1 = 0x8D; //我就想不明白,当时设计的时候,为什么不把TH0,TL0放在连续的地址!
sfr IE = 0xA8; //好东西,中断控制
sfr IP = 0xB8; //中断优先级控制,没有设计过要求时间严格的系统,所以至今没有用过
sfr SCON = 0x98; //哇,熟悉,串口控制寄存器
sfr SBUF = 0x99; //哇,更熟悉,串口缓冲寄存器

sbit CY = 0xD7; //进位或借位,有就是1,没有就是0
sbit AC = 0xD6; //辅助进借位,(麻烦b)
sbit F0 = 0xD5; //没有具体用途,可以由用户决定他的意义,所以它就没有意义
sbit RS1 = 0xD4;
sbit RS0 = 0xD3; //工作寄存器选择,这个在下面解释
sbit OV = 0xD2; //over!溢出,有是1,没有是0
sbit P = 0xD0; //奇偶校验,奇数个1是1

sbit TF1 = 0x8F; //T1的中断请求标志
sbit TR1 = 0x8E; //Timer 1 running,好记吧~
sbit TF0 = 0x8D; //
sbit TR0 = 0x8C; //把上面两个1换成0
sbit IE1 = 0x8B; //interrupt external 1 外中断请求标志
sbit IT1 = 0x8A; //interrupt triggle 1 外中断触发方式
sbit IE0 = 0x89;
sbit IT0 = 0x88; //同样,把上面的两个1换成0

sbit EA = 0xAF; //Enable all哇,重要,全局中断控制,光着他,哈哈,什么都不用作了,就像放假一样
sbit ES = 0xAC; //Enable Serial,开串口中断
sbit ET1 = 0xAB; //Enable Timer/Counter 1
sbit EX1 = 0xAA; //Enable External 1
sbit ET0 = 0xA9; //Enable Timer/counter 0
sbit EX0 = 0xA8; //Enable External 0

sbit PS = 0xBC; //串行中断优先级
sbit PT1 = 0xBB; //T1优先级
sbit PX1 = 0xBA; //外部中断1优先级
sbit PT0 = 0xB9; //
sbit PX0 = 0xB8; //上面两个1换成0

//控制寄存器!!!!
sbit RD = 0xB7; //读
sbit WR = 0xB6; //写
sbit T1 = 0xB5; //T/C1
sbit T0 = 0xB4; //T/C0
sbit INT1 = 0xB3; //外中断1
sbit INT0 = 0xB2; //外中断0
sbit TXD = 0xB1; //串行发送
sbit RXD = 0xB0; //串行接收

sbit SM0 = 0x9F; //
sbit SM1 = 0x9E; //串口工作方式
sbit SM2 = 0x9D; //什么鬼特征位,要用查书,或者等我以后解释,啊哈
sbit REN = 0x9C; //串行接收允许
sbit TB8 = 0x9B; //收到的第九位
sbit RB8 = 0x9A; //要发的第九位
sbit TI = 0x99; //哇,熟悉吧,发送完成中断标志
sbit RI = 0x98; //接收完成中断标志

转载于:https://www.cnblogs.com/perfy/p/3317531.html

C51寄存器详解(Reg51.h)相关推荐

  1. 16位汇编语言第二讲系统调用原理,以及各个寄存器详解

    16位汇编语言第二讲系统调用原理,以及各个寄存器详解 昨天已将简单的写了一下汇编代码,并且执行了第一个显示到屏幕的helloworld 问题? helloworld怎么显示出来了. 一丶显卡,显存的概 ...

  2. ARM 寄存器 详解

    From( ARM 寄存器详解 ):https://blog.csdn.net/sandeldeng/article/details/52954781 ARM 汇编基础教程:2.数据类型和寄存器:ht ...

  3. ARM通用寄存器及状态寄存器详解

    关注.星标公众号,直达精彩内容 素材来源:https://blog.csdn.net/qq_34430371/article/details/125820927 整理:技术让梦想更伟大 | 李肖遥 笔 ...

  4. x86 - CPU架构/寄存器详解 (三) 保护模式

    系列文章 x86 - CPU架构/寄存器详解 (一)x86.8086.i386.IA-32 是什么? x86 - CPU架构/寄存器详解 (二) 实模式(8086模式) x86 - CPU架构/寄存器 ...

  5. 黑猫带你学eMMC协议第7篇:eMMC各种寄存器详解(register)

    1 前言 1.1 声明 本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言. 文章为个人辛苦整理,付费内容,禁止私自转载. 文章所在专栏:<黑猫带你学:eMMC协议详解&g ...

  6. 音视频传输:RTP协议详解和H.264打包方案

    问题背景: 前面讲解了PS.TS.FLV这三种媒体封装格式,现在新开一个系列讲解下传输协议,这里面会包含RTP.RTSP.HLS.RTMP等.当然最复杂的封装格式MP4在准备中,后面会把封装格式这个系 ...

  7. 51单片机auxr寄存器_MCS-51单片机特殊功能寄存器详解

    1.      定时器/计数器的方式寄存器TMOD TMOD是一个8位的特殊功能寄存器,对应的地址是89H,不可位寻址. A      主要完成三个功能: *确定选择定时器还是计数器: *选择何种工作 ...

  8. [register]-05-ARMv8中常用系统寄存器详解

    PSTATE:程序状态寄存器 SP_ELx(x>0):在EL1/EL2/EL3 level中,如果spsel=0,则使用SP_ELx(x>0) SP_EL0 :在所有level中,如果sp ...

  9. Linux c modbus 线程,Modbus读写模拟量寄存器详解

    读可读写模拟量寄存器: 发送命令(主机向从机)格式: [设备地址] [命令号03] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高 ...

  10. 五、CPU详解、寄存器详解、标志寄存器详解

    控制器.运算器.寄存器组成CPU 控制器:领导 运算器:员工,计算数据 寄存器:寄存数据信息,在内存与运算器之间 硬盘运算速度<内存运算速度<寄存器运算速度 寄存器:(寄存器16位[寄存器 ...

最新文章

  1. html图片缩放6,四款css 图片按比例缩放实例(兼容ie6,7,firefox)
  2. 开发遇到的问题---【spring-security权限控制框架】
  3. linux二进制文件构建mysql_linux上二进制部署mysql详细步骤(测试环境常用)
  4. 【Linux】一步一步学Linux——nstat命令(190)
  5. golang实现聊天室(二)
  6. oracle删除当前用户下所有表
  7. 您的618快递正在燃烧?12吨快递货车高速上起火,网友:代入感极强!
  8. HDFS超租约异常总结(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException)
  9. 一点关于MD5计算的封装
  10. JxBrowser的概述与简单应用
  11. 山东大学软件学院计算机组成原理课程设计实验四
  12. 期货反跟单-镜像零滑点软件真有那么靠谱吗?
  13. 复变函数和积分变换(Complex Function I)
  14. Linux tar(打包,解打包)命令
  15. 程序员专属小情话,哎呦,不错哦!| 程序员有话说
  16. python图片换脸_用Python实现简单的‘换脸’
  17. U盘中病毒,除病毒,要除根
  18. 2022.12.10-参加中国电子学会的青少年软件编程等级考试C语言8级(通过)
  19. Ubuntu安装中文输入法以及快捷键设置
  20. a标签去掉下划线_HTML 所有标签列表

热门文章

  1. ipv4网络配置方法
  2. 打开和禁用IPV6的方法
  3. Android UI学习之TextView
  4. proc文件系统实现用户空间与内核空间的数据通信
  5. dns工作过程及原理 (linux dns及android dan的实现
  6. ffmpeg 如何音视频同步
  7. 和foreach的区别和应用场景_介绍下Set、Map、WeakSet 和 WeakMap 的区别?
  8. 【快速乘与快速幂例题讲解】相乘取余爆long long?试试快速乘吧!
  9. cjson 对象是json数组型结构体_CJSON中有关于在对象中放数组,数组中放对象,以及其解析...
  10. crystal 分组计算记录行数_SPL 分组优化技巧