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

📄 stc12c5410.h

📁 STC12C5410功能寄存器解析
💻 H
📖 第 1 页 / 共 2 页
字号:
//-------------STC12C5410系列单片机内核特殊功能寄存器-------------
sfr ACC            = 0xE0;		       //累加器(可按位寻址)
sfr B              = 0xF0;			   //B寄存器(可按位寻址)
sfr PSW            = 0xD0;			   //程序状态字(可按位寻址)
sbit CY            = PSW ^ 7;          //进位标志位  有进位 CY=1   没有进位CY=0
sbit AC            = PSW ^ 6;		   //半进位标志位   当D3位向D4位进位/借位时,AC=1
sbit F0            = PSW ^ 5;		   //用户自定义标志位,由编程人员自行决定
sbit RS1           = PSW ^ 4;		   
sbit RS0           = PSW ^ 3;		   //RS1,RS0工作寄存器组选择位
                                       //        RS1   RS0      工作寄存器组 
									   //		  0		0			 0组(00-07H)
									   //		  0		1			 1组(08-0FH)
									   //		  1		0			 2组(10-17H)
									   //         1		1			 3组(18-1FH)
sbit 0V            = PSW ^ 2;		   //溢出标志位
sbit F1            = PSW ^ 1;
sbit P             = PSW ^ 0;		   //奇偶校验位   每次运算后ACC中 二进制数“1”的个数为奇数,P=1 否则P=0
sfr SP             = 0x81;	           //堆栈指针
sfr DPL            = 0x82;			   //数据指针低字节
sfr DPH            = 0x83;			   //数据指针高字节

//-------------STC12C5410系列单片机系统管理特殊功能寄存器-----------
sfr PCON           = 0x87;             //电源控制寄存器(该寄存器不能按位寻址)
/*
PCON寄存器:SMOD  SMOD0  LVDF  POF  GF1  GF0  PD  IDL
SMOD波特率倍增位,在串行通讯是用   0:用户选用的通信波特率  1:用户选用的通信波特率提高一倍
SM0D0
LVDF
POF:上点复位标志(判断单片机是上电复位(POF=1),还是外部复位信号产生复位/内部看门狗复位(POF=0))
GF1、GF0:通用标志位,供用户使用
PD:掉电方式位  0:正常方式   1:掉电方式
IDL:待机方式位 0:正常方式   1:待机方式
*/
sfr AUXR           = 0x8E;             //定时/计数辅助控制器 (只读控制器,只能直接写各位,而不能采用含读操作的“与”“或”进行操作)
sbit T0x12         = AUXR ^ 7;         //位T0x12控制定时器0的速度  0:定时器0是传统8051速度,12分频
                                                                 //1:定时器0的速度传统8051的12倍,不分频
sbit T1x12         = AUXR ^ 6;         //位T1x12控制定时器1的速度  0:定时器1是传统8051速度,12分频
                                                                 //1:定时器0的速度传统8051的12倍,不分频
																 //如果UART串口用定时器1做波特率发生器,T1x12位
																 //可以控制UZRT串口是12T,还是1T
sbit UART_M0x6     = AUXR ^ 5;         //0:UART串口的模式0是传统12T的8051速度,12分频
                                       //1:UART串口的模式0的速度是传统12T的8051的6倍,2分频
									   //STC12C54xxAD系列是1T单片机,为兼容传统8051,UART串口复位后是兼容传统8051的
sbit EADCI         = AUXR ^ 4;         //0:禁止A/D中断   1:允许A/D中断
sbit ESPI          = AUXR ^ 3;         //0:禁止SPI中断   1:允许SPI中断
sbit ELVDI         = AUXR ^ 2;         //0:禁止低压中断  1:允许电压中断(STC12C5410AD系列没有低压中断功能)

sfr CLK_DIV        = 0xC7;			   //时钟分频寄存器
/*
sbit CLKS2         = CLK_DIV ^ 2;
sbit CLKS1         = CLK_DIV ^ 1;
sbit CLKS0         = CLK_DIV ^ 0;
CLK_DIV寄存器   CLKS2   CLKS1   CLKS0
				  0		  0		  0	  系统时钟(或者外部时钟)
				  0		  0		  1	  系统时钟/2
				  0		  1		  0	  系统时钟/4
				  0		  1		  1	  系统时钟/8
				  1		  0		  0	  系统时钟/16
				  1		  0		  1	  系统时钟/32
				  1		  1		  0	  系统时钟/64
				  1		  1		  1	  系统时钟/128
*/
//------------ STC12C5410系列单片机I/O特殊功能寄存器---------------
sfr P0             = 0x80;           //定义P0地址
sfr P0M0           = 0x93;           
sfr P0M1           = 0x94;           //I/O口模式选择
                                     //  P0M0   P0M1      I/O口模式   
                                     //	 0		0		  准双向口(传统8051 I/O口模式)
                                     //	 0		1		  推挽输出(强上拉输出)
                                     //	 1		0		  仅为输入
                                     //	 1		1		  开漏
sbit P0.3          = P0 ^ 3;         //定义P0.3地址
sbit P0.2          = P0 ^ 2;         //定义P0.2地址
sbit P0.1          = P0 ^ 1;         //定义P0.1地址
sbit P0.0          = P0 ^ 0;         //定义P0.0地址

sfr P1             = 0x90;           //定义P1口地址
sfr P1M0           = 0x91;
sfr P1M1           = 0x92;           //P1口模式选择
                                     //  P1M0   P1M1      I/O口模式   
                                     //	 0		0		  准双向口(传统8051 I/O口模式)
                                     //	 0		1		  推挽输出(强上拉输出)
                                     //	 1		0		  仅为输入,如果该I/O口需作为A/D使用,可选此模式
                                     //	 1		1		  开漏,如果该I/O口需作为A/D使用,可选此模式
sbit P1.7          = P1 ^ 7;         //定义P1.7地址
sbit P1.6          = P1 ^ 6;         //定义P0.6地址
sbit P1.5          = P1 ^ 5;         //定义P1.5地址
sbit P1.4          = P1 ^ 4;         //定义P1.4地址
sbit P1.3          = P1 ^ 3;         //定义P1.3地址
sbit P1.2          = P1 ^ 2;         //定义P1.2地址
sbit P1.1          = P1 ^ 1;         //定义P1.1地址
sbit P1.0          = P1 ^ 0;         //定义P1.0地址

sfr P2             = 0xA0;           //定义P2口地址
sfr P2M0           = 0x95;
sfr P2M1           = 0x96;           //P2口模式选择
                                     //  P2M0   P2M1      I/O口模式   
                                     //	 0		0		  准双向口(传统8051 I/O口模式)
                                     //	 0		1		  推挽输出(强上拉输出)
                                     //	 1		0		  仅为输入
                                     //	 1		1		  开漏
sbit P2.7          = P2 ^ 7;         //定义P2.7地址
sbit P2.6          = P2 ^ 6;         //定义P2.6地址
sbit P2.5          = P2 ^ 5;         //定义P2.5地址
sbit P2.4          = P2 ^ 4;         //定义P2.4地址
sbit P2.3          = P2 ^ 3;         //定义P2.3地址
sbit P2.2          = P2 ^ 2;         //定义P2.2地址
sbit P2.1          = P2 ^ 1;         //定义P2.1地址
sbit P2.0          = P2 ^ 0;         //定义P2.0地址

sfr P3             = 0xB0;           // 定义P3口地址
sfr P3M0           = 0xB1;
sfr P3M1           = 0xB2;           //P3口模式选择
                                     //  P3M0   P3M1      I/O口模式   
                                     //	 0		0		  准双向口(传统8051 I/O口模式)
                                     //	 0		1		  推挽输出(强上拉输出)
                                     //	 1		0		  仅为输入
                                     //	 1		1		  开漏
sbit P3.7          = P3 ^ 7;         //定义P3.7地址
sbit P3.5          = P3 ^ 5;         //定义P3.5地址
sbit P3.4          = P3 ^ 4;         //定义P3.4地址
sbit P3.3          = P3 ^ 3;         //定义P3.3地址
sbit P3.2          = P3 ^ 2;         //定义P3.2地址
sbit P3.1          = P3 ^ 1;         //定义P3.1地址
sbit P3.0          = P3 ^ 0;         //定义P3.0地址

//---------------STC12C5410系列单片机 定时器 特殊功能寄存器------------------
sfr TCON           = 0x88;          //定时控制寄存器(可按位寻址)
sbit TF1           = TCON ^ 7;      //定时器/计数器1溢出标志位 当T1被允许计数后,T1从初值开始加1计数,
									//最高位产生溢出时,置TF1=1,并向CPU请求中断,当CPU响应时,由硬件置TF1=0
sbit TR1           = TCON ^ 6;      //定时器T1的运行控制位  该位由软件置位和清零当GATE(TMOD.7)=0,TR1=1时就允许T1开始计数,TR1=0时禁止计数
									//当GATE(TMOD.7)=1,TR1=1且~INT1输入高电平时,才允许T1计数
sbit TF0           = TCON ^ 5;      //定时器/计数器0溢出标志位 当T0被允许计数后,T0从初值开始加1计数,
									//最高位产生溢出时,置TF0=1,并向CPU请求中断,当CPU响应时,由硬件置TF0=0
sbit TR0           = TCON ^ 4;      //定时器T0的运行控制位  该位由软件置位和清零当GATE(TMOD.3)=0,TR0=1时就允许T0开始计数,TR0=0时禁止计数
									//当GATE(TMOD.3)=1,TR0=1且~INT0输入高电平时,才允许T1计数
sbit IE1           = TCON ^ 3;      //外部中断1请求标志位   当主机响应中断转向该中断服务程序时,由内部硬件自动将IE1位清0
sbit IT1           = TCON ^ 2;      //外部中断1触发方式控制位  IT1=0时,外部中断1为低电平触发  当~INT1(P3.3)输入低电平时,置位IE1.采用低电平触发方式时,
									//外部中断源(输入到~INT1)必须保持低电平有效,直到该中断被CPU响应,同时在中断服务程序执行完之前,外部中断源必须
									//被清除(P3.3要变高),否则将产生另一次中断。当IT1=1时,则外部中断1(~INT1)端口由“1”—>"0"下降沿跳变,激活中断
									//请求标志位IE1,向主机请求中断处理
sbit IE0           = TCON ^ 1;      //外部中断0请求标志位   当主机响应中断转向该中断服务程序时,由内部硬件自动将IE0位清0
sbit IT0           = TCON ^ 0;      //外部中断0触发方式控制位  IT0=0时,外部中断0为低电平触发  当~INT0(P3.2)输入低电平时,置位IE0.采用低电平触发方式时,
									//外部中断源(输入到~INT0)必须保持低电平有效,直到该中断被CPU响应,同时在中断服务程序执行完之前,外部中断源必须
									//被清除(P3.2要变高),否则将产生另一次中断。当IT0=1时,则外部中断1(~INT1)端口由“1”—>"0"下降沿跳变,激活中断
									//请求标志位IE0,向主机请求中断处理

sfr TMOD           = 0x89;			//定时器/计数器方式控制(不可按位寻址)
/*
                        			定时器1				定时器0
TM0D定时器/计数器方式控制	 GATE  C/~T  M1  M0  GATE  C/~T  M1  M0
TM0D.7   GATE  TM0D.7控制定时器1,置1时只有在~INT1脚为高及TR1控制未知1时才可打开定时器/计数器1
TM0D.3   GATE  TM0D.3控制定时器0,置1时只有在~INT1脚为高及TR1控制未知1时才可打开定时器/计数器0
TM0D.6	 C/~T  TM0D.6控制定时器1用作定时器或计数器,0:用作定时器(内部系统时钟输入) 1:用作计数器(从T1/P3.5脚输入)
TM0D.2	 C/~T  TM0D.2控制定时器0用作定时器或计数器,0:用作定时器(内部系统时钟输入) 1:用作计数器(从T0/P3.4脚输入)
TM0D.5/TM0D.4  M1 M0     定时器/计数器1模式选择
			   0  0		 13位定时器/计数器,兼容8048定时器模式,TL1只用低5位参与分频,TH1整个8位全用
			   0  1		 16位	定时器/计数器,TL1,TH1全用
			   1  0		 8位自动重装载定时器,当溢出时将TH1存放的值自动重装入TL1
			   1  1		 定时器/计数器1此时无效(停止计数)
TM0D.1/TM0D.0  M1 M0     定时器/计数器0模式选择
			   0  0		 13位定时器/计数器,兼容8048定时器模式,TL0只用低5位参与分频,TH0整个8位全用
			   0  1		 16位	定时器/计数器,TL0,TH0全用
			   1  0		 8位自动重装载定时器,当溢出时将TH0存放的值自动重装入TL0
			   1  1		 定时器0此时作为双8位定时器/计数器。TL0作为一个8位定时器/计数器,通过标准定时器0的控制位控制
			             TH0仅作为一个8位定时器,由定时器1的控制位控制
*/
sfr TL0            = 0x8A;			//定时器/计数器0数据寄存器低8位
sfr TH0            = 0x8C;			//定时器/计数器0数据寄存器高8位
sfr TL1            = 0x8B;			//定时器/计数器1数据寄存器低8位

⌨️ 快捷键说明

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