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

📄 stc12c5410ad.h

📁 TSL256源程序驱动!通过其IIC口采集环境光光强
💻 H
字号:
/* After is STC additional SFR or change */
//*********AUXR**************************************************************************/
sfr  AUXR  = 0x8e; 
//sbit T0x12=AUXR^7;    // 0- OLD 12T|1- OLD 1T
//sbit T1x12=AUXR^6;	  // 0- OLD 12T|1- OLD 1T
//sbit UART_M0X6=AUXR^5;// 0- OLD 12T|1- OLD 1T

//sbit EADCI=AUXR^4;    // 0- Disable the ADC INT |1- 0- Enable the ADC INT
//sbit ESPI=AUXR^3;     // 0- Disable the SPI INT |1- 0- Enable the SPI INT
//sbit ELVDI=AUXR^2;    // 0- Disable the LV INT |1- 0- Enable the LV INT
//定时器T0时钟
#define SET_T0_DIV_BY_12	AUXR &= 0X7F 	//设置T0的速度0=12T
#define SET_T0_DIV_BY_1		AUXR |= 0x80    //设置T0的速度1=1T
//定时器T1时钟
#define SET_T1_DIV_BY_12	AUXR &= 0Xbf	//设置T0的速度0=12T
#define SET_T1_DIV_BY_1	    AUXR |= 0X40   	//设置T0的速度1=1T
//uart时钟
#define SET_UART_M0DIV_BY_12	AUXR &= 0Xdf	//设置uart模式0的速度。0,12t速度。1是2t速度。 
#define SET_UART_M0DIV_BY_2	AUXR |= 0x20
//ADC中断
#define ENABLE_ADC_INT		  EADC_SPI = 1; AUXR |= 0X10	//ADC中断使能
#define DISABLE_ADC_INT       EADC_SPI = 0; AUXR &= 0XEF	//ADC中断取消
//spi中断
#define ENABLE_SPI_INT        EADC_SPI = 1; AUXR |=0X80		//SPI接口中断使能
#define DISABLE_SPI_INT       EADC_SPI = 0; AUXR &= 0XF7	//SPI接口中断取消
//低电压中断
#define ENABLE_LVD_INT        AUXR |= 0X04;	                //低电压中断使能
#define DISABLE_LVD_INT       AUXR &= 0XFB;             	//低电压中断取消

/* sfr  IPH   = 0xb7; */
//*********WDT_CONTR**************************************************************************/
/* Watchdog Timer Register */
sfr  WDT_CONTR = 0xe1;  
//sbit WDT_FLAG  =WDT_CONTR^7;   //看门狗溢出标志 硬件置1 软件清0 
//sbit EN_WDT    =WDT_CONTR^5;   //看门狗允许 1 
//sbit CLR_WDT   =WDT_CONTR^4;   //看门狗喂狗 置1
//sbit IDLE_WDT  =WDT_CONTR^3;   //看门狗空闲模式计算 1 | 不计算 0
//sbit PS2       =WDT_CONTR^2;   //看门狗预分频
//sbit PS1       =WDT_CONTR^1;
//sbit PS0       =WDT_CONTR^0;

#define WDT_FLG 	WDT_CONTR & 0X80
#define WDT_ENABLE  WDT_CONTR |= 0X20
#define WDT_DISABLE WDT_CONTR &= 0XDF
#define WDT_CLR		WDT_CONTR |= 0X10  
#define WDT_IDLE_ENABLE	WDT_CONTR |= 0X08
#define WDT_IDLE_DISABLE WDT_CONTR &= 0XF7
#define WDT_DIV_BY_2 	0
#define WDT_DIV_BY_4 	1
#define WDT_DIV_BY_8 	2
#define WDT_DIV_BY_16 	3
#define WDT_DIV_BY_32 	4
#define WDT_DIV_BY_64 	5
#define WDT_DIV_BY_128 	6
#define WDT_DIV_BY_256 	7
/* 看门狗溢出时间= (12× prescale ×32768)/时钟频率   */

//*********ISP_IAP_EEPROM**************************************************************************/
/* ISP_IAP_EEPROM Register */
sfr ISP_DATA  = 0xe2;
sfr ISP_ADDRH = 0xe3;
sfr ISP_ADDRL = 0xe4;
sfr ISP_CMD   = 0xe5;
sfr ISP_TRIG  = 0xe6;
sfr ISP_CONTR = 0xe7;

//*********CLK_DIV**************************************************************************/
/* System Clock Divider */
sfr CLK_DIV  = 0xc7;
#define IDLE_CLK_DIV_BY_1		    0
#define IDLE_CLK_DIV_BY_2		    1
#define IDLE_CLK_DIV_BY_4		    2
#define IDLE_CLK_DIV_BY_8		    3
#define IDLE_CLK_DIV_BY_16			4
#define IDLE_CLK_DIV_BY_32			5
#define IDLE_CLK_DIV_BY_64			6
#define IDLE_CLK_DIV_BY_128			7
#define Set_clk_div(x)		       CLK_DIV = (x)		//系统时钟分频

/* I_O Port Mode Set Register */
sfr P0M0  = 0x93;
sfr P0M1  = 0x94;
sfr P1M0  = 0x91;
sfr P1M1  = 0x92;
sfr P2M0  = 0x95;
sfr P2M1  = 0x96;
sfr P3M0  = 0xb1;
sfr P3M1  = 0xb2;
#define set_p1_mode(x,y)		P1M0 = (x); P1M1 = (y);	//设置p1口的模式 00-标准I/o  | 01-推挽  | 00-输入  | 00-开漏  
#define set_p3_mode(x,y)		P3M0 = (x); P3M1 = (y); //设置p3口的模式 00-标准I/o  | 01-推挽  | 00-输入  | 00-开漏  

/* SPI Register */
sfr SPSTAT  = 0x84;
sfr SPCTL   = 0x85;
sfr SPDAT   = 0x86;

/* ADC Register */
sfr ADC_CONTR  = 0xc5;
sfr ADC_DATA   = 0xc6;
sfr ADC_LOW2   = 0xbe;

/* PCA SFR */
sfr CCON   = 0xD8;
sfr CMOD   = 0xD9;
sfr CCAPM0 = 0xDA;
sfr CCAPM1 = 0xDB;
sfr CCAPM2 = 0xDC;
sfr CCAPM3 = 0xDD;
sfr CCAPM4 = 0xDE;
sfr CCAPM5 = 0xDF;

sfr CL     = 0xE9;
sfr CCAP0L = 0xEA;
sfr CCAP1L = 0xEB;
sfr CCAP2L = 0xEC;
sfr CCAP3L = 0xED;
sfr CCAP4L = 0xEE;
sfr CCAP5L = 0xEF;

sfr CH     = 0xF9;
sfr CCAP0H = 0xFA;
sfr CCAP1H = 0xFB;
sfr CCAP2H = 0xFC;
sfr CCAP3H = 0xFD;
sfr CCAP4H = 0xFE;
sfr CCAP5H = 0xFF;

sfr PCA_PWM0 = 0xF2;
sfr PCA_PWM1 = 0xF3;
sfr PCA_PWM2 = 0xF4;
sfr PCA_PWM3 = 0xF5;
sfr PCA_PWM4 = 0xF6;
sfr PCA_PWM5 = 0xF7;

/*  CCON  */
sbit CF    = CCON^7;
sbit CR    = CCON^6;
sbit CCF5  = CCON^5;
sbit CCF4  = CCON^4;
sbit CCF3  = CCON^3;
sbit CCF2  = CCON^2;
sbit CCF1  = CCON^1;
sbit CCF0  = CCON^0;

/* Above is STC additional SFR or change */

/*--------------------------------------------------------------------------
REG51F.H

Header file for 8xC31/51, 80C51Fx, 80C51Rx+
Copyright (c) 1988-1999 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.

Modification according to DataSheet from April 1999
 - SFR's AUXR and AUXR1 added for 80C51Rx+ derivatives
--------------------------------------------------------------------------*/

/*  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;

/*  80C51Fx/Rx Extensions  */
//sfr AUXR   = 0x8E;
/* sfr AUXR1  = 0xA2; */
sfr SADDR  = 0xA9;
sfr IPH    = 0xB7;
sfr SADEN  = 0xB9;
sfr T2CON  = 0xC8;
sfr T2MOD  = 0xC9;
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;

/*  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;

/*  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; // alternatively "FE"
sbit FE   = 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;
             

sbit T2EX = P1^1;
sbit T2   = P1^0;

/*  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;

/* PCA Pin */

sbit CEX3 = P2^4;
sbit CEX2 = P2^0;
sbit CEX1 = P3^5;
sbit CEX0 = P3^7;
sbit ECI  = P3^4;

/*  IE   */
sbit EA   = IE^7;
sbit EPCA_LVD  = IE^6;
sbit EADC_SPI  = IE^5;
sbit ES   = IE^4;
sbit ET1  = IE^3;
sbit EX1  = IE^2;
sbit ET0  = IE^1;
sbit EX0  = IE^0;

/*  IP   */ 
sbit PPCA_LVD  = IP^6;
sbit PADC_SPI  = IP^5; 
sbit PS   = IP^4;
sbit PT1  = IP^3;
sbit PX1  = IP^2;
sbit PT0  = IP^1;
sbit PX0  = IP^0;

/********************************定时器设置***********************************/
//TMOD
// -------T1---------|-------T0---------|
//  7    6    5   4  | 3     2    1   0
// GATE  C/T  M1  M0 | GATE  C/T  M1  M0
//-------TIMER0(给TMOD赋值,用或运算)---------------------------
#define  T0_START_BY_TR_INT  8	//定时器计数器的启动由int和tr共同控制,同为高启动定时计数器。
#define  T0_START_BY_TR		 0  //定时计数器的启动由tr控制
#define  T0_COUNTER			 4  //工作在计数器模式
#define  T0_TIMER			 0  //工作在定时器模式
#define  T0_MODE_0		     0  //模式0,13位定时计数器
#define  T0_MODE_1           1  //模式1,16位定时计数器
#define  T0_MODE_2		     2  //模式2,8位数据自动装入
#define  T0_MODE_3		     3  //模式3,仅用于定时计数器0,2个8位定时计数器
//-------TIMER1(给TMOD赋值,用或运算)---------------------------
#define  T1_START_BY_TR_INT  0x80	   //定时器计数器的启动由int和tr共同控制,同为高启动定时计数器。
#define  T1_START_BY_TR		 0         //定时计数器的启动由tr控制
#define  T1_COUNTER			 0x40      //工作在计数器模式
#define  T1_TIMER			 0         //工作在定时器模式
#define  T1_MODE_0		     0         //模式0,13位定时计数器
#define  T1_MODE_1           0x10      //模式1,16位定时计数器
#define  T1_MODE_2		     0x20      //模式2,8位数据自动装入
#define  T1_MODE_3		     0x30      //模式3,仅用于定时计数器0,2个8位定时计数器

/*********************UART*******************************/

#define  UART_MODE_0		0		//MODE 0 ,同步移位模式   baud=fosc/12
#define  UART_MODE_1		0X40	//MODE 1 ,10BIT 异步收发
#define  UART_MODE_2        0X80	//MODE 2 ,11BIT			baud = fosc/32 or fosc/64
#define  UART_MODE_3		0XC0	//MODE 3 ,11BIT	
//--------------------------
#define  Setup_uart_Mode(x)	    SCON = (x)

#define  ENABLE_UART_RCV	REN = 1
#define  DISABLE_UART_RCV	REN = 0
#define  UART_RATE_MUL	    PCON |= 0X80 	//baudrate *2
#define  UART_RATE_NOR	    PCON &= 0X7F

⌨️ 快捷键说明

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