工控智汇

工控智汇

开篇-基础知识总结2-特殊功能寄存器

admin 113 199

接着学习:

8051单片机独有的编程语句1:

sfrP0=0x80;

sfr这个关键字,作用是定义了一个单片机特殊功能寄存器(名叫P0,以后可以直接在程序中写P0,不会编译出错)。

P0为8051单片机内部的一个特殊功能模块,地址为0x80;(详细见规格书特殊功能寄存器的介绍和地址映射),注意复位值为1,每当单片机上电复位时,此引脚默认为高电平。

语句2:

sbitLED=P0^0;

sbit这个关键字,用来给特殊功能寄存器P0中第0位P0^0进行定义(重新取名叫LED,后续在程序里写LED,即代表P0^0口)

所有特殊功能寄存器可以在keil软件安排目录下进行查看-C:\Keil\C51\INC\REG52文件,如下:

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

Headerfileforgeneric80C52and80C32microcontroller.

Copyright(c)1988-2002KeilElektronikGmbHandKeilSoftware,Inc.

Allrightsreserved.

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

define__REG52_H__

/*BYTERegisters*/

sfrP0=0x80;

sfrP1=0x90;

sfrP2=0xA0;

sfrP3=0xB0;

sfrPSW=0xD0;

sfrACC=0xE0;

sfrB=0xF0;

sfrSP=0x81;

sfrDPL=0x82;

sfrDPH=0x83;

sfrPCON=0x87;

sfrTCON=0x88;

sfrTMOD=0x89;

sfrTL0=0x8A;

sfrTL1=0x8B;

sfrTH0=0x8C;

sfrTH1=0x8D;

sfrIE=0xA8;

sfrIP=0xB8;

sfrSCON=0x98;

sfrSBUF=0x99;

/*8052Extensions*/

sfrT2CON=0xC8;

sfrRCAP2L=0xCA;

sfrRCAP2H=0xCB;

sfrTL2=0xCC;

sfrTH2=0xCD;

/*BITRegisters*/

/*PSW*/

sbitCY=PSW^7;

sbitAC=PSW^6;

sbitF0=PSW^5;

sbitRS1=PSW^4;

sbitRS0=PSW^3;

sbitOV=PSW^2;

sbitP=PSW^0;//8052only

/*TCON*/

sbitTF1=TCON^7;

sbitTR1=TCON^6;

sbitTF0=TCON^5;

sbitTR0=TCON^4;

sbitIE1=TCON^3;

sbitIT1=TCON^2;

sbitIE0=TCON^1;

sbitIT0=TCON^0;

/*IE*/

sbitEA=IE^7;

sbitET2=IE^5;//8052only

sbitES=IE^4;

sbitET1=IE^3;

sbitEX1=IE^2;

sbitET0=IE^1;

sbitEX0=IE^0;

/*IP*/

sbitPT2=IP^5;

sbitPS=IP^4;

sbitPT1=IP^3;

sbitPX1=IP^2;

sbitPT0=IP^1;

sbitPX0=IP^0;

/*P3*/

sbitRD=P3^7;

sbitWR=P3^6;

sbitT1=P3^5;

sbitT0=P3^4;

sbitINT1=P3^3;

sbitINT0=P3^2;

sbitTXD=P3^1;

sbitRXD=P3^0;

/*SCON*/

sbitSM0=SCON^7;

sbitSM1=SCON^6;

sbitSM2=SCON^5;

sbitREN=SCON^4;

sbitTB8=SCON^3;

sbitRB8=SCON^2;

sbitTI=SCON^1;

sbitRI=SCON^0;

/*P1*/

sbitT2EX=P1^1;//8052only

sbitT2=P1^0;//8052only

/*T2CON*/

sbitTF2=T2CON^7;

sbitEXF2=T2CON^6;

sbitRCLK=T2CON^5;

sbitTCLK=T2CON^4;

sbitEXEN2=T2CON^3;

sbitTR2=T2CON^2;

sbitC_T2=T2CON^1;

sbitCP_RL2=T2CON^0;

#if