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 + -
显示快捷键?