zoukankan      html  css  js  c++  java
  • 从头文件中学习sfr和sbit

    1、reg52.h    

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

    #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
    

     头文件我们可以学习到:

    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,是一样的效果

  • 相关阅读:
    Search in Rotated Sorted Array
    Search insert position
    二分法感悟
    The Smallest Difference
    Lintcode: Nuts & Bolts Problem
    167. Two Sum II
    登录页面
    注册页面
    在线版简易计算器
    简单工厂模式
  • 原文地址:https://www.cnblogs.com/liang2713020/p/3621125.html
Copyright © 2011-2022 走看看