好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

51头文件详解.pdf

3页
  • 卖家[上传人]:豆浆
  • 文档编号:11653816
  • 上传时间:2017-09-03
  • 文档格式:PDF
  • 文档大小:216.40KB
  • / 3 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1 51 头文件 详解 /*-------------------------------------------------------------------------- REG51.H //REG 就是 Register(寄存器 )的意思,对 51 单片机的操作就是对寄存器的操作 Header file for generic 80C51 and 80C31 microcontroller. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. -------------------------------------------------------------------------------------------- 51 单片机是 8 位地址的,用十六进制来表示就是两位十六进制数,所以下面看到的都是两位十六进制的地址 关于位寻址及操作,有个简便方法判断,将字节地址换成 10 进制后能否被 “8” 整除,能被 “8” 整除的就 能进行位操作,不能被“ 8” 整除就不能,如 P1 地址为 90H,10 进制为 144 144/8=18,能被整除,所以可以位 操作。

      再如 TMOD 地址为 89H, 10 进制为 137 137/8=17.125,不能被整除,所以不可以位操作 --------------------------------------------------------------------------------------------*/ #ifndef __REG51_H__ //如果没有定义 __REG51_H__,那么定义它 #define __REG51_H__ /* BYTE Register */ /* ------------------------------------------------- sfr 是 special function register,特殊功能寄存器 -------------------------------------------------*/ sfr P0 = 0x80; // P0 口 sfr P1 = 0x90; // P1 口 sfr P2 = 0xA0; // P2 口 sfr P3 = 0xB0; // P3 口 sfr PSW = 0xD0; // Program Status Word,程序状态字 sfr ACC = 0xE0; // 累加器 sfr B = 0xF0; // 乘除法辅助寄存器 sfr SP = 0x81; // Stack Point,堆栈指针 sfr DPL = 0x82; // 数据指针 (低 8 位 ) sfr DPH = 0x83; // 数据指针 (高 8 位 ) sfr PCON = 0x87; // Power Control,电源控制和波特率选择 sfr TCON = 0x88; // Timer Controller 定时器控制 sfr TMOD = 0x89; // Timer Mode 定时器方式控制寄存器,不可寻址 sfr TL0 = 0x8A; // 定时器 0 低 8 位 sfr TL1 = 0x8B; // 定时器 1 低 8 位 sfr TH0 = 0x8C; // 定时器 0 高 8 位 sfr TH1 = 0x8D; // 定时器 1 高 8 位 sfr IE = 0xA8; // Interrupt Enable 中断使能 sfr IP = 0xB8; // Interrupt Priority 中断优先级控制 sfr SCON = 0x98; // Seriel Controller 串行口控制寄存器,监视和控制 51 芯片串行口的工作状态 sfr SBUF = 0x99; // Serial Buffer,串行数据收 /发缓冲器 2 /* BIT Register */ /* PSW Program Status Word 程序状态字 */ /* --------------------------------------------------------------------------------------------- sbit 定义特殊功能寄存器的位变量 ,映射到 IO 口( P1^1 这种 IO 口的 “ 位 ” ) bit 和 int char 差不多,只不过 char=8 位 , bit=1 位而已。

      都是变量,编译器在编译过程中分配地址 除非指定,否则这个地址是随机分配的这个 地址是整个可寻址空间, RAM+FLASH+扩展空间 bit 只 有 0 和 1 两种值,和 Windows 下 VC 中的 BOOL 类似 ---------------------------------------------------------------------------------------------*/ sbit CY = 0xD7; // PSW.7, carry,进位标志,在执行加减运算指令时,如果运算结果的最高位 (D7) 发生了进位或借位,则 CY 由硬件自动置 1 sbit AC = 0xD6; // PSW.6, assistant carry,半进位标志位,也称为辅助标志位在执行加减运算指令时,如 果运算结果的低半字节 (D3)发生了向高半字节进位或借位,则 AC 由硬件自动置 1 sbit F0 = 0xD5; // PSW.5,用户标志位用户可以根据需要对 F0、 F1 赋予一定的含义,由用户置 1 和清 0,作为软件标 志 sbit RS1 = 0xD4; // PSW.4,工作寄存器组选择控制位。

      通过对这两位设定,可以从 4 个工作寄存器组中选择一 组作为当 前工作寄存器 sbit RS0 = 0xD3; // PSW.3 sbit OV = 0xD2; // PSW.2, overflow,溢出标志位,有两种情况影响该位一是执行加减运算时,如果 D7 或 D6 任一位,并且只一位发生了进位或借位,则 OV 自动置 1 /* sbit F1 = 0xD1 */ //这个原来的头文件是没有的,自己加上去的,和 F0 作用一样 sbit P = 0xD0; // PSW.1,奇偶标志位每条指令执行完后,该位都会指示当前累加器 A 中 1 的 个数如果 A 中有奇数 个 1,则 P 自动置 1 /* TCON Timer Controller 定时器控制 */ sbit TF1 = 0x8F; // Timer1 Flag, T1 中断标志位 sbit TR1 = 0x8E; // Timer1 Run, T1 运行控制位 sbit TF0 = 0x8D; // Timer0 Flag, T0 中断标志位 sbit TR0 = 0x8C; // Timer0 Run, T0 运行控制位 sbit IE1 = 0x8B; // Interrupt1 Exterior,外部中断 1 中断标志位 sbit IT1 = 0x8A; // Interrupt1 Touch,外部中断 1 触发方式选择位 sbit IE0 = 0x89; // Interrupt0 Exterior,外部中断 0 中断标志位 sbit IT0 = 0x88; // Interrupt0 Touch,外部中断 0 触发方式选择位 /* IE Interrupt Enable 中断使能 */ sbit EA = 0xAF; // IE.7, Enable All Interrupt,中断总允许位 sbit ES = 0xAC; // IE.4, Enable Serial,串行口中断允许位 sbit ET1 = 0xAB; // IE.3, Enable Timer 1, T1 中断允许位 sbit EX1 = 0xAA; // IE.2, Enable Exterior 1,外部中断 1 中断允许位 sbit ET0 = 0xA9; // IE.1, Enable Timer 0, T0 中断允许 位 sbit EX0 = 0xA8; // IE.0, Enable Exterior 0,外部中断 0 中断允许位 /* IP Interrupt Priority 中断优先级控制 */ 3 sbit PS = 0xBC; // IP.4, Priority Serial 串口优先级标志位 sbit PT1 = 0xBB; // IP.3, Priority Timer 1 定时器 1 优先级标志位 sbit PX1 = 0xBA; // IP.2, Priority Exterior 1 外部中断 1 优先级标志位 sbit PT0 = 0xB9; // IP.1, Priority Timer 0 定时器 0 优先级标志位 sbit PX0 = 0xB8; // IP.0, Priority Exterior 0 外部中断 0 优先级标志位 /* P3 */ sbit RD = 0xB7; // Read Data,读数据 sbit WR = 0xB6; // Write Data,写数据 sbit T1 = 0xB5; // Timer 1,定时器 1,由 TMOD 的高四位控制 sbit T0 = 0xB4; // Timer 0,定时器 0,由 TMOD 的低四位控制 sbit INT1 = 0xB3; // Interrupt 1,中断 1 sbit INT0 = 0xB2; // Interrupt 0,中断 0 sbit TXD = 0xB1; // Receive Data,串口接收端 sbit RXD = 0xB0; // Transmit Data,串口发送端 /* SCON Seriel Controller 串行口控制 */ sbit SM0 = 0x9F; // SM0 和 SM1 组成 4 种工作方式,对应有不同特性 sbit SM1 = 0x9E; // sbit SM2 = 0x9D; // 多机通信控制位。

      多机通信是工作于方式 2 和方式 3, SM2 位主要用于方式 2 和方式 3 接收状态,当串行口工作于方式 2 或 3,以及 SM2=1 时,只有当接收到第 9 位数据( RB8) 为 1 时,才把接收到的前 8 位数据送入 SBUF,且置位 RI 发出中断申请,否则会将接受 到的数据放弃当 SM2=0 时,就不管第位数据是 0 还是 1,都难得数据送入 SBUF,并发 出中断申请工作于方式 0 时, SM2 必须为 0 sbit REN = 0x9C; // Receive Enable,使能接收 sbit TB8 = 0x9B; // 发送接收数据位 8 sbit RB8 = 0x9A; // 接收数据位 8 sbit TI = 0x99; // 发送中断标志位 sbit RI = 0x98; // 接收中断标志位 #endif 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.