1、reg52.h

头文件,它定义了单片机的一些端口物理地址。

  1. #ifndef __REG52_H__
  2. #define __REG52_H__
  3.  
  4. /* BYTE Registers */
  5. sfr P0 = 0x80;
  6. sfr P1 = 0x90;
  7. sfr P2 = 0xA0;
  8. sfr P3 = 0xB0;
  9. sfr PSW = 0xD0;
  10. sfr ACC = 0xE0;
  11. sfr B = 0xF0;
  12. sfr SP = 0x81;
  13. sfr DPL = 0x82;
  14. sfr DPH = 0x83;
  15. sfr PCON = 0x87;
  16. sfr TCON = 0x88;
  17. sfr TMOD = 0x89;
  18. sfr TL0 = 0x8A;
  19. sfr TL1 = 0x8B;
  20. sfr TH0 = 0x8C;
  21. sfr TH1 = 0x8D;
  22. sfr IE = 0xA8;
  23. sfr IP = 0xB8;
  24. sfr SCON = 0x98;
  25. sfr SBUF = 0x99;
  26.  
  27. /* 8052 Extensions */
  28. sfr T2CON = 0xC8;
  29. sfr RCAP2L = 0xCA;
  30. sfr RCAP2H = 0xCB;
  31. sfr TL2 = 0xCC;
  32. sfr TH2 = 0xCD;
  33.  
  34. /* BIT Registers */
  35. /* PSW */
  36. sbit CY = PSW^7;
  37. sbit AC = PSW^6;
  38. sbit F0 = PSW^5;
  39. sbit RS1 = PSW^4;
  40. sbit RS0 = PSW^3;
  41. sbit OV = PSW^2;
  42. sbit P = PSW^0; //8052 only
  43.  
  44. /* TCON */
  45. sbit TF1 = TCON^7;
  46. sbit TR1 = TCON^6;
  47. sbit TF0 = TCON^5;
  48. sbit TR0 = TCON^4;
  49. sbit IE1 = TCON^3;
  50. sbit IT1 = TCON^2;
  51. sbit IE0 = TCON^1;
  52. sbit IT0 = TCON^0;
  53.  
  54. /* IE */
  55. sbit EA = IE^7;
  56. sbit ET2 = IE^5; //8052 only
  57. sbit ES = IE^4;
  58. sbit ET1 = IE^3;
  59. sbit EX1 = IE^2;
  60. sbit ET0 = IE^1;
  61. sbit EX0 = IE^0;
  62.  
  63. /* IP */
  64. sbit PT2 = IP^5;
  65. sbit PS = IP^4;
  66. sbit PT1 = IP^3;
  67. sbit PX1 = IP^2;
  68. sbit PT0 = IP^1;
  69. sbit PX0 = IP^0;
  70.  
  71. /* P3 */
  72. sbit RD = P3^7;
  73. sbit WR = P3^6;
  74. sbit T1 = P3^5;
  75. sbit T0 = P3^4;
  76. sbit INT1 = P3^3;
  77. sbit INT0 = P3^2;
  78. sbit TXD = P3^1;
  79. sbit RXD = P3^0;
  80.  
  81. /* SCON */
  82. sbit SM0 = SCON^7;
  83. sbit SM1 = SCON^6;
  84. sbit SM2 = SCON^5;
  85. sbit REN = SCON^4;
  86. sbit TB8 = SCON^3;
  87. sbit RB8 = SCON^2;
  88. sbit TI = SCON^1;
  89. sbit RI = SCON^0;
  90.  
  91. /* P1 */
  92. sbit T2EX = P1^1; // 8052 only
  93. sbit T2 = P1^0; // 8052 only
  94.  
  95. /* T2CON */
  96. sbit TF2 = T2CON^7;
  97. sbit EXF2 = T2CON^6;
  98. sbit RCLK = T2CON^5;
  99. sbit TCLK = T2CON^4;
  100. sbit EXEN2 = T2CON^3;
  101. sbit TR2 = T2CON^2;
  102. sbit C_T2 = T2CON^1;
  103. sbit CP_RL2 = T2CON^0;
  104.  
  105. #endif

头文件我们可以学习到:

1、头文件格式

#ifndef   xx名称xxx

#define  xx名称xxx

xxxxxxx内容xxxxxxxxxx

xxxxxxx内容xxxxxxxxxx

#endif

(文件保存为reg52.h,并在引用文件中添加“#include "reg52.h"”)

2、sfr和sbit

sfr(Speical Function Register特殊功能寄存器的简称),它是单片计算机中的一组特殊的临时存储区域,用于动态存放计算机运行过程的一些状态信息、并依此做相应的控制。对于SFR是固定的,是在单片机设计时定义好的,只需添加对应的头文件即可。当然,再没有被定义的区间我们可以采用sfr来定义,如

sfr P1 = 0x90; //定义P1 I/O 口,其地址90H    (  该常数必须在特殊功能寄存器的地址范围之内(80H-FFH)    ).

sbit 可定义 位寻址对象.如访问特殊功能寄存器中的某位。如

sft P1 = 0x90;

sbit P1_1 = P1 ^ 1; //先定义一个特殊功能寄存器名再指定位变量名所在的位置,当可寻址位位于特殊功能寄存器中时可采用这种方法

或者用sbit P1_1 = 0x90 ^ 1,是一样的效果

从头文件中学习sfr和sbit的更多相关文章

  1. mapper.xml文件中标签没有提示的解决

    1.首先我们来看看mapper.xml的头文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTY ...

  2. PE结构学习笔记--关于AddressOfEntryPoint位置在文件中怎么确定问题

    第一次学习PE结构,也不知道有没有更好的办法. 1.AddressOfEntryPoint 这个成员在OptionalHeader里面,OptionalHeader的类型是一个IMAGE_OPTION ...

  3. Linux学习_按时间顺序解压多个文件,搜索文件中的内容

    ls的结果按时间数据先排序,再取末尾5个文件,再调用tar命令 ls -1 | sort -u | tail -5 |xargs -n1 tar xzvf 利用grep命令从文件中搜索. grep - ...

  4. (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql

    http://blog.csdn.net/yerenyuan_pku/article/details/71893689 前面对MyBatis框架的学习中,我们对Mapper.xml映射文件多少有些了解 ...

  5. 深度学习tensorflow实战笔记(1)全连接神经网络(FCN)训练自己的数据(从txt文件中读取)

    1.准备数据 把数据放进txt文件中(数据量大的话,就写一段程序自己把数据自动的写入txt文件中,任何语言都能实现),数据之间用逗号隔开,最后一列标注数据的标签(用于分类),比如0,1.每一行表示一个 ...

  6. 【转】Mybatis 3.1中 Mapper XML 文件 的学习详解

    MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 ...

  7. shell编程学习笔记(七):Shell中将指定内容输出到文件中

    我们这里把echo要打印的内容输出到文件中 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts # vim script06.sh 开始编写script ...

  8. vim学习日志(7):替换、删除文件中的字符

    vim全局替换文件: 语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行. 如:“1,20 ...

  9. 新手C#s.Split(),s.Substring(,)以及读取txt文件中的字符串的学习2018.08.05

    s.split()用于字符串分割,具有多种重载方法,可以通过指定字符或字符串分割原字符串成为字符串数组. //s.Split()用于分割字符串为字符串数组,StringSplitOptions.Rem ...

随机推荐

  1. 添加exe为windows service服务

    [方法一] 一.介绍 srvany.exe是Microsoft Windows Resource Kits工具集的一个实用小工具,用于将EXE程序作为Windows服务运行.srvany是其注册程序的 ...

  2. BZOJ1123或洛谷3469 [POI2008]BLO-Blockade

    BZOJ原题链接 洛谷原题链接 若第\(i\)个点不是割点,那么只有这个点单独形成一个连通块,其它点依旧连通,则答案为\(2\times (n-1)\). 若第\(i\)个点是割点,那么去掉这个点相关 ...

  3. Java中方法的重写

    ★★前提:方法的重写建立在继承关系上★★ 在Java程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类所有的特征,继承了父类所有的方法和变量. 所谓方法的重写是指子类中的方法与父类中继承 ...

  4. vim删除单词

    参考资料: https://blog.csdn.net/grey_csdn/article/details/72355735 混迹于Windows.Linux以及Mac,选择加强自己的VIM水平应该不 ...

  5. 使用hMailServer搭建邮件服务器

    本文没有什么高深的技术内容,只是使用hMailServer,介绍搭建邮件服务器的全过程,供参考. 一.安装邮件服务器组件 打开软件,点下一步 选择存储数据的数据库,这里有两种选择, 一种是使用嵌入型数 ...

  6. 【UI测试】--多窗口&系统资源

  7. 解决ubuntu常见问题

    cd /usr/local/hadoop 1. bash: cd: ~:Permission denied 报错:bash: cd: /usr/local/hadoop:Permission deni ...

  8. navicat下创建和执行存储过程

  9. 树状数组训练题1:弱弱的战壕(vijos1066)

    题目链接:弱弱的战壕 这道题似乎是vijos上能找到的最简单的树状数组题了. 原来,我有一个错误的思想,我的设计是维护两个树状数组,一个是横坐标,一个是纵坐标,然后读入每个点的坐标,扔进对应的树状数组 ...

  10. Java第14章笔记

    Java 中无参无返回值和带参带返回值习题 编写一个 Java 程序,实现输出学生年龄的最大值 要求: 1. 要求通过定义无参带返回值的方法来实现,返回值为最大年龄 2. 方法中将​学生年龄保存在数组 ...