精华内容
下载资源
问答
  • reg51.h和reg52.h头文件

    千次阅读 2020-02-07 19:46:58
    c51(用于单片机开发的一种c语言)的头文件。...reg52.h文件中的操作则写成P1^1。表示方法不一样而已。另外前者是特指ATMEL公司的52系列单片机,后者指所有52系列的单片机。 Table of Contents reg51.h reg52.h...

    c51(用于单片机开发的一种c语言)的头文件。类似于头文件AT89X52.h。这两个头文件基本是一样的,只是在使用时对位的定义不一样,at89x52.h文件中对P1.1的操作是写成P1_1;reg52.h文件中的操作则写成P1^1。表示方法不一样而已。另外前者是特指ATMEL公司的52系列单片机,后者指所有52系列的单片机。

    Table of Contents

    reg51.h

    reg52.h


    reg51.h

    /*--------------------------------------------------------------------------
    REG51.H
    Header file for generic 80C51 and 80C31 microcontroller.
    Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
    All rights reserved.
    --------------------------------------------------------------------------*/
    #ifndef __REG51_H__
    #define __REG51_H__
    /* BYTE Register */
    sfr P0 = 0x80;
    sfr P1 = 0x90;
    sfr P2 = 0xA0;
    sfr P3 = 0xB0;
    sfr PSW = 0xD0;
    sfr ACC = 0xE0;
    sfr B = 0xF0;
    sfr SP = 0x81;
    sfr DPL = 0x82;
    sfr DPH = 0x83;
    sfr PCON = 0x87;
    sfr TCON = 0x88;
    sfr TMOD = 0x89;
    sfr TL0 = 0x8A;
    sfr TL1 = 0x8B;
    sfr TH0 = 0x8C;
    sfr TH1 = 0x8D;
    sfr IE = 0xA8;
    sfr IP = 0xB8;
    sfr SCON = 0x98;
    sfr SBUF = 0x99;
    /* BIT Register */
    /* PSW */
    sbit CY = 0xD7;
    sbit AC = 0xD6;
    sbit F0 = 0xD5;
    sbit RS1 = 0xD4;
    sbit RS0 = 0xD3;
    sbit OV = 0xD2;
    sbit P = 0xD0;
    /* TCON */
    sbit TF1 = 0x8F;
    sbit TR1 = 0x8E;
    sbit TF0 = 0x8D;
    sbit TR0 = 0x8C;
    sbit IE1 = 0x8B;
    sbit IT1 = 0x8A;
    sbit IE0 = 0x89;
    sbit IT0 = 0x88;
    /* IE */
    sbit EA = 0xAF;
    sbit ES = 0xAC;
    sbit ET1 = 0xAB;
    sbit EX1 = 0xAA;
    sbit ET0 = 0xA9;
    sbit EX0 = 0xA8;
    /* IP */
    sbit PS = 0xBC;
    sbit PT1 = 0xBB;
    sbit PX1 = 0xBA;
    sbit PT0 = 0xB9;
    sbit PX0 = 0xB8;
    /* P3 */
    sbit RD = 0xB7;
    sbit WR = 0xB6;
    sbit T1 = 0xB5;
    sbit T0 = 0xB4;
    sbit INT1 = 0xB3;
    sbit INT0 = 0xB2;
    sbit TXD = 0xB1;
    sbit RXD = 0xB0;
    /* SCON */
    sbit SM0 = 0x9F;
    sbit SM1 = 0x9E;
    sbit SM2 = 0x9D;
    sbit REN = 0x9C;
    sbit TB8 = 0x9B;
    sbit RB8 = 0x9A;
    sbit TI = 0x99;
    sbit RI = 0x98;
    #endif

    reg52.h

    /*--------------------------------------------------------------------------
    REG52.H
    Header file for generic 80C52 and 80C32 microcontroller.
    Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
    All rights reserved.
    --------------------------------------------------------------------------*/
    #ifndef __REG52_H__
    #define __REG52_H__
    /* BYTE Registers */
    sfr P0 = 0x80;
    sfr P1 = 0x90;
    sfr P2 = 0xA0;
    sfr P3 = 0xB0;
    sfr PSW = 0xD0;
    sfr ACC = 0xE0;
    sfr B = 0xF0;
    sfr SP = 0x81;
    sfr DPL = 0x82;
    sfr DPH = 0x83;
    sfr PCON = 0x87;
    sfr TCON = 0x88;
    sfr TMOD = 0x89;
    sfr TL0 = 0x8A;
    sfr TL1 = 0x8B;
    sfr TH0 = 0x8C;
    sfr TH1 = 0x8D;
    sfr IE = 0xA8;
    sfr IP = 0xB8;
    sfr SCON = 0x98;
    sfr SBUF = 0x99;
    /* 8052 Extensions */
    sfr T2CON = 0xC8;
    sfr RCAP2L = 0xCA;
    sfr RCAP2H = 0xCB;
    sfr TL2 = 0xCC;
    sfr TH2 = 0xCD;
    /* BIT Registers */
    /* PSW */
    sbit CY = PSW^7;
    sbit AC = PSW^6;
    sbit F0 = PSW^5;
    sbit RS1 = PSW^4;
    sbit RS0 = PSW^3;
    sbit OV = PSW^2;
    sbit P = PSW^0; //8052 only
    /* TCON */
    sbit TF1 = TCON^7;
    sbit TR1 = TCON^6;
    sbit TF0 = TCON^5;
    sbit TR0 = TCON^4;
    sbit IE1 = TCON^3;
    sbit IT1 = TCON^2;
    sbit IE0 = TCON^1;
    sbit IT0 = TCON^0;
    /* IE */
    sbit EA = IE^7;
    sbit ET2 = IE^5; //8052 only
    sbit ES = IE^4;
    sbit ET1 = IE^3;
    sbit EX1 = IE^2;
    sbit ET0 = IE^1;
    sbit EX0 = IE^0;
    /* IP */
    sbit PT2 = IP^5;
    sbit PS = IP^4;
    sbit PT1 = IP^3;
    sbit PX1 = IP^2;
    sbit PT0 = IP^1;
    sbit PX0 = IP^0;
    /* P3 */
    sbit RD = P3^7;
    sbit WR = P3^6;
    sbit T1 = P3^5;
    sbit T0 = P3^4;
    sbit INT1 = P3^3;
    sbit INT0 = P3^2;
    sbit TXD = P3^1;
    sbit RXD = P3^0;
    /* SCON */
    sbit SM0 = SCON^7;
    sbit SM1 = SCON^6;
    sbit SM2 = SCON^5;
    sbit REN = SCON^4;
    sbit TB8 = SCON^3;
    sbit RB8 = SCON^2;
    sbit TI = SCON^1;
    sbit RI = SCON^0;
    /* P1 */
    sbit T2EX = P1^1; // 8052 only
    sbit T2 = P1^0; // 8052 only
    /* T2CON */
    sbit TF2 = T2CON^7;
    sbit EXF2 = T2CON^6;
    sbit RCLK = T2CON^5;
    sbit TCLK = T2CON^4;
    sbit EXEN2 = T2CON^3;
    sbit TR2 = T2CON^2;
    sbit C_T2 = T2CON^1;
    sbit CP_RL2 = T2CON^0;
    #endif

     

    展开全文
  • /*---------------------------------------------------------------------...自定义REG52头文件 @auth lei @date 2017-05 --------------------------------------------------------------------------*/ #...
    /*--------------------------------------------------------------------------
    自定义REG52头文件
    @auth lei
    @date 2017-05
    --------------------------------------------------------------------------*/
    
    #ifndef __REG52_H__
    #define __REG52_H__
    
    /*  一个字节的寄存器  */
    sfr P0    = 0x80;//双向IO,向外输出要接上拉电阻
    sfr P1    = 0x90;//准双向IO,作为输入要先置1
    sfr P2    = 0xA0;//准双向IO,作为输入要先置1
    sfr P3    = 0xB0;//准双向IO,作为输入要先置1,有第二功能
    sfr PSW   = 0xD0;
    sfr ACC   = 0xE0;
    sfr B     = 0xF0;
    sfr SP    = 0x81;
    sfr DPL   = 0x82;
    sfr DPH   = 0x83;
    sfr PCON  = 0x87;
    sfr TCON  = 0x88;//中断控制寄存器
    sfr TMOD  = 0x89;//定时器工作方式寄存器
    sfr TL0   = 0x8A;//定时器/计数器0低8位
    sfr TL1   = 0x8B;//定时器/计数器1低8位
    sfr TH0   = 0x8C;//定时器/计数器0高8位
    sfr TH1   = 0x8D;//定时器/计数器1高8位
    sfr IE    = 0xA8;//中断允许寄存器
    sfr IP    = 0xB8;//中断优先级寄存器
    sfr SCON  = 0x98;
    sfr SBUF  = 0x99;
    
    /*  8052单片机扩展的寄存器 */
    sfr T2CON  = 0xC8;
    sfr RCAP2L = 0xCA;
    sfr RCAP2H = 0xCB;
    sfr TL2    = 0xCC;
    sfr TH2    = 0xCD;
    
    
    /*  一位长度的寄存器  */
    /*  PSW  */
    sbit CY    = PSW^7;
    sbit AC    = PSW^6;
    sbit F0    = PSW^5;
    sbit RS1   = PSW^4;
    sbit RS0   = PSW^3;
    sbit OV    = PSW^2;
    sbit P     = PSW^0; //8052 专用
    
    /*------------中断内容详解----------------------------
    *相关的寄存器
    *            1.IE中断允许寄存器
    *            2.TCON定时控制寄存器
    *            3.IP中断优先级寄存器(不常用)
    *            4.TMOD定时器工作方式寄存器(定时器/计数器中断才用到)
    *使用中断的步骤:
    *            1.中断初始化函数(只需要调用一次,不要放到循环里重复调用)
    *            2.编写中断处理函数
    *            3.主函数中调用中断初始化函数
    *------------中断内容详解----------------------------/
    
    /*  TCON定时控制寄存器  */
    sbit TF1   = TCON^7;//定时器/计数器中标志位:
    sbit TR1   = TCON^6;//定时器/计数器中1启动、停止:
    sbit TF0   = TCON^5;//定时器/计数器中0标志位:
    sbit TR0   = TCON^4;//定时器/计数器中断0启动、停止:
    sbit IE1   = TCON^3;//外部中断1中断标志位:中断产生时硬件置1,中断函数处理完后硬件置0
    sbit IT1   = TCON^2;//外部中断1触发方式:0为电平、1为下降沿
    sbit IE0   = TCON^1;//外部中断0中断标志位:中断产生时硬件置1,中断函数处理完后硬件置0
    sbit IT0   = TCON^0;//外部中断0触发方式:0为电平、1为下降沿
    
    /*  IE中断允许寄存器  */
    sbit EA    = IE^7;//中断总开关
    sbit ET2   = IE^5; //8052 专用
    sbit ES    = IE^4;
    sbit ET1   = IE^3;//定时器/计数器中断1开关
    sbit EX1   = IE^2;//外部中断1开关
    sbit ET0   = IE^1;//定时器/计数器中断0开关
    sbit EX0   = IE^0;//外部中断0开关
    
    /*  IP中断优先级寄存器  */
    sbit PT2   = IP^5;
    sbit PS    = IP^4;
    sbit PT1   = IP^3;
    sbit PX1   = IP^2;
    sbit PT0   = IP^1;
    sbit PX0   = IP^0;
    
    /*------------------TMOD寄存器详解-----------------
    8位从高到低依次为:GATE        C/T        M1    M0                GATE    C/T        M1    M0
                                        {----配置定时器1----}                {----配置定时器0----}
    GATE:门控位,由外部引脚(T0、T1)作为定时器的启动总开关:GATE=0时,T0和T1无效;GATE=1时,需要T0或者T1开关打开(高电平)定时器才能启动
    C/T:计数方式选择,C/T=0时用作定时器,C/T=1时用作计数器
    M1、M0:工作方式选择位,00为工作方式0,13位定时器/计数器,TH存放高8位,TL存放低5位
                                                 01为工作方式1,16位定时器/计数器,TH存放高8位,TL存放低8位(常用)
                                                 10为工作方式2,初值自动装载的8位定时器/计数器(常用)
                                                 11为工作方式3,T0被分为两个8位独立计数器,T1停止工作
    *------------------TMOD寄存器详解-----------------/
    
    
    /*  P3口的第二功能  */
    sbit RD    = P3^7;//外部存储器读选通信号
    sbit WR    = P3^6;//外部存储器写选通信号
    sbit T1    = P3^5;//外部控制定时器/计数器1的启动(TMOD寄存器第7位GATE = 1时才有效),1为启动,0位停止
    sbit T0    = P3^4;//外部控制定时器/计数器0的启动(TMOD寄存器第3位GATE = 1时才有效),1为启动,0位停止
    sbit INT1  = P3^3;//外部中断1输入
    sbit INT0  = P3^2;//外部中断0输入
    sbit TXD   = P3^1;//串行输出
    sbit RXD   = P3^0;//串行输入
    
    /*  SCON串口控制寄存器  */
    sbit SM0   = SCON^7;
    sbit SM1   = SCON^6;
    sbit SM2   = SCON^5;
    sbit REN   = SCON^4;
    sbit TB8   = SCON^3;
    sbit RB8   = SCON^2;
    sbit TI    = SCON^1;
    sbit RI    = SCON^0;
    
    /*  P1口第二功能  */
    sbit T2EX  = P1^1; // 8052 专用
    sbit T2    = P1^0; // 8052 专用
                 
    /*  T2CON  */
    sbit TF2    = T2CON^7;
    sbit EXF2   = T2CON^6;
    sbit RCLK   = T2CON^5;
    sbit TCLK   = T2CON^4;
    sbit EXEN2  = T2CON^3;
    sbit TR2    = T2CON^2;
    sbit C_T2   = T2CON^1;
    sbit CP_RL2 = T2CON^0;
    
    
    
    #endif

     

    转载于:https://www.cnblogs.com/kinson/p/6863230.html

    展开全文
  • 单片机reg52.h

    2016-11-04 22:51:20
    全部定义的详解
  • 51单片机reg51.Hreg52.h

    热门讨论 2011-12-18 16:37:33
    reg51和reg52的合集,后面有注释,希望对大家有帮助
  • 头文件reg.h

    2015-11-27 18:23:33
    在使用keil软件进行仿真时,Atml系列的芯片常使用的头文件
  • 单片机reg51.h头文件详解(1)

    千次阅读 2018-09-21 19:38:00
    我们在用c语言编程时往往第一行就是头文件,51单片机为reg51.hreg52.h,51单片机相对来说比较简单,头文件里面内容不多,像飞思卡尔、ARM系列的单片机头文件往往内容就非常多,尽管如此,对一些初次接触单片机的...

    51单片机头文件reg51.h详解 

    我们在用c语言编程时往往第一行就是头文件,51单片机为reg51.h或reg52.h,51单片机相对来说比较简单,头文件里面内容不多,像飞思卡尔、ARM系列的单片机头文件往往内容就非常多,尽管如此,对一些初次接触单片机的朋友来说,51的头文件还是搞不太清楚,今天具体来说明一下。
           1)“文件包含”处理概念

     

    所谓“文件包含”是指在一个文件内将另外一个文件的内容全部包含进来。因为被包含的文件中的一些定义和命令使用的频率很高,几乎每个程序中都可能要用到,为了提高编程效率,减少编程人员的重得劳动,将这些定义和命令单独组成一个文件,如reg51.h,然后用#include<reg51.h>包含进来就可以了,这个就相当于工业上的标准零件,拿来直接用就可以了。
         2)寄存器地址及位地址声明的原因 
        reg51.h里面主要是一些特殊功能寄存器的地址声明,对可以位寻址的,还包括一些位地址的声明,如果如sfr P1=0x80; sfr IE=0xA8;sbit EA=0xAF等。

    sfr P1 = 0x90这句话表示:P1口所对应的特殊功能寄存器P1在内存中的地址为0x80,sbit EA=0xAF这句话表示EA这一位的地址为0xAF。
            注意这里出现了一个使用很频繁的sfr和sbit。

    sfr 表示特殊功能寄存器的意思,它并非标准C 语言的关键字,而是Keil 为能直接访问80C51中的SFR 而提供了一个新的关键词,其用法是:sfr  特殊功能寄存器名=地址值(注意对于头文件里“特殊功能寄存器名”,用户实际上也可以修改的,如P1=0x80,也可改为A1=0x80,但sfr  和地址值则不能更改,否者会编译出错。)
       sbit 表示位的意思,它也是非标准C 语言的关键字,编写程序时如需操作寄存器的某一位(可位寻址的寄存器才能用)时,需定义一个位变量,此时就要要到sbit,如sbit deng=P1^0,sbit EA   = 0xAF;需要注意的是,位定义时有些特殊, 用法有三种:

    第一种方法:sbit 位变量名=寄存器位地址值

    第二种方法:sbit 位变量名=SFR 名称^寄存器位值(0-7)

    第三种方法:sbit 位变量名=SFR 地址值^寄存器位值

    如:

    sbit IT0=0x88 (1)说明:0x88是IT0 的位地址值

    sbit  deng=P1^2 (2)说明:其中P1 必须先用sfr 定义好

    sbit EA=0xA8^7 (3)说明:0xA8 就是IE寄存器的地址值
        以上三种定义方法需注意的是 IT0 deng EA可由用户随便定义,但必须满足C语言对变量名的定义规则。除些外其它的则必须按照上面的格式写,如“名称^变量位地址值中“^”,它是由keil软件的规定的 ,不能写成其它的,只能这样能才编译通过。
        以上是对寄存器地址和位地址的定义和声明作了解释,大家需要牢牢记住:只有对寄存器及相关位进行声明地址后,我们才能对其进行赋相关的值,keil软件才能编译通过。至于说为什么,这可能一句话两句话也说不清楚。
          3)内存、SFR、位、地址等的通俗解释 

    前面讲到了寄存器地址和位地址(前提能位寻址)声明的目的是为告诉C编译器相应寄存器及其位在内存中的地址,这样我们对寄存器及一些位赋的变量和数值才能正确保存,然后才能供CPU正确的调用,完成相应的功能。
        上段文字出现了寄存器(SFR)、位,地址、内存等,单片机学习过程中还会出现ROM、RAM等名词,可能大家觉得不是很好理解,这里可以通俗的解释一下,如下面三个图所示。
        我们把内存比作宾馆,ROM、RAM、SFR相当于宾馆里具体的有三种不同功能楼层(具体这个宾馆多少层即多少ROM、RAM、SFR,视各个宾馆或者每种单片机而不同),每层8个房间相当于8位,每个房间要么住男人要么住女人相当于每位要么放入数字1要么放入数字0,keil编译器就相当于宾馆的工作人员,旅客去住旅馆相当写程序的过程,住宾馆的人必须事先要给工作人员说你是哪一层哪一个房间(即声明寄存器地址和位地址,)宾馆工作人员才能把你带到你的房间里去(这里假设这个宾馆可以由旅客自己决定住哪个房间)。即:只有对寄存器及相关位进行声明地址后,我们才能对其进行赋相关的值,keil软件才能编译通过。
     


     
     

     
     

     
     

     

    4)REG51.H头文件原文及解释
       打开reg51.h 可以看到这样的一些内容(此文件一般在C:\KEIL\C51\INC下 ,INC文件夹根目录里有不少头文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。如果我们要使用自己写的头文件,使用的时候只需把对应头文件拷贝到INC文件夹里就可以了。)
        下面附出头文件的原文,并把注释文件一并附后。 


    /*--------------------------------------------------------------------------

     

    REG51.H

     

    Header file for generic 80C51 and 80C31 microcontroller.

    Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.

    All rights reserved. 

    --------------------------------------------------------------------------*/

     

    #ifndef __REG51_H__

    #define __REG51_H__

     

    /*  BYTE Register  */

            

     sfr P0   = 0x80;   //三态双向     IO口      P0口 此句话的意思是:特殊功能寄存器 P0 地址为0x80 ,可位寻址,下同

                              //低8位地址总线/数据总线(一般不用而只作普通I/O口,注意作I/O口用时,硬件上需接上接电阻)

    sfr P1   = 0x90;   //准双向       IO口      P1口

     


    sfr P2   = 0xA0;   //准双向  IO口      P2口

                              //高8位地址总线,一般也作普通I/O用

    sfr P3   = 0xB0;   //双功能

                              //1.准双向      IO口      P3口

                            //2.  P30              RXD串行数据接受

                           //    P31              TXD串行数据发送

                              //     P32              外部中断0     信号申请

                             //     P33              外部中断1     信号申请

                                //     P34              定时/计数器T0     外部计数脉冲输入

                                //     P35              定时/计数器T1     外部计数脉冲输入

                                //     P36              WR  片外RAM写脉冲信号输入

                                //     P37           RD  片外ram读脉冲信号输入

    sfr PSW  = 0xD0; // 可以位寻址(C语言编程时可不考虑此寄存器)

                                //程序状态寄存器Program Status WORD  (程序状态信息)

                                //psw.7(CY)    进位标志

                                //psw.6(AC)辅助进位标志位低四位向高四位进位或借位时   AC=1

                                //主要用于十进制调整

                                //psw.5(F0)用户可自定义的程序标志位

                               //psw.4(RS1)

                                //psw.3(RS0)

                                //工作寄存器选择位

                                //任一时刻只有一组寄存器在工作

                                //0 0  0区     00H~07H

                                //0 1   1区     08H~0fH

                                //1 0   2区     10H~17H

                                //1 1   3区     18H~1FH

                                //psw.2(OV)    溢出标志位

                                //psw.1(   )      保留为 ,不可使用

                                //psw.0(P)              奇偶校验位

     

    sfr ACC  = 0xE0;     //累加器A     特殊功能寄存器    可位寻址

    sfr B    = 0xF0;        //寄存器B      主要用于乘除运算

    sfr SP   = 0x81;       //堆栈指针寄存器SP    存放站定栈顶地址、

    sfr DPL  = 0x82;      //

    sfr DPH  = 0x83;     //数据指针寄存器DPTR、//对片外RAM及扩展IO进行存取用的地址指针

     

    sfr PCON = 0x87; //电源控制寄存器  、不能位寻址             

                               //管理单片机的电源部分包括上电复位、掉电模式、空闲模式等

                               //单片机复位时PCON被全部清0,编程时一般是用到SMOD位,其它的一般不用

                              //D7 SMOD该位与串口通信波特率有关

                              //SMOD=0     串口方式1 2 3 波特率正常

                              //SMOD=1     串口方式1 2 3 波特率加倍

                  

     

     

     

    sfr TCON = 0x88;  //定时器/计数器    控制寄存器   可以位寻址                                                           
             //D7  TF1        定时器1溢出标志位

                                //D6       TR1      定时器1运行控制位

                                //D5       TF0        定时器0溢出标志位

                                //D4     TR0        定时器0运行控制位

                                //D3       IE1         外部中断1请求标志

                                //D2       IT1         外部中断1 触发方式选择位

                                //D1       IE0       外部中断0请求标志

                                //D0     IT0         外部中断0 触发方式选择位

     

     

    sfr TMOD = 0x89; //定时器/计数器    工作方式寄存器    不能位寻址

                                //确定工作方式和功能                                                  

                                //D7 GATE     门控制位

                                //GATE=0;定时器/计数器由TRX(x=0,1)来控制

                                //GATE=1;定时器/计数器由TRX(x=0,1)

                                //和外部中断引脚(init0,1)来共同控制

                                //D6  C/T      定时器、计数器选择位

                                //     0    选择定时器模式

                                //     1     选择计数器模式

                                //D5       M1        

                                //D4       M0

                                //M1       M0         工作方式

                                //0   0            方式0     13位定时器/计数器

                                //0   1          方式1     16位定时器/计数器

                                //1   0          方式2     8位自动重装定时器/计数器

                                //1   1          方式3     仅适用T0      分成两个8位计数器,T1停止计数

                                //D3 GATE     门控制位

                                //GATE=0;定时器/计数器由TRX(x=0,1)来控制

                                //GATE=1;定时器/计数器由TRX(x=0,1)

                                //和外部中断引脚(init0,1)来共同控制

                                //D2  C/T             定时器、计数器选择位

                                //0  选择定时器模式

                                //1   选择计数器模式

                                //D1       M1        

                                //D0       M0

                                //     M1 M0         工作方式

                                //     0     0     方式0     13位定时器/计数器

                                //     0     1     方式1   16位定时器/计数器

                                //     1     0     方式2   8位自动重装定时器/计数器

                                //     1     1     方式3   仅适用T0      分成两个8位计数器,T1停止计数

     

    sfr TL0  = 0x8A;    //定时器/计数器0高8位     容器   加1 计数器

    sfr TL1  = 0x8B;    //定时器/计数器1高8位     容器

    sfr TH0  = 0x8C;    //定时器/计数器0低8位     容器

    sfr TH1  = 0x8D;    //定时器/计数器1低8位     容器

     

     

     

    sfr IE   = 0xA8;                 //中断允许寄存器          可以位寻址

                                              //D7  EA         全局中断允许位

                                              //D6       NULL

                                              //D5       ET2        定时器/计数器2中断允许位     interrupt 5

     

                                              //D4  ES          串行口中断允许位        interrupt 4

     

                                              //D3  ET1        定时器/计数器1中断允许位     interrupt 3

     

                                              //D2  EX1        外部中断1中断允许位      interrupt 2

     

                                               //D1  ET0        定时器/计数器0中断允许位  interrupt 1

     

                                               //D0  EX0        外部中断0中断允许位     interrupt 0

      

    sfr IP   = 0xB8;        //中断优先级寄存器   可进行位寻址

                                 //D7 NULL

                                    //D6 NULL

                                     //D5       NULL

                                                     //D4       PS          串行口中断定义优先级控制位

                                                     //            1            串行口中断定义为高优先级中断

                                                     //            0            串行口中断定义为低优先级中断

                                                     //         

                                                     //D3       PT1       

                                                     //            1     定时器/计数器1中断定义为高优先级中断

                                                     //            0     定时器/计数器1中断定义为低优先级中断

                                                     //D2 PX1

                                                     //            1            外部中断1定义为高优先级中断

                                                     //            0          外部中断1定义为低优先级中断

                                                     //D1       PT0       

                                                     //            1     定时器/计数器0中断定义为高优先级中断

                                                     //            0     定时器/计数器0中断定义为低优先级中断

                                                     //D0 PX0

                                                     //            1            外部中断0定义为高优先级中断

                                                     //            0          外部中断0定义为低优先级中断

     

     

     

    sfr SCON = 0x98;   //串行口控制寄存器     可以进行位寻址          

                                  //D7   SM0             

                                   //D6       SM1

                                   //     SM0      SM1              串行口工作方式

                                   //     0           0            同步移位寄存器方式

                                 //     0         1            10位异步收发(8位数据),波特率可变(定时器1溢出率控制)

                                   //   1         0            11位异步收发(9位数据),波特率固定

                                   //     1         1            11异步收发(9位数据)  ,波特率可变(定时器1溢出率控制)

                                   //D5       SM2            多机通信控制位    主要用于方式2和方式3

                                   //D4       REN            允许串行接收位

     

                                   //D3       TB8        方式2,3中发送数据的第9位

                                   //D2       RB8      方式2,3中接受数据的第9位

     

                                   //D1       TI           发送中断标志位

                                  //D0       RI         接受中断标志位

     

     

    sfr SBUF = 0x99;    //串行数据缓冲区

     

    /*****************************************************************************

                                                            下面是位寻址区

                                              上面做过解释的就不在下面一一解释了

    ******************************************************************************/

    /*  BIT Register  */    

    /*  PSW   */

    sbit CY   = 0xD7;

    sbit AC   = 0xD6;

    sbit F0   = 0xD5;

    sbit RS1  = 0xD4;

    sbit RS0  = 0xD3;

    sbit OV   = 0xD2;

    sbit P    = 0xD0;

     

    /*  TCON  */

    sbit TF1  = 0x8F;

    sbit TR1  = 0x8E;

    sbit TF0  = 0x8D;

    sbit TR0  = 0x8C;

    sbit IE1  = 0x8B;

    sbit IT1  = 0x8A;

    sbit IE0  = 0x89;

    sbit IT0  = 0x88;

     

    /*  IE   */

    sbit EA   = 0xAF;

    sbit ES   = 0xAC;

    sbit ET1  = 0xAB;

    sbit EX1  = 0xAA;

    sbit ET0  = 0xA9;

    sbit EX0  = 0xA8;

     

    /*  IP   */

    sbit PS   = 0xBC;

    sbit PT1  = 0xBB;

    sbit PX1  = 0xBA;

    sbit PT0  = 0xB9;

    sbit PX0  = 0xB8;

     

    /*  P3  */

    sbit RD   = 0xB7;

    sbit WR   = 0xB6;

    sbit T1   = 0xB5;

    sbit T0   = 0xB4;

    sbit INT1 = 0xB3;

    sbit INT0 = 0xB2;

    sbit TXD  = 0xB1;

    sbit RXD  = 0xB0;

     

    /*  SCON  */

    sbit SM0  = 0x9F;

    sbit SM1  = 0x9E;

    sbit SM2  = 0x9D;

    sbit REN  = 0x9C;

    sbit TB8  = 0x9B;

    sbit RB8  = 0x9A;

    sbit TI   = 0x99;

    sbit RI   = 0x98;

     

    #endif

    转载于:https://www.cnblogs.com/wangmengcheng/p/9688172.html

    展开全文
  • 头文件reg51.h

    热门讨论 2012-08-16 14:27:29
    文件reg51.h文件
  • reg51.h头文件详解

    2012-09-02 19:21:21
    reg51.h头文件详解
  • 只有用<reg52.h>作头文件时调试正确,而换成<regx52.h>就报错很多。我知道两个头文件中位定义的格式不一样,但把^改成_之后依旧报错。 ``` #include <reg52.h> //此文件中定义了单片机的一些特殊功能...
  • 我们在用c语言编程是往往第一行就是reg51.h或者其他的自定义头文件,我们怎么样来理解呢?
  • 一种是创建Atmel的8052工程,然后引用头文件reg52.h。 另一种是创建STC的STC12F2K60S2工程,然后引用头文件STC12F2K60S2.h。 这两种工程对于使用蓝桥杯的板子,都可以正常使用,但是又有一些区别,我们接下来研究的...

    蓝桥杯单片机比赛中,创建工程时,我们可以创建两种工程来对我们的单片机进行编程:
    一种是创建Atmel的8052工程,然后引用头文件reg52.h
    另一种是创建STC的STC12F2K60S2工程,然后引用头文件STC12F2K60S2.h

    这两种工程对于使用蓝桥杯的板子,都可以正常使用,但是又有一些区别,
    简单来说,我们单片机比赛中用的芯片的寄存器在STC12F2K60S2.h中的定义更完善。我们可以直接书写文档,而不用自己再去定义某些reg52.h没有定义的寄存器,另外比赛的板子,如果要用硬件仿真功能,也需要STC12F2K60S2工程。

    下面我们直接贴上两个头文件的定义

    #ifndef __STC15F2K60S2_H_
    #define __STC15F2K60S2_H_
    
    /
    //注意: STC15W4K32S4系列的芯片,上电后所有与PWM相关的IO口均为
    //      高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用
    //相关IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
    //        P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
    /
    
    /
    
    //包含本头文件后,不用另外再包含"REG51.H"
    
    //内核特殊功能寄存器        // 复位值   描述
    sfr ACC         =   0xE0;   //0000,0000 累加器Accumulator
    sfr B           =   0xF0;   //0000,0000 B寄存器
    sfr PSW         =   0xD0;   //0000,0000 程序状态字
    sbit CY         =   PSW^7;
    sbit AC         =   PSW^6;
    sbit F0         =   PSW^5;
    sbit RS1        =   PSW^4;
    sbit RS0        =   PSW^3;
    sbit OV         =   PSW^2;
    sbit P          =   PSW^0;
    sfr SP          =   0x81;   //0000,0111 堆栈指针
    sfr DPL         =   0x82;   //0000,0000 数据指针低字节
    sfr DPH         =   0x83;   //0000,0000 数据指针高字节
    
    //I/O 口特殊功能寄存器
    sfr P0          =   0x80;   //1111,1111 端口0
    sbit P00        =   P0^0;
    sbit P01        =   P0^1;
    sbit P02        =   P0^2;
    sbit P03        =   P0^3;
    sbit P04        =   P0^4;
    sbit P05        =   P0^5;
    sbit P06        =   P0^6;
    sbit P07        =   P0^7;
    sfr P1          =   0x90;   //1111,1111 端口1
    sbit P10        =   P1^0;
    sbit P11        =   P1^1;
    sbit P12        =   P1^2;
    sbit P13        =   P1^3;
    sbit P14        =   P1^4;
    sbit P15        =   P1^5;
    sbit P16        =   P1^6;
    sbit P17        =   P1^7;
    sfr P2          =   0xA0;   //1111,1111 端口2
    sbit P20        =   P2^0;
    sbit P21        =   P2^1;
    sbit P22        =   P2^2;
    sbit P23        =   P2^3;
    sbit P24        =   P2^4;
    sbit P25        =   P2^5;
    sbit P26        =   P2^6;
    sbit P27        =   P2^7;
    sfr P3          =   0xB0;   //1111,1111 端口3
    sbit P30        =   P3^0;
    sbit P31        =   P3^1;
    sbit P32        =   P3^2;
    sbit P33        =   P3^3;
    sbit P34        =   P3^4;
    sbit P35        =   P3^5;
    sbit P36        =   P3^6;
    sbit P37        =   P3^7;
    sfr P4          =   0xC0;   //1111,1111 端口4
    sbit P40        =   P4^0;
    sbit P41        =   P4^1;
    sbit P42        =   P4^2;
    sbit P43        =   P4^3;
    sbit P44        =   P4^4;
    sbit P45        =   P4^5;
    sbit P46        =   P4^6;
    sbit P47        =   P4^7;
    sfr P5          =   0xC8;   //xxxx,1111 端口5
    sbit P50        =   P5^0;
    sbit P51        =   P5^1;
    sbit P52        =   P5^2;
    sbit P53        =   P5^3;
    sbit P54        =   P5^4;
    sbit P55        =   P5^5;
    sbit P56        =   P5^6;
    sbit P57        =   P5^7;
    sfr P6          =   0xE8;   //0000,0000 端口6
    sbit P60        =   P6^0;
    sbit P61        =   P6^1;
    sbit P62        =   P6^2;
    sbit P63        =   P6^3;
    sbit P64        =   P6^4;
    sbit P65        =   P6^5;
    sbit P66        =   P6^6;
    sbit P67        =   P6^7;
    sfr P7          =   0xF8;   //0000,0000 端口7
    sbit P70        =   P7^0;
    sbit P71        =   P7^1;
    sbit P72        =   P7^2;
    sbit P73        =   P7^3;
    sbit P74        =   P7^4;
    sbit P75        =   P7^5;
    sbit P76        =   P7^6;
    sbit P77        =   P7^7;
    sfr P0M0        =   0x94;   //0000,0000 端口0模式寄存器0
    sfr P0M1        =   0x93;   //0000,0000 端口0模式寄存器1
    sfr P1M0        =   0x92;   //0000,0000 端口1模式寄存器0
    sfr P1M1        =   0x91;   //0000,0000 端口1模式寄存器1
    sfr P2M0        =   0x96;   //0000,0000 端口2模式寄存器0
    sfr P2M1        =   0x95;   //0000,0000 端口2模式寄存器1
    sfr P3M0        =   0xB2;   //0000,0000 端口3模式寄存器0
    sfr P3M1        =   0xB1;   //0000,0000 端口3模式寄存器1
    sfr P4M0        =   0xB4;   //0000,0000 端口4模式寄存器0
    sfr P4M1        =   0xB3;   //0000,0000 端口4模式寄存器1
    sfr P5M0        =   0xCA;   //0000,0000 端口5模式寄存器0
    sfr P5M1        =   0xC9;   //0000,0000 端口5模式寄存器1
    sfr P6M0        =   0xCC;   //0000,0000 端口6模式寄存器0
    sfr P6M1        =   0xCB;   //0000,0000 端口6模式寄存器1
    sfr P7M0        =   0xE2;   //0000,0000 端口7模式寄存器0
    sfr P7M1        =   0xE1;   //0000,0000 端口7模式寄存器1
    
    //系统管理特殊功能寄存器
    sfr PCON        =   0x87;   //0001,0000 电源控制寄存器
    sfr AUXR        =   0x8E;   //0000,0000 辅助寄存器
    sfr AUXR1       =   0xA2;   //0000,0000 辅助寄存器1
    sfr P_SW1       =   0xA2;   //0000,0000 外设端口切换寄存器1
    sfr CLK_DIV     =   0x97;   //0000,0000 时钟分频控制寄存器
    sfr BUS_SPEED   =   0xA1;   //xx10,x011 总线速度控制寄存器
    sfr P1ASF       =   0x9D;   //0000,0000 端口1模拟功能配置寄存器
    sfr P_SW2       =   0xBA;   //0xxx,x000 外设端口切换寄存器
    
    //中断特殊功能寄存器
    sfr IE          =   0xA8;   //0000,0000 中断控制寄存器
    sbit EA         =   IE^7;
    sbit ELVD       =   IE^6;
    sbit EADC       =   IE^5;
    sbit ES         =   IE^4;
    sbit ET1        =   IE^3;
    sbit EX1        =   IE^2;
    sbit ET0        =   IE^1;
    sbit EX0        =   IE^0;
    sfr IP          =   0xB8;   //0000,0000 中断优先级寄存器
    sbit PPCA       =   IP^7;
    sbit PLVD       =   IP^6;
    sbit PADC       =   IP^5;
    sbit PS         =   IP^4;
    sbit PT1        =   IP^3;
    sbit PX1        =   IP^2;
    sbit PT0        =   IP^1;
    sbit PX0        =   IP^0;
    sfr IE2         =   0xAF;   //0000,0000 中断控制寄存器2
    sfr IP2         =   0xB5;   //xxxx,xx00 中断优先级寄存器2
    sfr INT_CLKO    =   0x8F;   //0000,0000 外部中断与时钟输出控制寄存器
    
    //定时器特殊功能寄存器
    sfr TCON        =   0x88;   //0000,0000 T0/T1控制寄存器
    sbit TF1        =   TCON^7;
    sbit TR1        =   TCON^6;
    sbit TF0        =   TCON^5;
    sbit TR0        =   TCON^4;
    sbit IE1        =   TCON^3;
    sbit IT1        =   TCON^2;
    sbit IE0        =   TCON^1;
    sbit IT0        =   TCON^0;
    sfr TMOD        =   0x89;   //0000,0000 T0/T1模式寄存器
    sfr TL0         =   0x8A;   //0000,0000 T0低字节
    sfr TL1         =   0x8B;   //0000,0000 T1低字节
    sfr TH0         =   0x8C;   //0000,0000 T0高字节
    sfr TH1         =   0x8D;   //0000,0000 T1高字节
    sfr T4T3M       =   0xD1;   //0000,0000 T3/T4模式寄存器
    sfr T3T4M       =   0xD1;   //0000,0000 T3/T4模式寄存器
    sfr T4H         =   0xD2;   //0000,0000 T4高字节
    sfr T4L         =   0xD3;   //0000,0000 T4低字节
    sfr T3H         =   0xD4;   //0000,0000 T3高字节
    sfr T3L         =   0xD5;   //0000,0000 T3低字节
    sfr T2H         =   0xD6;   //0000,0000 T2高字节
    sfr T2L         =   0xD7;   //0000,0000 T2低字节
    sfr WKTCL       =   0xAA;   //0000,0000 掉电唤醒定时器低字节
    sfr WKTCH       =   0xAB;   //0000,0000 掉电唤醒定时器高字节
    sfr WDT_CONTR   =   0xC1;   //0000,0000 看门狗控制寄存器
    
    //串行口特殊功能寄存器
    sfr SCON        =   0x98;   //0000,0000 串口1控制寄存器
    sbit SM0        =   SCON^7;
    sbit SM1        =   SCON^6;
    sbit SM2        =   SCON^5;
    sbit REN        =   SCON^4;
    sbit TB8        =   SCON^3;
    sbit RB8        =   SCON^2;
    sbit TI         =   SCON^1;
    sbit RI         =   SCON^0;
    sfr SBUF        =   0x99;   //xxxx,xxxx 串口1数据寄存器
    sfr S2CON       =   0x9A;   //0000,0000 串口2控制寄存器
    sfr S2BUF       =   0x9B;   //xxxx,xxxx 串口2数据寄存器
    sfr S3CON       =   0xAC;   //0000,0000 串口3控制寄存器
    sfr S3BUF       =   0xAD;   //xxxx,xxxx 串口3数据寄存器
    sfr S4CON       =   0x84;   //0000,0000 串口4控制寄存器
    sfr S4BUF       =   0x85;   //xxxx,xxxx 串口4数据寄存器
    sfr SADDR       =   0xA9;   //0000,0000 从机地址寄存器
    sfr SADEN       =   0xB9;   //0000,0000 从机地址屏蔽寄存器
    
    //ADC 特殊功能寄存器
    sfr ADC_CONTR   =   0xBC;   //0000,0000 A/D转换控制寄存器
    sfr ADC_RES     =   0xBD;   //0000,0000 A/D转换结果高8位
    sfr ADC_RESL    =   0xBE;   //0000,0000 A/D转换结果低2位
    
    //SPI 特殊功能寄存器
    sfr SPSTAT      =   0xCD;   //00xx,xxxx SPI状态寄存器
    sfr SPCTL       =   0xCE;   //0000,0100 SPI控制寄存器
    sfr SPDAT       =   0xCF;   //0000,0000 SPI数据寄存器
    
    //IAP/ISP 特殊功能寄存器
    sfr IAP_DATA    =   0xC2;   //0000,0000 EEPROM数据寄存器
    sfr IAP_ADDRH   =   0xC3;   //0000,0000 EEPROM地址高字节
    sfr IAP_ADDRL   =   0xC4;   //0000,0000 EEPROM地址第字节
    sfr IAP_CMD     =   0xC5;   //xxxx,xx00 EEPROM命令寄存器
    sfr IAP_TRIG    =   0xC6;   //0000,0000 EEPRPM命令触发寄存器
    sfr IAP_CONTR   =   0xC7;   //0000,x000 EEPROM控制寄存器
    
    //PCA/PWM 特殊功能寄存器
    sfr CCON        =   0xD8;   //00xx,xx00 PCA控制寄存器
    sbit CF         =   CCON^7;
    sbit CR         =   CCON^6;
    sbit CCF2       =   CCON^2;
    sbit CCF1       =   CCON^1;
    sbit CCF0       =   CCON^0;
    sfr CMOD        =   0xD9;   //0xxx,x000 PCA 工作模式寄存器
    sfr CL          =   0xE9;   //0000,0000 PCA计数器低字节
    sfr CH          =   0xF9;   //0000,0000 PCA计数器高字节
    sfr CCAPM0      =   0xDA;   //0000,0000 PCA模块0的PWM寄存器
    sfr CCAPM1      =   0xDB;   //0000,0000 PCA模块1的PWM寄存器
    sfr CCAPM2      =   0xDC;   //0000,0000 PCA模块2的PWM 寄存器
    sfr CCAP0L      =   0xEA;   //0000,0000 PCA模块0的捕捉/比较寄存器低字节
    sfr CCAP1L      =   0xEB;   //0000,0000 PCA模块1的捕捉/比较寄存器低字节
    sfr CCAP2L      =   0xEC;   //0000,0000 PCA模块2的捕捉/比较寄存器低字节
    sfr PCA_PWM0    =   0xF2;   //xxxx,xx00 PCA模块0的PWM寄存器
    sfr PCA_PWM1    =   0xF3;   //xxxx,xx00 PCA模块1的PWM寄存器
    sfr PCA_PWM2    =   0xF4;   //xxxx,xx00 PCA模块1的PWM寄存器
    sfr CCAP0H      =   0xFA;   //0000,0000 PCA模块0的捕捉/比较寄存器高字节
    sfr CCAP1H      =   0xFB;   //0000,0000 PCA模块1的捕捉/比较寄存器高字节
    sfr CCAP2H      =   0xFC;   //0000,0000 PCA模块2的捕捉/比较寄存器高字节
    
    //比较器特殊功能寄存器
    sfr CMPCR1      =   0xE6;   //0000,0000 比较器控制寄存器1
    sfr CMPCR2      =   0xE7;   //0000,0000 比较器控制寄存器2
    
    //增强型PWM波形发生器特殊功能寄存器
    sfr PWMCFG      =   0xf1;   //x000,0000 PWM配置寄存器
    sfr PWMCR       =   0xf5;   //0000,0000 PWM控制寄存器
    sfr PWMIF       =   0xf6;   //x000,0000 PWM中断标志寄存器
    sfr PWMFDCR     =   0xf7;   //xx00,0000 PWM外部异常检测控制寄存器
    
    //如下特殊功能寄存器位于扩展RAM区域
    //访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写
    #define PWMC        (*(unsigned int  volatile xdata *)0xfff0)
    #define PWMCH       (*(unsigned char volatile xdata *)0xfff0)
    #define PWMCL       (*(unsigned char volatile xdata *)0xfff1)
    #define PWMCKS      (*(unsigned char volatile xdata *)0xfff2)
    #define PWM2T1      (*(unsigned int  volatile xdata *)0xff00)
    #define PWM2T1H     (*(unsigned char volatile xdata *)0xff00)
    #define PWM2T1L     (*(unsigned char volatile xdata *)0xff01)
    #define PWM2T2      (*(unsigned int  volatile xdata *)0xff02)
    #define PWM2T2H     (*(unsigned char volatile xdata *)0xff02)
    #define PWM2T2L     (*(unsigned char volatile xdata *)0xff03)
    #define PWM2CR      (*(unsigned char volatile xdata *)0xff04)
    #define PWM3T1      (*(unsigned int  volatile xdata *)0xff10)
    #define PWM3T1H     (*(unsigned char volatile xdata *)0xff10)
    #define PWM3T1L     (*(unsigned char volatile xdata *)0xff11)
    #define PWM3T2      (*(unsigned int  volatile xdata *)0xff12)
    #define PWM3T2H     (*(unsigned char volatile xdata *)0xff12)
    #define PWM3T2L     (*(unsigned char volatile xdata *)0xff13)
    #define PWM3CR      (*(unsigned char volatile xdata *)0xff14)
    #define PWM4T1      (*(unsigned int  volatile xdata *)0xff20)
    #define PWM4T1H     (*(unsigned char volatile xdata *)0xff20)
    #define PWM4T1L     (*(unsigned char volatile xdata *)0xff21)
    #define PWM4T2      (*(unsigned int  volatile xdata *)0xff22)
    #define PWM4T2H     (*(unsigned char volatile xdata *)0xff22)
    #define PWM4T2L     (*(unsigned char volatile xdata *)0xff23)
    #define PWM4CR      (*(unsigned char volatile xdata *)0xff24)
    #define PWM5T1      (*(unsigned int  volatile xdata *)0xff30)
    #define PWM5T1H     (*(unsigned char volatile xdata *)0xff30)
    #define PWM5T1L     (*(unsigned char volatile xdata *)0xff31)
    #define PWM5T2      (*(unsigned int  volatile xdata *)0xff32)
    #define PWM5T2H     (*(unsigned char volatile xdata *)0xff32)
    #define PWM5T2L     (*(unsigned char volatile xdata *)0xff33)
    #define PWM5CR      (*(unsigned char volatile xdata *)0xff34)
    #define PWM6T1      (*(unsigned int  volatile xdata *)0xff40)
    #define PWM6T1H     (*(unsigned char volatile xdata *)0xff40)
    #define PWM6T1L     (*(unsigned char volatile xdata *)0xff41)
    #define PWM6T2      (*(unsigned int  volatile xdata *)0xff42)
    #define PWM6T2H     (*(unsigned char volatile xdata *)0xff42)
    #define PWM6T2L     (*(unsigned char volatile xdata *)0xff43)
    #define PWM6CR      (*(unsigned char volatile xdata *)0xff44)
    #define PWM7T1      (*(unsigned int  volatile xdata *)0xff50)        
    #define PWM7T1H     (*(unsigned char volatile xdata *)0xff50)        
    #define PWM7T1L     (*(unsigned char volatile xdata *)0xff51)
    #define PWM7T2      (*(unsigned int  volatile xdata *)0xff52)
    #define PWM7T2H     (*(unsigned char volatile xdata *)0xff52)
    #define PWM7T2L     (*(unsigned char volatile xdata *)0xff53)
    #define PWM7CR      (*(unsigned char volatile xdata *)0xff54)
    
    /
    
    #endif
    
    /*--------------------------------------------------------------------------
    REG52.H
    
    Header file for generic 80C52 and 80C32 microcontroller.
    Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
    All rights reserved.
    --------------------------------------------------------------------------*/
    
    #ifndef __REG52_H__
    #define __REG52_H__
    
    /*  BYTE Registers  */
    sfr P0    = 0x80;
    sfr P1    = 0x90;
    sfr P2    = 0xA0;
    sfr P3    = 0xB0;
    sfr PSW   = 0xD0;
    sfr ACC   = 0xE0;
    sfr B     = 0xF0;
    sfr SP    = 0x81;
    sfr DPL   = 0x82;
    sfr DPH   = 0x83;
    sfr PCON  = 0x87;
    sfr TCON  = 0x88;
    sfr TMOD  = 0x89;
    sfr TL0   = 0x8A;
    sfr TL1   = 0x8B;
    sfr TH0   = 0x8C;
    sfr TH1   = 0x8D;
    sfr IE    = 0xA8;
    sfr IP    = 0xB8;
    sfr SCON  = 0x98;
    sfr SBUF  = 0x99;
    
    /*  8052 Extensions  */
    sfr T2CON  = 0xC8;
    sfr RCAP2L = 0xCA;
    sfr RCAP2H = 0xCB;
    sfr TL2    = 0xCC;
    sfr TH2    = 0xCD;
    
    
    /*  BIT Registers  */
    /*  PSW  */
    sbit CY    = PSW^7;
    sbit AC    = PSW^6;
    sbit F0    = PSW^5;
    sbit RS1   = PSW^4;
    sbit RS0   = PSW^3;
    sbit OV    = PSW^2;
    sbit P     = PSW^0; //8052 only
    
    /*  TCON  */
    sbit TF1   = TCON^7;
    sbit TR1   = TCON^6;
    sbit TF0   = TCON^5;
    sbit TR0   = TCON^4;
    sbit IE1   = TCON^3;
    sbit IT1   = TCON^2;
    sbit IE0   = TCON^1;
    sbit IT0   = TCON^0;
    
    /*  IE  */
    sbit EA    = IE^7;
    sbit ET2   = IE^5; //8052 only
    sbit ES    = IE^4;
    sbit ET1   = IE^3;
    sbit EX1   = IE^2;
    sbit ET0   = IE^1;
    sbit EX0   = IE^0;
    
    /*  IP  */
    sbit PT2   = IP^5;
    sbit PS    = IP^4;
    sbit PT1   = IP^3;
    sbit PX1   = IP^2;
    sbit PT0   = IP^1;
    sbit PX0   = IP^0;
    
    /*  P3  */
    sbit RD    = P3^7;
    sbit WR    = P3^6;
    sbit T1    = P3^5;
    sbit T0    = P3^4;
    sbit INT1  = P3^3;
    sbit INT0  = P3^2;
    sbit TXD   = P3^1;
    sbit RXD   = P3^0;
    
    /*  SCON  */
    sbit SM0   = SCON^7;
    sbit SM1   = SCON^6;
    sbit SM2   = SCON^5;
    sbit REN   = SCON^4;
    sbit TB8   = SCON^3;
    sbit RB8   = SCON^2;
    sbit TI    = SCON^1;
    sbit RI    = SCON^0;
    
    /*  P1  */
    sbit T2EX  = P1^1; // 8052 only
    sbit T2    = P1^0; // 8052 only
                 
    /*  T2CON  */
    sbit TF2    = T2CON^7;
    sbit EXF2   = T2CON^6;
    sbit RCLK   = T2CON^5;
    sbit TCLK   = T2CON^4;
    sbit EXEN2  = T2CON^3;
    sbit TR2    = T2CON^2;
    sbit C_T2   = T2CON^1;
    sbit CP_RL2 = T2CON^0;
    
    #endif
    
    展开全文
  • reg51.h_reg52.h详解

    2013-05-27 09:09:14
    reg51.h_reg52.h详解 51单片机中的头文件详解
  • 头文件AT89X51.Hreg52.h的区别

    万次阅读 多人点赞 2017-04-18 13:59:24
    前言心血来潮说捣鼓捣鼓基于51单片机的超声波模块,也就是市面上买的模块HC-SR04,从网上找了驱动代码,自己新建keil工程打开一看发现,这个头文件AT89X52.H,我就奇怪了,平常学的51单片机视频不都是reg52.h么?...
  • ![图片说明](https://img-ask.csdn.net/upload/202005/21/1590045863_170704.png)![图片说明](https://img-ask.csdn.net/upload/202005/21/1590045875_786942.png)
  • 单片机头文件reg52.h中文注释详解

    千次阅读 多人点赞 2020-10-14 23:56:48
    /*-------------------...REG52.H Header file for generic 80C52 and 80C32 microcontroller. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. -----------------------
  • 适用与AT89C51系列单片机,可以联调proteus,涉及到51单片机仿真都要此文件
  • 原标题:结合单片机学习板学习c语言之流水灯制作 intrins.h头文件目的:实现流水灯。本文引用地址:http://www.eepw.com.cn/article/201608/294948.htm源程序:/*本程序结合STC89C51使用,晶振12M,中间用到串口中断...
  • 51单片机编程的头文件reg51.h详解

    千次阅读 2021-05-20 12:57:51
    我们在用c语言编程时往往第一行就是头文件,51单片机为reg51.hreg52.h,51单片机相对来说比较简单,头文件里面内容不多,像飞思卡尔、ARM系列的单片机头文件往往内容就非常多,尽管如此,对一些初次接触单片机的...
  • intrins.h头文件中有如下函数及其作用 _crol_ 字符循环左移 // 将char型变量 循环向左(右)移动指定位数后返回 _cror_ 字符循环右移 _irol_ 整数循环左移 _iror_ 整数循环右移 _...
  • 扫盲:51单片机头文件reg51.h详解

    千次阅读 2020-02-15 16:23:26
    我们在用c语言编程时往往第一行就是头文件,51单片机为reg51.hreg52.h,51单片机相对来说比较简单,头文件里面内容不多,像飞思卡尔、ARM系列的单片机头文件往往内容就非常多,尽管如此,对一些初次接触单片机的...
  • reg51.h是什么意思?

    千次阅读 2018-12-26 16:17:40
    是c51(用于单片机开发的一种c语言)的头文件。类似于头文件AT89X52.h。这两个头文件基本是一样的,只是在使用时对位的定义不一样,at89x52.h文件中对P1.1的...(转)单片机中用c编程时头文件reg51.hreg52.h解析 单...
  • */ Registration () : reg_name_ () , tree_ (new KdTree) , tree_reciprocal_ (new KdTreeReciprocal) , nr_iterations_ (0) , max_iterations_ (10) , ransac_iterations_ (0) , target_ () , final_...
  • reg51 reg52区别

    千次阅读 多人点赞 2017-08-21 10:35:08
    对于STC的任何一个系列,你都可以选择AT89S52系列。STC系列兼容51系列的单片机,也就是说,51系列的单片机有的功能STC一般都有。在书写程序的时候,编译器的检错,是不会具体针对你新建工作程时所选某一块芯片来检错...
  • <AT89X52.H>换成<reg52.h

    千次阅读 2013-05-20 13:15:31
    C51中为什么把头文件<AT89X52.H>换成<reg52.h>原先的错误就不见了呢 检举|2009-11-14 10:45jinfang199054 | 分类:操作系统/系统故障 | 浏览1039次 我有更好的答案 提问者采纳 2009-11-22 13:41 头文件...
  • 51单片机头文件reg51.h详解

    万次阅读 多人点赞 2014-12-23 14:43:08
    我们在用c语言编程时往往第一行就是头文件,51单片机为reg51.hreg52.h,51单片机相对来说比较简单,头文件里面内容不多,像飞思卡尔、ARM系列的单片机头文件往往内容就非常多,尽管如此,对一些初次接触单片机的...
  • stc12c5a.h 标准头文件

    热门讨论 2011-12-18 13:33:14
    reg52.h是通用头文件,放在哪个51内核上都行,而STC12C5A.h是专门对STC12C5A机型功能定义的。专业的东西肯定比大众化的好用! 至于它两在功能定义上的区别,你可以去找一下。一般的SFR功能,reg52.h跟STC12C5A.h肯定...
  • 步骤1:先检查工程中的#include “intrins.h” #include ... 改成#include “intrins.h’ 、“reg52.h” 原因:” " 比 < >的查找范围大。 步骤3:在keil中,点击魔术棒,进入C51窗口----include paths ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,487
精华内容 5,794
关键字:

reg52.h头文件