河南省建设厅官方网站,电脑版百度,甘肃省铁路投资建设集团有限公司网站,最新外贸电商平台实验环境#xff1a;MC9S12G128开发板
基本功能#xff1a;控制开发板上的按键#xff0c;模拟车辆移动的上下左右四个方位#xff0c;通过can通信告诉上位机界面#xff0c;车辆轨迹的移动方位。
1. 1939报文发送的示例代码
MC9S12G128开发板1939协议发送can报文数据的…实验环境MC9S12G128开发板
基本功能控制开发板上的按键模拟车辆移动的上下左右四个方位通过can通信告诉上位机界面车辆轨迹的移动方位。
1. 1939报文发送的示例代码
MC9S12G128开发板1939协议发送can报文数据的示例代码如下
/*************************************************************/
/* 主函数 */
/*************************************************************/
void main(void) {DisableInterrupts;INIT_PLL();initialize_TIM();INIT_CAN();init_key();LEDCPU_dir1;LEDCPU0;EnableInterrupts;//填写报文内容msg_send.id ID; for(k0;kdata_len_TX;k){msg_send.data[k] senddata[k];}msg_send.len data_len_TX;msg_send.RTR FALSE;msg_send.prty 0;for(;;) {delay1ms(500);if(!MSCANSendMsg(msg_send)) //发送过程出现错误for(;;);elseLEDCPU~LEDCPU;}
} 2. 按键查询的示例代码
MC9S12G128开发板的按键查询的示例代码如下
/*************************************************************/
/* 主函数 */
/*************************************************************/
void main(void) {DisableInterrupts;init_led_key(); EnableInterrupts;for(;;) {delay();//datadata1; //左移一位//if(data0)// data0x01;if(KEY10KEY1_last1) //按键F1按下mode1;if(KEY20KEY2_last1) //按键F2按下mode2; if(KEY30KEY3_last1) //按键F3按下mode3; if(KEY40KEY4_last1) //按键F4按下mode4; KEY1_lastKEY1; //保存F1的状态KEY2_lastKEY2; //保存F2的状态KEY3_lastKEY3;KEY4_lastKEY4;if(mode1)LED ~(0x01);else if(mode2)LED 0xFB;else if(mode3)LED 0xEF;else if(mode4)LED 0xBF;elseLED 0xff; }
}3. 按键发送报文的代码
参考1939报文发送示例代码按键查询示例代码指定按键发送相应报文给上位机从而显示车辆目前的方位。
/*************************************************************/
/* 主函数 */
/*************************************************************/
void main(void) {DisableInterrupts;INIT_PLL();initialize_TIM();INIT_CAN();init_led_key();LEDCPU_dir1;LEDCPU0;EnableInterrupts;//填写报文内容msg_send.id ID; for(k0;kdata_len_TX;k){msg_send.data[k] senddata[k];}msg_send.len data_len_TX;msg_send.RTR FALSE;msg_send.prty 0;for(;;) {if(KEY10KEY1_last1) //按键F1按下mode1;if(KEY20KEY2_last1) //按键F2按下mode2; if(KEY30KEY3_last1) //按键F3按下mode3; if(KEY40KEY4_last1) //按键F4按下mode4; KEY1_lastKEY1; //保存F1的状态KEY2_lastKEY2; //保存F2的状态KEY3_lastKEY3;KEY4_lastKEY4;if(mode1){LED ~(0x01);msg_send.data[0] 0x01; msg_send.data[1] 0x00; msg_send.data[2] 0x00; msg_send.data[3] 0x00; }else if(mode2){LED 0xFB;msg_send.data[1] 0x01;msg_send.data[0] 0x00; msg_send.data[2] 0x00; msg_send.data[3] 0x00;}else if(mode3){LED 0xEF;msg_send.data[2] 0x01;msg_send.data[0] 0x00; msg_send.data[1] 0x00; msg_send.data[3] 0x00; }else if(mode4){LED 0xBF;msg_send.data[3] 0x01;msg_send.data[0] 0x00; msg_send.data[1] 0x00; msg_send.data[2] 0x00; }elseLED 0xff;delay1ms(200);if(!MSCANSendMsg(msg_send)) //发送过程出现错误for(;;);elseLEDCPU~LEDCPU;}
}
4. 界面演示
开发板上按动 KEY1报文 01 00 00 00 FF FF FF FF 指示小车往上移动 开发板上按动 KEY2报文 00 01 00 00 FF FF FF FF 指示小车往下移动 开发板上按动 KEY3报文 00 00 01 00 FF FF FF FF 指示小车往左移动 开发板上按动 KEY4报文 00 00 00 01 FF FF FF FF 指示小车往右移动 小车向上移动 小车向左移动