⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stc12c5410.h

📁 STC12C5410功能寄存器解析
💻 H
📖 第 1 页 / 共 2 页
字号:
sfr TH1            = 0x8D;			//定时器/计数器1数据寄存器高8位
sfr AUXR           = 0x8E;

//-------------------STC12C5410系列单片机	串行口 	特殊功能寄存器------------------
sfr SCON           = 0x98;			//串行口控制寄存器
sbit SM0           = SCON ^ 7;		
sbit SM1           = SCON ^ 6;		//SM0、SM1串行口工作模式设置位
									//	SM0  SM1  模式       功能           波特率
									//	 0	  0	   0	同位移位寄存器	   fose/12
									//	 0	  1	   1	    8位UART			 可变
									//	 1	  0	   2		9位UART		fose/32或fose/64
									//	 1	  1	   3		9位UART			 可变
sbit SM2           = SCON ^ 5;		//SM2在模式2、3中为多处理通信使能位,在模式0时要求该位为0
sbit REN           = SCON ^ 4;		//允许接收位  1:允许接收   0:禁止接收
sbit TB8           = SCON ^ 3;		//发送数据位8   在模式2、3中是要发送的第9位
sbit RB8           = SCON ^ 2;		//接收数据位8   在模式2、3中是已接收数据的第9位	该位可能是奇偶位,地址/数据标识位
									//在模式0中,RB8为保留位没有使用  在模式1中,当SM2=0,RB8是已接收数据的停止位
sbit TI            = SCON ^ 1;	    //发送中断标识位。在模式0,发送完第8位,由硬件置位。其它模式则是在发送停止位之处,由
									//硬件置位。在任何模式下,TI都必须由软件来清除。表示在TI=1时(发送已完成),TI不会由硬件清除,必须由软件清除
sbit RI            = SCON ^ 0;		//接收中断标识位  在模式0,接收第8位结束时,由硬件置位。其它模式则是在接收停止位的半中间,
									//由硬件置位。RI=1,申请中断。在模式1中,SM2=1时,当未收到有效的停止位,则不会对RI置位,RI必须由软件清除
sfr SBUF           = 0x99;			//数据缓冲寄存器
sfr SADEN          = 0xB9;			//串口地址屏蔽,等于0时地址会引起中断
sfr SADDR          = 0xA9;		    // 从机串口地址
sfr AUXR           = 0x8E;

//-------------------STC12C5410系列单片机	看门狗定时器 	特殊功能寄存器------------------
sfr WDT_CONTR      = 0xE1;          //看门狗寄存器
sbit WDT_FALG      = WDT_CONTR ^ 7;	//看门狗溢出标志位,溢出时,该位由硬件置位,用软件清除
sbit EN_WDT        = WDT_CONTR ^ 5;	//看门狗允许位,1:看门狗启动  0:看门狗关闭
sbit CLR_WDT       = WDT_CONTR ^ 4;	//看门狗清0位   1:看门狗重新计数   硬件自动清除此位
sbit IDIE_WDT      = WDT_CONTR ^ 3;	//模式位   1:看门狗定时器在“空闲模式”计数
									//		   0: 看门狗定时器在“空闲模式“不计数
sbit PS2           = WDT_CONTR ^ 2; 
sbit PS1           = WDT_CONTR ^ 1;
sbit PS0           = WDT_CONTR ^ 0;	//看门狗定时器预分频值	        看门狗溢出时间=(N*Pre_scale*32768)/Oscillator frequency
									//	PS2  PS1  PS0   预分频(Pre_scale)			Oscillator frequency(系统时钟)
									//	 0	  0	   0	  2
									//	 0	  0	   1	  4
									//	 0	  1	   0	  8
									//	 0	  1	   1	  16
									//	 1	  0	   0	  32
									//	 1	  0	   1	  64
									//	 1	  1	   0	  128
									//	 1	  1	   1	  256

//-------------------STC12C5410系列单片机	中断 	特殊功能寄存器------------------
sfr IE             = 0xA8;			//中断允许寄存器
sbit EA            = IE^7;			//总中断控制位   1:开全局中断  0:关全局中断
sbit EPCA_LVD      = IE^6;			//低压中断控制位 1:允许PCA模块中断及低压中断   0:禁止PCA模块中断及低压中断(STC12C54xx系列没有该位)
sbit EADC_SPI      = IE^5;          //ADC中断允许位  1:允许ADC中断及SPI中断  0:禁止ADC中断及SPI中断
sbit ES            = IE^4;			//串行口中断控制位  1:开串行口中断   0:关串行口中断
sbit ET1           = IE^3;			//T1中断控制位   1:开定时器1中断     0:关定时器1中断
sbit EX1           = IE^2;			//外部~INT1中断控制位  1:开   0:关
sbit ET0           = IE^1;			//T0中断控制位   1:开定时器0中断     0:关定时器0中断
sbit EX0           = IE^0;			//外部~INT0中断控制位  1:开   0:关

sfr IP             = 0xB8;			//中断优先级寄存器
sbit EPCA_LVD      = IE^6;			//低压中断优先级控制位   1:高    0:低
sbit EADC_SPI      = IE^5;			//ADC、SPI中断优先级控制位   1:高    0:低
sbit PS            = IP^4;			//串行口中断优先级控制位     1:高    0:低
sbit PT1           = IP^3;			//T1中断优先级控制位      1:高    0:低
sbit PX1           = IP^2;			//外部~INT1中断优先级控制位  1:高    0:低
sbit PT0           = IP^1;		    //T0中断优先级控制位   1:高    0:低
sbit PX0           = IP^0;			//外部~INT0中断优先级控制位  1:高    0:低

sfr IPH            = 0xB7;			//STC12C54xx系列新增优先级控制寄存器(可用此寄存器将优先级设为4级)
sfr TCON           = 0x88;		
sfr SCON           = 0x98;		
sfr PCON           = 0x87;	
sfr AUXR           = 0x8E;	
sfr ADC_CONTR      = 0xC5;
sfr SPSTAT         = 0x84;			//SPI状态寄存器
//SPI状态寄存器位分配    SPIF(SPSTAT.7)	   WCOL(SPSTAT.6)
//SPIF:SPI传输完成标志,当一次串行传输完成时,SPIF置位,并当WSPI与EA都置位时产生中断。当SPI处于主模式且SSIG=0时,如果/SS为
//      输入并被驱动为低电平,SPI也将置位       SPIF标志通过软件向其写入“1”清零
//WCOL:SPI写冲突标志。在数据传输的过程中如果对SPI数据寄存器SPDAR执行写操作,WCOL将置位。WCOL标志通过软件向其写入“1”清零
sfr CCON           = 0xD8;			
sfr CMOD           = 0xD9;		   
sfr CCAPM0         = 0xDA;		
sfr CCAPM1         = 0xDB;			
sfr CCAPM2         = 0xDC;	
sfr CCAPM3         = 0xDD;	

//-------------------STC12C5410系列单片机	PCA/PWM 	特殊功能寄存器------------------
sfr CCON           = 0xD8;			//PCA控制寄存器
/*
 CCON寄存器位描述  CF  CR  --  --  CCF3  CCF2  CCF1  CCF0
 CF:PCA计数器阵列溢出标志  计数值翻转时该位由硬件置位,如果CMOD寄存器的ECF位置置1,CF标志可用来产生中断
     CF可以通过硬件或者软件置位,但只能通过软件清零
 CR:PCA计数器阵列运行控制位  该位通过软件置位,用来起动PAC计数器阵列计数    该位通过软件清零,用来关闭PCA计数器
 CCF3:PCA模块3中断标志   当出现匹配或捕获时该位由软件置位,该位必须通过软件清零
 CCF2:PCA模块2中断标志   当出现匹配或捕获时该位由软件置位,该位必须通过软件清零
 CCF1:PCA模块1中断标志   当出现匹配或捕获时该位由软件置位,该位必须通过软件清零
 CCF0:PCA模块0中断标志   当出现匹配或捕获时该位由软件置位,该位必须通过软件清零
*/

sfr CMOD		   = 0xD9;			//PCA计数器控制位寄存器
/*
CMOD寄存器位描述  CIDL  --  --  --  --  CPS1  CPS0  ECF
CIDL:计数器阵列空闲控制   CIDL=0时,空闲模式下PCA计数器继续工作
                           CIDL=1时,空闲模式下PCA计数器停止工作
CPS1  CPS0:PCA计数脉冲选择(时钟输入)
 0      0	   0,内部时钟,Fose/12
 0    	1	   1,内部时钟,Fose/2
 1		0	   2,定时器0溢出,由于定时器0可以工作在1T方式,固可以达到一个时钟就溢出,所以可大大Fose,同过改变定时器0的溢出率就可以实现可调频的PWM输出
 1		1	   3,ECI/P3.4脚的外部时钟输入(最大速率=Fose/2)
*/
sfr CCAPM0         = 0xDA;			
sfr CCAPM1         = 0xDB;
sfr CCAPM2         = 0xDC;
sfr CCAPM3         = 0xDD;			//PCA比较/捕获模块寄存器
/*
CCAPMn寄存器的位描述  --  ECOMn  CAPPn  CAPNn  MATn  TOGn  PWMn  ECCFn
ECOMn=1:允许比较功能
CAPPn=1:允许上升沿触发捕捉功能
CAPNn=1:允许下降沿触发捕捉功能
MATn=1: 当匹配情况发生时,允许CCON中的CCFn置位
TOGn=1: 当匹配情况发生时,CEXn将翻转
PWMn=1: 将CEXn设置为PWM输出
ECCFn=1:允许CCON中的CCFn触发中断
ECOMn  CAPPn  CAPNn  MATn  TOGn  PWMn  ECCFn
  0		 0		0	   0	0	   0	 0	  0x00	   未启用任何功能
  x		 1		0	   0	0	   0	 x	  0x21	   16位CEXn上升沿触发捕捉功能
  x		 0		1	   0	0	   0	 x	  0x11	   16位CEXn下降沿触发捕捉功能
  x		 1		1	   0	0	   0	 x	  0x31	   16位CEXn边沿(上下沿)触发捕捉功能
  1		 0		0	   1	0	   0	 x	  0x49	   16位软件定时器
  1		 0		0	   1	1	   0	 x	  0x4D	   16位高速脉冲输出
  1		 0		0	   0	0	   1	 0	  0x42	   8位PWM
*/
sfr CL             = 0xE9;
sfr CH             = 0xF9;
sfr CCAP0L         = 0xEA;			//高速脉冲输出寄存器低位
sfr CCAP0H         = 0xFA;			//高速脉冲输出寄存器高位   CCAPn_Value = INT(Fose/(4*f)+0.5)   
sfr CCAP1L         = 0xEB;			//						   CCAPn_Value 寄存器值 Fose主频  f要求输出频率  INT()下取整函数  
sfr CCAP1H         = 0xFB;
sfr CCAP2L         = 0xEC;
sfr CCAP2H         = 0xFC;
sfr CCAP3L         = 0xED;
sfr CCAP3H         = 0xFD;
sfr PCA_PWM0       = 0xF2;			//PWM寄存器
sfr PCA_PWM1       = 0xF3;
sfr PCA_PWM2       = 0xF4;
sfr PCA_PWM3       = 0xF5;

//-------------------STC12C5410系列单片机	ADC 	特殊功能寄存器------------------
sfr ADC_CONTR      = 0xC6;          //ADC转换控制寄存器
sbit ADC_POWER     = ADC_CONTR ^ 7; //ADC电源控制位  1:打开A/D转换器电源  0:关闭ADC电源
sbit SPEED1        = ADC_CONTR ^ 6;
sbit SPEED0        = ADC_CONTR ^ 5; //A/D转换所需时间控制位
/*
SPEED1 SPEED0   A/D所需时间
  1		  1		210个时钟周期转换一次   CPU工作频率20MHz时,A/D转换速度约为100KHz
  1		  0		420个时钟周期转换一次
  0		  1		630个时钟周期转换一次
  0		  0		840个时钟周期转换一次
*/
sbit ADC_FLAG      = ADC_CONTR ^ 4; //模数转换器转换结束标志位,当A/D转换完成后,ADC_FALG=1,要由软件清0
									//不管是A/D转换完成后由该位申请产生中断,还是由软件查询该标志位A/D转换是否结束,
									//当A/D转换完成后,ADC_FALG=1,一定要软件清0
sbit ADC_START     = ADC_CONTR ^ 3; //模数转换器(ADC)转换启动控制位  设置为“1”时,开始转换,转换结束后为0
sbit CHS2          = ADC_CONTR ^ 2;
sbit CHS1          = ADC_CONTR ^ 1;
sbit CHS0          = ADC_CONTR ^ 0; //模拟输入通道选择
/*
CHS2  CHS1  CHS0   模拟通道选择
*/
sfr ADC_DATA       = 0xC6;			//ADC转换结果寄存器,高8位
sfr ADC_LOW2       = 0xBE;			//ADC转换结果寄存器,低2位

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -