?? can.c
字號:
#include "f2407_c.h" //引用頭部文件
int CAN_FLAG; //定義標志寄存器
void system_init(); //聲明在程序中需要用到是函數
void CANMBX_ISR();
void CAN_INIT();
void inline disable()
{
asm(" setc INTM");
}
void inline enable()
{
asm(" clrc INTM");
}
//(1)主程序
main()
{
system_init(); //系統初始化子程序
CAN_FLAG=0x00; //清CAN用戶標志,CAN_FLAG=0表示收到數據
CAN_INIT(); //CAN初始化子程序
enable();
for(;;)
{
*TCR=0x20; //MBX3請求發送
while(*TCR&0x2000==0) //等待發送應答
continue;
*TCR=0x1000; //清TA3和MIF3標志位
while(CAN_FLAG==0)
continue; //等待接收數據
CAN_FLAG=0x0000; //清接收到標志
*MDER=0X0000; //郵箱不使能
*MCR=0X0140; //CDR=1,數據改變請求
*MBX3A=*MBX2A+1; //郵箱2中數據加1用來更新3中的數據
*MBX3B=*MBX2B+1;
*MBX3C=*MBX2C+1;
*MBX3D=*MBX2D+1;
*MCR=0X04C0; //DBO=1,CDR=0,AB0=1,STM=1
*MDER=0X04C; //ME2=ME3=1,MBX2接收,MBX3發送
}
}
//(2) 系統初始化子程序
void system_init()
{
asm(" setc SXM"); // 抑制符號位擴展
asm(" clrc OVM"); // 累加器中結果正常溢出
asm(" clrc CNF"); // B0被配置為數據存儲空間
asm(" setc INTM"); // 禁止所有中斷
*SCSR1=0x81FE; // CLKIN=6M,CLKOUT=4*CLKIN=24M
*WDCR=0x0E8; // 不使能看門狗,因為SCSR2中的WDOVERRIDE
// 即WD復位后的缺省值
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -