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

📄 stc12c2052ad.h

📁 直流电机的PWM速度控制程序?绷鞯缁腜WM速度控制程序?绷鞯缁腜WM速度控制程序?绷鞯缁腜WM速度控制程序
💻 H
📖 第 1 页 / 共 2 页
字号:
/*
stc12c2052AD 头文件。
晓奇工作室编制。	http://www.xiao-qi.com/
2006.01.12
*/
/*------------------------------------------------
Byte Registers
------------------------------------------------*/
_sfrbyte SP   _at( 0x81 );
_sfrbyte DPL  _at( 0x82 );
_sfrbyte DPH  _at( 0x83 );
_sfrbyte PCON _at( 0x87 );
_sfrbyte TCON _at( 0x88 );
_sfrbyte TMOD _at( 0x89 );
_sfrbyte TL0  _at( 0x8A );
_sfrbyte TL1  _at( 0x8B );
_sfrbyte TH0  _at( 0x8C );
_sfrbyte TH1  _at( 0x8D );
_sfrbyte SCON _at( 0x98 );
_sfrbyte SBUF _at( 0x99 );
_sfrbyte IE   _at( 0xA8 );
_sfrbyte IPH  _at( 0XB7 );		/* 中断优先级扩展寄存器,用于定义扩展中断源的优先级	*/
/*
	IPH^7空
	IPH^6(PPCA_LVDH)... PCA扩展定时器中断与低电压中断公用
	IPH^5(PADC_SPIH)... ADC模数转换与SPI传送结束中断公用
	IPH^4(PSH)......... ??
	IPH^3(PT1H)........ 
	IPH^2(PX1H)
	IPH^1(PT0H)
	IPH^0(PX0H)
*/
_sfrbyte IP  _at( 0xB8 );		/* 通用中断源的优先级定义寄存器,与IPH合并使用		*/
_sfrbyte PSW _at( 0xD0 );
_sfrbyte ACC _at( 0xE0 );
_sfrbyte B   _at( 0xF0 );

/* ----------------- P1口IO定义 ------------------- */
/* P1M0[7~0] P1M1[7~0]	方向作用					*/
/*	0			0		传统51准双向口模式			*/
/*	0			1		推挽输出,上拉20mA			*/
/*	1			0		高阻单向输入,AD必须。		*/
/*	1			1		开漏输出,AD也可以选择		*/
_sfrbyte P1   _at( 0x90 );					/* P1口地址 	*/
_sfrbyte P1M0 _at( 0x91 );					/* P1口方向0	*/
_sfrbyte P1M1 _at( 0x92 );					/* P1口方向1	*/

/* ----------------- P3口IO定义 ------------------- */
/* P3M0[7~0] P3M1[7~0]	方向作用					*/
/*	0			0		传统51准双向口模式			*/
/*	0			1		推挽输出,上拉20mA			*/
/*	1			0		高阻单向输入,AD必须。		*/
/*	1			1		开漏输出,AD也可以选择		*/
_sfrbyte P3   _at( 0xB0 );				/* P3口地址 	*/
_sfrbyte P3M0 _at( 0xB1 );				/* P3口方向0	*/
_sfrbyte P3M1 _at( 0xB2 );				/* P3口方向1	*/

/*----------------- IAP/IAP 功能寄存器 ------------ */
_sfrbyte ISP_DATA  _at( 0XE2 );			/* 收发数据寄存器	*/
_sfrbyte ISP_ADDRH _at( 0XE3 );			/* 目标操作地址高8位*/
_sfrbyte ISP_ADDRL _at( 0XE4 );			/* 目标操作地址低8位*/
_sfrbyte ISP_CMD   _at( 0XE5 );			/* 操作指令寄存器	*/
_sfrbyte ISP_TRIG  _at( 0XE6 );			/* 触发寄存器		*/
_sfrbyte ISP_CONTR _at( 0XE7 );			/* 控制寄存器		*/

/* --------------- 新增功能控制寄存器 ------------- */
_sfrbyte AUXR _at( 0X8E );			/*新增特殊功能寄存器*/
/*
其中:
	AUXR^7(T0x12)..	定时器ct0时钟源设定:0_atbit(传统1/12,1_atbit(1:1不分频;
	AUXR^6(T1x12)..	定时器ct1时钟源设定:0_atbit(传统1/12,1_atbit(1:1不分频;
	AUXR^5(UARTx6). 串口模式0时时钟设定:0_atbit(传统1/12, 1_atbit(1/2 2分频;
	AUXR^4(EADCI).. ADC中断允许位:0_atbit(禁止,1_atbit(允许
	AUXR^3(ESPI)... SPI中断允许位:0_atbit(禁止,1_atbit(允许
	AUXR^2(ELVDI).. 低电压中断允许:0_atbit(禁止,1_atbit(允许
					5V系统3.7V,3V系统2.4V以下发生中断
	AUXR^1/AUXR^0.. 保留
*/

_sfrbyte CLOCK_DIV _at( 0XC7 );		/* 空闲模式下的时钟分频,可进一步降低功耗	*/
_sfrbyte WDT_CONTR _at( 0XE1 );		/* 看门狗控制寄存器							*/
/* 其中:
	WDT_CONTR^7(WDT_FLAG).. 看门狗溢出标志_atbit(1,可软件清零
	WDT_CONTR^6保留
	WDT_CONTR^5(EN_WDT).... 看门狗允许标志_atbit(1
	WDT_CONTR^4(CLR_WDT)... 看门狗清零_atbit(1,硬件自动回零
	WDT_CONTR^3(IDLE_WDT).. _atbit(1空闲模式下继续工作,_atbit(0空闲模式下不工作
	WDT_CONTR^2~0(PS2~0)... 看门狗溢出时间设定:
	0 0 0 ...... 2分频..... @20MHz下  39.3mS
	0 0 1 ...... 4分频..... @20MHz下  78.6mS
	0 1 0 ...... 8分频..... @20MHz下 157.3mS
	0 1 1 ......16分频..... @20MHz下 314.6mS
	1 0 0 ......32分频..... @20MHz下 629.1mS
	1 0 1 ......64分频..... @20MHz下  1.25S
	1 1 0 .....128分频..... @20MHz下   2.5S
	1 1 1 .....256分频..... @20MHz下    5S
    其他主频下的时间可以参照上表作相应换算。
*/
_sfrbyte SADDR 		_at( 0XA9 );		/* 从地址,未启用		*/
_sfrbyte SADEN 		_at( 0XB9 );		/* 标识地址,未启用		*/
_sfrbyte SPI_STATUS _at( 0X84 );		/* SPSTAT SPI状态寄存器 */
/*	其中:
	SPSTAT^7(SPIF).... SPI 传输完成标志。当一次串行传输完成时,SPIF 置位,
						并当ESPI和EA 都置位时产生中断。当SPI 处于主模式且
						SSIG_atbit(0 时,如果/SS 为输入并被驱动为低电平,SPIF 
						也将置位。SPIF标志通过软件向其写入“1”清零。
	SPSTAT^6(WCOL).... SPI 写冲突标志。在数据传输的过程中如果对SPI 数据寄
						存器SPDAT 执行写操作,WCOL 将置位。WCOL 标志通过软
						件向其写入“1”清零。
	SPSTAT^5~0保留
*/
_sfrbyte SPI_CONTR _at( 0X85);		/* SPI控制寄存器SPCTL	*/
/*	其中:
	SPCTL^7(SSIG)......	/SS 忽略。
						1:MSTR(位4)确定器件为主机还是从机。
						0:/SS 脚用于确定器件为主机还是从机。/SS 脚可作为I/O
							口使用(见SPI 主从选择表)。
	SPCTL^6(SPEN)...... SPI 使能。1:SPI 使能。0:SPI 被禁止,所有SPI 管脚都作
						为I/O 口使用。	
	SPCTL^5(DORD)...... SPI 数据顺序:1:数据字的LSB(最低位) 最先发送;
						0:数据字的MSB(最高位) 最先发送。
	SPCTL^4(MSTR)...... 主/从模式选择(见SPI 主从选择表)。
	SPCTL^3(CPOL)...... SPI 时钟极性:1:SPICLK 空闲时为高电平。SPICLK 的前时
						钟沿为下降沿而后沿为上升沿。0:SPICLK 空闲时为低电平。
						SPICLK 的前时钟沿为上升沿而后沿为下降沿。
	SPCTL^2(CPHA)...... SPI 时钟相位选择:
						1:数据在SPICLK 的前时钟沿驱动,并在后时钟沿采样。
						0:数据在/SS 为低(SSIG=00)时被驱动,在SPICLK 的后时钟
						   沿被改变,并在前时钟沿被采样。
							(注:SSIG_atbit(1 时的操作未定义)
	SPCTL^1~0(SPR1~0)...SPR0/SPR1是SPI 时钟速率选择控制位。
						SPR1, SPR0:
							0 0 -CPU_CLK/4
							0 1 -CPU_CLK/16
							1 0 -CPU_CLK/64
							1 1 -CPU_CLK/128
*/
_sfrbyte SPI_DATA  _at(0X86);		/* SPI数据收发寄存器SPDAT	*/
_sfrbyte ADC_CONTR _at(0XC5);		/* ADC控制寄存器			*/
/*	其中:
	ADC_CONTR^7(ADC_POWER)..ADC 电源控制位。0:关闭;1:打开.
							启动AD 转换前一定要确认AD 电源已打开,AD 转换结束
							后关闭AD 电源可降低功耗,也可不关闭。初次打开内部
							A/D 转换模拟电源,需适当延时,等内部模拟电源稳定
							后,再启动A/D 转换建议启动A/D 转换后,在A/D 转换
							结束之前,不改变任何I/O 口的状态,有利于高精度A/D
							转换.
	ADC_CONTR^6~5(SPEED1~0).模数转换器转换速度控制位
		SPEED1 SPEED0 		A/D 转换所需时间
			1 	1			210个时钟周期转换一次,CPU 工作频率20MHz 时,A/D转
							换速度约 100KHz
			1	0			420个时钟周期转换一次
			0	1			630个时钟周期转换一次
			0	0			840个时钟周期转换一次
	ADC_CONTR^4(ADC_FLAG)...模数转换器转换结束标志位,当A/D 转换完成后,ADC_FLAG
							_atbit( 1,要由软件清0。不管是A/D 转换完成后由该位申请产
							生中断,还是由软件查询该标志位A/D 转换是否结束,当A/D
							 转换完成后,ADC_FLAG _atbit( 1,一定要软件清0。
	ADC_CONTR^3(ADC_START)...模数转换器(ADC)转换启动控制位,设置为1时,开始转换
	ADC_CONTR^2~0(CHS2~0)....CHS0:模拟输入通道选择
		CHS2 CHS1 CHS0	模拟输入通道选择
			0 0 0 		选择 P1.0 作为A/D 输入来用
			0 0 1 		选择 P1.1 作为A/D 输入来用
			0 1 0 		选择 P1.2 作为A/D 输入来用
			0 1 1 		选择 P1.3 作为A/D 输入来用
			1 0 0 		选择 P1.4 作为A/D 输入来用
			1 0 1 		选择 P1.5 作为A/D 输入来用
			1 1 0 		选择 P1.6 作为A/D 输入来用
			1 1 1 		选择 P1.7 作为A/D 输入来用
*/
_sfrbyte ADC_DATA _at( 0XC6 );		/* A/D 转换结果特殊功能寄存器 */
_sfrbyte CCON	  _at( 0XD8 );		/* PCA 控制寄存器,支持位寻址后面有定义*/
/*	其中:
	CCON^7(CF)......PCA计数器阵列溢出标志。计数值翻转时该位由硬件置位。
					如果CMOD寄存器的ECF位置位, CF标志可用来产生中断。
					CF位可通过硬件或软件置位, 但只可通过软件清零。
	CCON^6(CR)......PCA计数器阵列运行控制位。该位通过软件置位, 用来起
					动PCA计数器阵列计数。该位通过软件清零, 用来关闭
					PCA计数器。
	CCON^5~2保留
	CCON^1(CCF1)....PCA模块1中断标志。当出现匹配或捕获时该位由硬件置位。
					该位必须通过软件清零。
	CCON^0(CCF0)....PCA模块0中断标志。当出现匹配或捕获时该位由硬件置位。
					该位必须通过软件清零。
*/

_sfrbyte CMOD	 _at( 0XD9 );		/* PCA 模式寄存器 */
/*	其中:
	CMOD^7(CIDL)....计数器阵列空闲控制:CIDL_atbit(0时,空闲模式下PCA计数器继
					续工作。CIDL=1时,空闲模式下PCA计数器停止工作。
	CMOD^6~3保留
	CMOD^2~1(CPS1,CPS0)PCA计数脉冲选择
		CPS1 CPS0 	选择PCA 时钟源输入
		0	0	 	0,内部时钟,Fosc/12
		0	1		1,内部时钟,Fosc/2
		1	0		2,定时器0溢出,由于定时器0可以工作在1T方式,所以可以
						达到计一个时钟就溢出, 频率反而是最高的, 可达
						到Fosc
		1	1		3,ECI/P3.4脚的外部时钟输入(最大速率_atbit(Fosc/2)
	CMOD^0(ECF).....PCA计数溢出中断使能:ECF_atbit(1时,使能寄存器CCON CF位的
					中断。ECF_atbit(0时,禁止该功能。
*/

_sfrbyte CH			_at( 0XF9 );		/* PCA计数器初始值高8位	*/
_sfrbyte CL     	_at( 0XE9 );		/* PCA计数器初始值低8位	*/
_sfrbyte CCAPM0     _at( 0XDA );		/* PCA 比较/ 捕获模块寄存器0	*/
/*
	CCAPM0^7保留
	CCAPM0^6(ECOM0)........ 使能比较器。ECOM0= 1时使能比较器功能。
	CCAPM0^5(CAPP0)........ 正捕获。CAPP0= 1时使能上升沿捕获。
	CCAPM0^4(CAPN0)........ 负捕获。CAPN0= 1时使能下降沿捕获。

⌨️ 快捷键说明

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