打印
[CAN-bus/DeviceNet]

18f458中的can应用问题请教

[复制链接]
1772|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
魔影|  楼主 | 2007-3-27 13:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CAN, AD, tc, pi, NTC
#include "pic18.h"
char CAN_Adress_H,CAN_Adress_L;        //CAN标识符高低字节
char CAN_Adress_EH,CAN_Adress_EL;    //CAN扩展标识符高低字节
int     CAN_FLAG;                        //=1接收到CAN数据,=0未接收到数据
unsigned    int    CAN_Delay_count=0;    //间隔一定时间发送CAN数据


    void initial()
{
    INTCON=0x00;
    ADCON1=0x07;
    PIE1=0;
    PIE2=0;
    PIE3=0;
    
}

    void initcan()
{
    TRISB=(TRISB|0x08)&0xFB;
    CANCON=0x80;
    while((CANSTAT&0x80)==0)
{
    ;

}
    BRGCON1=0x01;
    BRGCON2=0x90;
    BRGCON3=0x42;

    TXB0CON=0x03;
    TXB0SIDL=CAN_Adress_L&0xE0;
    TXB0SIDH=CAN_Adress_H;
    TXB0DLC=0x08;
    TXB0D0=0x00;
    TXB0D1=0x01;
    TXB0D2=0x02;
    TXB0D3=0x03;
    TXB0D4=0x04;
    TXB0D5=0x05;
    TXB0D6=0x06;
    TXB0D7=0x07;
    
    RXB0SIDL=CAN_Adress_L&0xE0;
    RXB0SIDH=CAN_Adress_H;
    RXB0CON=0x20;
    RXB0DLC=0x08;
    RXB0D0=0x02;
    RXB0D1=0x03;
    RXB0D2=0x04;
    RXB0D3=0x05;
    RXB0D4=0x00;
    RXB0D5=0x00;
    RXB0D6=0x00;
    RXB0D7=0x00;
    
    RXF0SIDH=CAN_Adress_H;
    RXF0SIDL=CAN_Adress_L;
    RXM0SIDH=0xFF;
    RXM0SIDL=0xE0;

    CANCON=0x40;
    
    while((CANSTAT&0x40)!=0)
{
    ;

}

    PIR3=0x00;
    PIE3=PIE3|0x01;
    IPR3=IPR3|0x01;
}

    void CAN_deal()
{
    CAN_FLAG=0;
    TXB0CON=TXB0CON&0xF7;
    TXB0D0=RXB0D0+1;
    TXB0D1=RXB0D1+1;
    TXB0D2=RXB0D2+1;
    TXB0D3=RXB0D3+1;
    TXB0D4=RXB0D4+1;
    TXB0D5=RXB0D5+1;
    TXB0D6=RXB0D6+1;
    TXB0D7=RXB0D7+1;
}

    void interrupt HI_ISR()
{
     if(RXB0IF==1)
    {
        CAN_FLAG=1;
        RXB0IF=0;
        RXB0FUL=0;
    }
}

    main ()

    initial();
    CAN_Adress_H=0x33;
    CAN_Adress_L=0xEE;
    initcan();
    IPEN=1;
    INTCON=INTCON|0xC0;
    while(1)
    {
        if(CAN_FLAG==1)CAN_deal();
        else if(CAN_Delay_count>0x2FE)
        {
            TXB0CON=TXB0CON|0x08;
            CAN_Delay_count=0;
            break;
        }
    else CAN_Delay_count++;
    
    }
}
这是一个自检方式下的例子,为什么运行的不对啊,请高手指点,谢谢

相关下载

相关帖子

沙发
whyjj| | 2009-1-29 19:10 | 只看该作者

有设置波特率吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝