842others.h

来自「语音芯片ISD4004的驱动程序。。。希望对大家有用」· C头文件 代码 · 共 202 行

H
202
字号
//ADUC842寄存器参数
/*PLLCON寄存器设置参数*/
#define fcore16M78() PLLCON=PLLCON&0xf8;      //设置内核频率为16.78M

#define fcore8M39()  PLLCON=PLLCON|0x01;PLLCON=PLLCON&0xf9;      //设置内核频率为8.39M

#define fcore4M19()  PLLCON=PLLCON|0x02;PLLCON=PLLCON&0xfa;      //设置内核频率为4.19M

#define fcore2M09()  PLLCON=PLLCON|0x03;PLLCON=PLLCON&0xfb;      //设置内核频率为2.09M

#define fcore1M05()  PLLCON=PLLCON|0x04;PLLCON=PLLCON&0xfc;      //设置内核频率为1.05M

#define fcore524K()  PLLCON=PLLCON|0x05;PLLCON=PLLCON&0xfd;      //设置内核频率为524.288K

#define fcore261K()  PLLCON=PLLCON|0x06;PLLCON=PLLCON&0xfe;      //设置内核频率为261.44K

#define fcore131K()  PLLCON=PLLCON|0x07;PLLCON=PLLCON&0xff;      //设置内核频率为130.72K

#define enable_fint() PLLCON=PLLCON|0x08;	   //以最快的内核频率响应中断
#define disable_fint() PLLCON=PLLCON&0xf7;	   //不允许以最快的内核频率响应中断
/************TMOD参数******************************/
#define T1_GateOn   0x80
#define T1_GateOff	0x00

#define T1_CMode	0x40
#define T1_TMode	0x00

#define T1_8breload	0x20
#define	T1_16bit	0x10

#define T0_GateOn   0x08
#define T0_GateOff	0x00

#define T0_CMode	0x04
#define T0_TMode	0x00

#define T0_8breload	0x02
#define	T0_16bit	0x01

/***********T2MOD参数***************/
#define out_enable     0x02 //允许定时时钟从P1.0输出
#define out_disbale    0x00 

#define DC_enable      0x01	//若P1.1==1则减计数,P1.1==0则加计数
#define DC_disblae 	   0x00 //与T0,T1一样采用加计数方式
/***********T2CON参数**************/
#define RCLK_enable	   0x20
#define RCLK_disable   0x00

#define TCLK_enable	   0x10
#define TCLK_disable   0x00

#define EXEN2_enable   0x08  //
#define EXEN2_disable  0x00

#define C_Mode 0x02
#define T_Mode 0x00

#define catch   0x01
#define reload	0x00

/*以下是使用串口时用到的两个寄存器*/
/*********SCON参数*************************/
#define Mode0 0x00  //移位寄存器方式,波特率固定为内核时钟的1/12 
#define Mode1 0x40	//波特率可变,10位
#define Mode2 0x80	//波特率固定,11位
#define Mode3 0xc0	//波特率可变,11位

#define SM_add 	   0x20  //多机通信的地址帧
#define SM_data	   0x00  //多机通信的数据帧

#define R_enable   0x10  //允许接收
#define R_disable  0x00

/********PCON参数*******************************/
#define baud_double 0x80  //波特率加倍
#define baud        0x00

/*以下是使用TIC时用到的两个寄存器*/
/********TIC时间间隔计数器TIMECON参数*********************************************/
#define TF24hours   0x40  //计数范围为0-23小时
#define	TF255hours	0x00  //计数范围为0-255小时

#define	HTHSEC 	    0x00  //基准计数时间单位为1/128秒
#define	SEC			0x10  //基准计数时间单位为 秒
#define	MIN			0x20  //基准计数时间单位为 分
#define	HOURS		0x30  //基准计数时间单位为 时

#define	TIEN        0x02  //时间间隔使能
#define TIdisable   0x00  

#define TCEN	    0x01  //
#define	TCdisable	0x00  //
/*******允许TIC中断的IEIP2寄存器的参数(未完成)****************************************************/
#define	PTI         0x40  //TIC中断为高优先级 
#define	NTI			0x00  //         低

#define	ETI 		0x04  //允许TIC中断
#define	DTI			0x00  //禁止

/*以下是使用DAC时用到的寄存器*/
/********DACCON寄存器参数*******************************************************/
#define DACMode8bit  0x80  //
#define	DACMode12bit 0x00  //注意:12位模式,一定先写DACH,再写DACL

#define	D1RaVdd	     0x40  //DAC1的输出范围
#define	D1RaVref	 0x00  //

#define D0RaVdd	     0x20  //DAC0输出范围为0~AVDD
#define	D0RaVref	 0x00  //DAC0输出范围为0~2.5V(Vref)

#define D1SET        0x10  //DAC1输出正常 
#define	D1CLR	 	 0x00  //DAC1输出为0

#define D0SET        0x08  //DAC0输出正常 
#define	D0CLR	 	 0x00  //DAC0输出为0
						  
/*DAC同步位设置未用过,不明白*/
#define SYNC         0x04   //

#define D1On         0x02	//DA1上电,工作
#define D1Off        0x00   //DA1掉电,不工作.

#define D0On         0x01	//DA0上电,工作
#define	D0Off		 0x00   //DA0掉电,不工作
/*********************************************************************************/
/*以下是ADC用到的寄存器*/
//ADCCON1参数
#define ADOn         0x80   //上电工作       
#define ADOff		 0x00

#define ext_Vref     0x40   //外部参数电压
#define int_Vref	 0x00

#define	CLKdiv32	 0x00   //把系统时钟32分频得到AD时钟,AD时钟必须低于8.38M 高于400K
#define CLKdiv8		 0x20	//8分频
#define	CLKdiv4		 0x10
#define	CLKdiv2		 0x30
						 
#define AQ4clk       0x0c   //模拟输入口得到模拟信号用的时间,最好大于3clks
#define	AQ3clk		 0x08
#define	AQ2clk		 0x04
#define	AQ1clk		 0x00

#define T2C			 0x02   //用T2触发AD转换
#define EXC			 0x01	//允许P3.5触发AD转换

//ADCCON2  可位寻址
#define	DMA_mode     0x40  //
#define C_mode       0x20  //连续转换模式
#define S_mode		 0x10  //单次转换模式

#define chan0		 0x00  //通道
#define chan1		 0x01
#define chan2		 0x02
#define chan3		 0x03
#define chan4		 0x04
#define chan5		 0x05
#define chan6		 0x06
#define chan7		 0x07

//ADCCON3多用于校准,未用



//以下是使用PWM时,用到的寄存器  PWM0,1分别从P2.5  P2.6输出 
/*PWMCON寄存器参数*/
#define PMode0	    0x00  //禁止PWM
#define PMode1		0x10  //可编程脉宽和周期的16位PWM输出#define PMode2		0x20  //两对8位PWM,两个PWM的周期一样,都由PWM1L设置
#define PMode3		0x30  //两对16位PWM,两个PWM是固定分辨率的,都是16位
#define PMode4		0x40  //两通道不归零16位PWM
#define PMode5		0x50  //两对8位PWM,两个PWM的周期,分辨率可独立设置
#define PMode6		0x60  //两通道归零16位PWM
#define PMode7    	0x70  //PWM计数器复位无输出

#define PWMCLK_div0  0x00  //PWM时钟不分频
#define PWMCLK_div4  0x40  //PWM时钟4 分频  
#define PWMCLK_div16 0x80  //PWM时钟16分频
#define PWMCLK_div64 0xb0  //PWM时钟64分频

#define PWMCLK0     0x00  // Fxtal/15(2.184K)
#define PWMCLK1		0x01  // Fxtal (32.678K)
#define PWMCLK2		0x02  // P2.7脚输入外部时钟
#define PWMCLK3		0x03  // Fvco (12.58M)
/*以下是写FLASH寄存器ECON参数*/
#define Read_Page   0x01   //从FLASH里读4字节数据,读到DATA1-4
//读一页需要25个时钟周期
#define Write_Page  0x02   //把DATA1-4数据写入FLASH,注意:写之前要先擦除(用Erase_Page)  
//写一页需要延时380US                        
#define Verify      0x04   //改变FLASH里面的数据
#define Erase_Page  0x05   //擦除一页的数据
//注意需要2ms延时,   
#define Erase_all   0x06   //擦除全部FLASH
//注意全部擦除,需要2ms延时,
#define Read_Byte   0x81   //读取一个字节到DATA1;
//注意,需要延时10个时钟周期
#define Write_Byte  0x82   //写入一个字节到指定页的DATA1;
//注意,需要延时200 US
#define Exuload     0x0f   //THE ECON INSTRUCTION
#define Uload       0xf0   //ENTERS LOAD MODE

⌨️ 快捷键说明

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