📄 init.h
字号:
void System_Init()
{
asm(" setc INTM");//禁止所有中断
asm(" setc SXM");//抑制符号位扩展
asm(" clrc OVM");//累加器中结果正常溢出
asm(" clrc CNF");//B0被配置为数据存储空间
*SCSR1 = 0x00FE; //Page 28
*WDCR = 0x0E8;//禁止看门狗
*IFR = 0xFFFF;//清楚全部中断标志,写1清0。
//端口初始化
*MCRA = 0x0FDF;
*MCRB = 0xFFFC;
*MCRC = 0x0000;
*PADATDIR = 0xFFFF;
*PCDATDIR = 0x0200;
*PFDATDIR = 0xF300;
*IMR = 0x3F;//使能全部6组中断
}
void XINT_Init()
{
//XINT初始化
*XINT1CR = 0x8003;//低优先级,下降沿中断
*XINT2CR = 0x8003;//低优先级,下降沿中断
}
void Timer_Init()
{
//Timer1-->PWM
*EVAIMRA |= 0x0200;//Page 135,使能下溢中断
//Timer2-->QEP
*EVAIMRB = *EVAIMRB | 0x000C;//使能上溢中断和下溢中断
*T2PER =0XFFFF; //T2周期寄存器
*T2CON =0X1830; //设置T2计数模式为定向增减计数模式 时钟源选择正交编码脉冲电路
*T2CNT =0X0000; //T2计数器
//Timer3-->自定义定时器
*EVBIMRA = *EVBIMRA | 0x0080;//周期中断使能
*EVBIFRA = *EVBIMRA & 0x0080;//清周期中断标志
*T3CON = 0x1300;//设置T3计数模式为连续增计数模式 预标定系数X/8
*T3PER = 0x3A98;//这里设置为5ms。计算方法: T3PER = 24*1000*(n毫秒)/(预标定系数8)
*T3CNT = 0x0000;
//Timer4用作AD采集的触发输入
*T4CON = 0x170C;
*T4PER = 0x75;
*T4CNT = 0x00;
*GPTCONB = 0x400;
*EVBIFRB = 0x0FFFF;
}
void Start_Timer(unsigned char which)
{
switch(which)
{
case 1:
*T1CON = *T1CON | 0x0040;//启动定时器1
break;
case 2:
*T2CON = *T2CON | 0x0040;//启动定时器2
break;
case 3:
*T3CON = *T3CON | 0x0040;//启动定时器3
break;
case 4:
*T4CON = *T4CON | 0x0040;//启动定时器4
break;
default:
;
}
}
void Set_LED(unsigned int led_data)
{
*PEDATDIR = 0xFF00 + (0x00FF & (~led_data));
}
UINT Get_Group_Key()
{
return (0x000F & ((*PBDATDIR & 0x00F0)>>4));
}
void SPDU_Define()
{
UINT i,j = 0;
for(i=0;i<SPDU_Amount;i++)
{
for(j=0;j<8;j++)
{
SPDU[i].Data[j] = 0;
SPDU[i].Ver_Data[j] = 0;
}
}
//------------------------------------------
SPDU[0].ID = 0xAA00;
//加速踏板
SPDU[0].Data_Def[0].Offset = 0;
SPDU[0].Data_Def[0].Precis = 0.0001;
//制动踏板
SPDU[0].Data_Def[1].Offset = 0;
SPDU[0].Data_Def[1].Precis = 0.0001;
//磁粉制动器制动强度
SPDU[0].Data_Def[2].Offset = 0;
SPDU[0].Data_Def[2].Precis = 0.0001;
SPDU[0].Data_Def[3].Offset = 0;
SPDU[0].Data_Def[3].Precis = 1;
SPDU[0].Data_Def[4].Offset = 0;
SPDU[0].Data_Def[4].Precis = 1;
SPDU[0].Data_Def[5].Offset = 0;
SPDU[0].Data_Def[5].Precis = 1;
SPDU[0].Data_Def[6].Offset = 0;
SPDU[0].Data_Def[6].Precis = 1;
SPDU[0].Data_Def[7].Offset = 0;
SPDU[0].Data_Def[7].Precis = 1;
//------------------------------------------
SPDU[1].ID = 0xAA01;
SPDU[1].Data_Def[0].Offset = 0;
SPDU[1].Data_Def[0].Precis = 1;
SPDU[1].Data_Def[1].Offset = 0;
SPDU[1].Data_Def[1].Precis = 1;
SPDU[1].Data_Def[2].Offset = 0;
SPDU[1].Data_Def[2].Precis = 1;
SPDU[1].Data_Def[3].Offset = 0;
SPDU[1].Data_Def[3].Precis = 1;
SPDU[1].Data_Def[4].Offset = 0;
SPDU[1].Data_Def[4].Precis = 1;
SPDU[1].Data_Def[5].Offset = 0;
SPDU[1].Data_Def[5].Precis = 1;
SPDU[1].Data_Def[6].Offset = 0;
SPDU[1].Data_Def[6].Precis = 1;
SPDU[1].Data_Def[7].Offset = 0;
SPDU[1].Data_Def[7].Precis = 1;
//------------------------------------------
SPDU[2].ID = 0x0002;
//------------------------------------------
SPDU[3].ID = 0x0003;
//------------------------------------------
SPDU[4].ID = 0x0004;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -