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

📄 mc33993.h

📁 客车车身控制模块 分为仪表部分 前控左 前控右 尾控和中控程序模块
💻 H
📖 第 1 页 / 共 2 页
字号:
//////
sys_data_type SP_status,SGH_status,SGL_status;
sys_data_type mc993_status_flag;
sys_data_type back_status_flag;
/////
unsigned char xjql_timer_count=0;         //小计清零有效计数>1.5s=110ms*14
unsigned char bgtz_timer_count=0;         //背光调整计数
unsigned char bgtz_1_timer;               //有效显示时间(2<->12)/13
unsigned char bgtz_cyc;                   //背光调节周期计数器=13
//周期为13个时基中断,2<->12
unsigned char sjtz_timer_count=0;					//按健时间长短计数(闭合时间)
unsigned char sjtz_timer_out=0;           //无按键时间>200*100ms=20s则退出


#define xjql_b_flag     mc993_status_flag.Bit.BIT6				//小计清零/1=按钮有效

#define light_first_on  back_status_flag.Bit.BIT0
#define bgtz_oth_flag   back_status_flag.Bit.BIT1 				//中间变化

#define modify_time_flag     mc993_status_flag.Bit.BIT5		//1=进入调时模式/0=退出调时
#define timer_button_change	 back_status_flag.Bit.BIT7		//1=时间调整按钮有变化
#define timer_bit_change	   back_status_flag.Bit.BIT6		//时间4位转换
#define timer_add_change	   back_status_flag.Bit.BIT5		//时间数值加一
//以上按钮变量
#define mc993_cs		PTD_PTD4

#define mc993_ready_flag    mc993_status_flag.Bit.BIT0 				 //mc993已读新状态准备好=1

#define warn_wakeup_flag   mc993_status_flag.Bit.BIT7          //紧急状态标志
unsigned char turn_timer_count=0;															 //转向灯闪烁时间控制
/////////////////////////////////////////////									 
//mc33993的SPI读写
void mc993_oper(unsigned char mc993comm,unsigned char mc993dat1,unsigned char mc993dat2){
	
	mc993_cs=0;
	SPDR=mc993comm;
	while((SPSCR&0x80)==0);
	SP_status.Byte=SPDR;
	
	SPDR=mc993dat1;
	while((SPSCR&0x80)==0);
	SGH_status.Byte=SPDR;
	
	SPDR=mc993dat2;
	while((SPSCR&0x80)==0);
	SGL_status.Byte=SPDR;
	mc993_cs=1;
	
	SP_status.Byte=SP_status.Byte<<2;
	SP_status.Bit.BIT0=SGH_status.Bit.BIT6;
	SP_status.Bit.BIT1=SGH_status.Bit.BIT7;
	SGH_status.Bit.BIT6=0;
	SGH_status.Bit.BIT7=0;
	//SP_status:	  SP7	  SP6	  SP5	  SP4   SP3   SP2   SP1   SP0
  //SGH_status:	NC	  NC	  SG13  SG12  SG11  SG10  SG9   SG8
	//SGL_status:	SG7	  SG6	  SG5	  SG4   SG3   SG2   SG1	  SG0	
	asm(nop);
	__RESET_WATCHDOG();
}

//mc33993初始化
void inti_mc33993(void){

  mc993_oper(0x7f,0x00,0x00);
  delay(20);//复位
  
  mc993_oper(0x01,0x00,0xff);
  //寄存器名:可设计开关寄存器
  //寄存器位:23  22  21  20  19  18  17  16  15  14  13  12  11  10  9  8  7  6  5  4  3  2  1  0
  //位定义:  0   0   0   0   0   0   0   1   X   X   X   X   X   X   X  X  sp7sp6sp5sp4sp3sp2sp1sp0
  //赋值:    0   0   0   0   0   0   0   1   0   0   0   0   0   0   0  0  1  1  1  1  1  1  1  1                                         
  //说明:使用该寄存器设置sp7-sp0端口开关属性(16-23为地址位,该地址为可编程开关寄存器地址。8-15为任意位,可加入0或1任意值不影响使用。
  //      0-7为状态数据,此时1为SPn8路模拟输入开关相应端口接电源,0为SPn8路模拟输入开关相应端口接地
  
  mc993_oper(0x02,0x00,0xff);
  mc993_oper(0x03,0x3f,0xff);
  //寄存器名:唤醒/中断寄存器
  //寄存器位:23  22  21  20  19  18  17  16  15  14  13  12  11  10  9  8  7  6  5  4  3  2  1  0                                      
  //位定义:  0   0   0   0   0   0   1   0   X   X   X   X   X   X   X  X  sp7sp6sp5sp4sp3sp2sp1sp0
  //赋值:    0   0   0   0   0   0   1   0   0   0   0   0   0   0   0  0  1  1  1  1  1  1  1  1  
  //说明:使用该寄存器设置sp7-sp0端口唤醒/中断(16-23为地址位,该地址为唤醒/中断寄存器地址。8-15为任意位,可加入0或1任意值不影响使用。
  //      0-7为状态数据,此时1为相应端口使能端口唤醒中断,0为相应端口屏蔽唤醒中断
  //位定义:  0   0   0   0   0   0   1   1   X   X   sg13sg12sg11sg10sg9sg8sg7sg6sg5sg4sg3sg2sg1sg0
  //赋值:    0   0   0   0   0   0   1   1   0   0   1   1   1   1   1  1  1  1  1  1  1  1  1  1     
  //说明:使用该寄存器设置sg13-sg0端口唤醒/中断(16-23为地址位,该地址为唤醒/中断寄存器地址。14-15为任意位,可加入0或1任意值不影响使用。
  //      0-13为状态数据,此时1为相应端口使能端口唤醒中断,0为相应端口屏蔽使唤醒中断

  mc993_oper(0x04,0x00,0xff);  
  mc993_oper(0x05,0x3f,0xff);
  //寄存器名:湿变电流寄存器
  //寄存器位:23  22  21  20  19  18  17  16  15  14  13  12  11  10  9  8  7  6  5  4  3  2  1  0
  //位定义:  0   0   0   0   0   1   0   0   X   X   X   X   X   X   X  X  sp7sp6sp5sp4sp3sp2sp1sp0 
  //赋值:    0   0   0   0   0   1   0   0   0   0   0   0   0   0   0  0  1  1  1  1  1  1  1  1  
  //说明:使用该寄存器设置sp7-sp0端口湿变电流(16-23为地址位,该地址为湿变电流寄存器地址。8-15为任意位,可加入0或1任意值不影响使用。
  //      0-7为状态数据,此时1为相应端口16mA 湿变电流,0为相应端口2.0 mA湿变电流,推荐使用16mA 湿变电流
  //位定义:  0   0   0   0   0   1   0   1   X   X   sg13sg12sg11sg10sg9sg8sg7sg6sg5sg4sg3sg2sg1sg0
  //赋值:    0   0   0   0   0   1   0   1   0   0   1   1   1   1   1  1  1  1  1  1  1  1  1  1                                         
  //说明:使用该寄存器设置sg13-sg0端口湿变电流(16-23为地址位,该地址为湿变电流寄存器地址。14-15为任意位,可加入0或1任意值不影响使用。
  //      0-13为状态数据,此时1为相应端口16mA 湿变电流,0为相应端口2.0 mA湿变电流,推荐使用16mA 湿变电流

  
  mc993_oper(0x07,0x00,0xff);   
  mc993_oper(0x08,0x3f,0xff);
  //寄存器名:湿变时间寄存器
  //寄存器位:23  22  21  20  19  18  17  16  15  14  13  12  11  10  9  8  7  6  5  4  3  2  1  0
  //位定义:  0   0   0   0   0   1   1   1   X   X   X   X   X   X   X   X sp7sp6sp5sp4sp3sp2sp1sp0
  //赋值:    0   0   0   0   0   1   1   1   0   0   0   0   0   0   0   0 1  1  1  1  1  1  1  1  
  //说明:使用该寄存器设置sp7-sp0端口湿变时间(16-23为地址位,该地址为湿变时间使能寄存器地址。8-15为任意位,可加入0或1任意值不影响使用。
  //      0-7为状态数据,此时1为相应端口允许湿变电流,0为相应端口屏蔽湿变电流
  //位定义:  0   0   0   0   1   0   0   0   X   X   sg13sg12sg11sg10sg9sg8sg7sg6sg5sg4sg3sg2sg1sg0
  //赋值:    0   0   0   0   1   0   0   0   0   0   1   1   1   1   1  1  1  1  1  1  1  1  1  1 
  //说明:使用该寄存器设置sg13-sg0端口湿变时间(16-23为地址位,该地址为湿变时间使能寄存器地址。14-15为任意位,可加入0或1任意值不影响使用。
  //      0-13为状态数据,此时1为相应端口允许湿变电流,0为相应端口屏蔽湿变电流
  
  mc993_oper(0x09,0x00,0xff);
  mc993_oper(0x0a,0x3f,0xff);
  //寄存器名:使能输出高阻抗寄存器
  //寄存器位:23  22  21  20  19  18  17  16  15  14  13  12  11  10  9  8  7  6  5  4  3  2  1  0
  //位定义:  0   0   0   0   1   0   0   1   X   X   X   X   X   X   X  X  sp7sp6sp5sp4sp3sp2sp1sp0
  //赋值:    0   0   0   0   1   0   0   1   0   0   0   0   0   0   0  0  0  0  0  0  0  0  0  0 
  //说明:使用该寄存器设置sp7-sp0端口输出靠阻抗(16-23为地址位,该地址为使能输出高阻抗寄存器地址。8-15为任意位,可加入0或1任意值不影响使用。
  //      0-7为状态数据,此时0为相应端口屏蔽输出高阻抗,1为相应端口使能输出高阻抗
  //位定义:  0   0   0   0   1   0   1   0   X   X   sg13sg12sg11sg10sg9sg8sg7sg6sg5sg4sg3sg2sg1sg0
  //赋值:    0   0   0   0   1   0   1   0   0   0   0   0   0   0   0  0  0  0  0  0  0  0  0  0 
  //说明:使用该寄存器设置sg13-sg0端口输出靠阻抗(16-23为地址位,该地址为使能输出高阻抗寄存器地址。14-15为任意位,可加入0或1任意值不影响使用。
  //      0-13为状态数据,此时0为相应端口屏蔽输出高阻抗,1为相应端口使能输出高阻抗  
  
  mc993_oper(0x06,0x00,0x40);
  //寄存器名:电流比较寄存器
  //寄存器位:23  22  21  20  19  18  17  16  15  14  13  12  11  10  9  8  7  6    5     4  3  2  1  0
  //位定义:  0   0   0   0   0   1   1   0   X   X   X   X   X   X   X  X  X  16mA 2.0mA 0  0  0  0  0 
  //赋值:    0   0   0   0   0   1   1   0   0   0   0   0   0   0   0  0  0  1    0     0  0  0  0  0
  //说明:使用该寄存器设置各端口电流比较(16-23为地址位,该地址为电流比较寄存器地址。7-15为任意位,可加入0或1任意值不影响使用。
  //      5-6为湿变电流允许值。0-4位决定使能某端口电流比较,下有详细说明
  //00000 无任何输出比较  //00001 SG0端口	   //00010 SG1端口
  //00011 SG2端口	   //00100 SG3端口    //00101 SG4端口
  //00110 SG5端口	   //00111 SG6端口		//01000 SG7端口
  //01001 SG8端口		 //01010 SG9端口    //01011 SG10端口
  //01100 SG11端口   //01101 SG12端口	  //01110 SG13端口
  //01111 SP0端口	   //10000 SP1端口    //10001 SP2端口
  //10010 SP3端口	   //10011 SP4端口	  //10100 SP5端口
  //10101 SP6端口		 //10110 SP7端口 
  
  ///变量初始化
  //turn_l_flag=0;
  //turn_r_flag=0;      //左右转无效
  //按钮状态和变量初始化
  xjql_b_flag=0;
  xjql_timer_count=0;
  //
  bgtz_timer_count=0; //背光初始化
  //bgtz_max_flag=1;
  //bgtz_min_flag=0;
  bgtz_oth_flag=0;
  //
  modify_time_flag=0; //非调时状态
  sjtz_timer_count=0;
  sjtz_timer_out=0;
  timer_button_change=0;
  
}

/////////////////////////
//MC33993时钟校准
void check_mc33993(void){

  mc993_oper(0x0b,0x00,0x00);
  //寄存器名:时钟校准寄存器
  //寄存器位:23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
  //位定义:  0  0  0  0  1  0  1  1  X  X  X  X  X  X  X X X X X X X X X X
  //赋值:    0  0  0  0  1  0  1  1  0  0  0  0  0  0  0 0 0 0 0 0 0 0 0 0 
  //说明:使用该寄存器使能时钟校准(16-23为地址位,该地址为时钟校准寄存器地址。
  //      0-15为任意位,可加入0或1任意值不影响使用。
  
}

/////////////////////////
//MC33993休眠
void sleep_mc33993(void){

  mc993_oper(0x0c,0x00,0x38);
  //寄存器名:使能休眠寄存器
  //寄存器位:23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
  //位定义:  0  0  0  0  1  1  0  0  X  X  X  X  X  X  X X X X 1 1 1 0 0 0 
  //赋值:    0  0  0  0  1  1  0  0  0  0  0  0  0  0  0 0 0 0 1 1 1 0 0 0   
  //说明:使用该寄存器使能芯片休眠(16-23为地址位,该地址为使能休眠寄存器地址。
  //      6-15为任意位,可加入0或1任意值不影响使用。0-5为中断唤醒时间设置,下有详细说明
  //位定义: 5  4  3   中断唤醒时间
  //         0  0  0   32 ms
  //         0  0  1   64 ms
  //         0  1  0   128 ms
  //         0  1  1   256 ms
  //         1  0  0   512 ms
  //         1  0  1   1.024 s
  //         1  1  0   2.048 s
  //         1  1  1   4.096 s
  
}

⌨️ 快捷键说明

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