www.pudn.com > CAN0CAN4C.rar > main.c


#include "printp.h" 
#define PORTB    (*((volatile unsigned char*)(0x0001)))    
#define DDRB     (*((volatile unsigned char*)(0x0003)))  
 
#define CAN0CTL0    (*((volatile unsigned char*)(0x0140)))   
#define CAN0CTL1    (*((volatile unsigned char*)(0x0141)))   
#define CAN0BTR0    (*((volatile unsigned char*)(0x0142)))    
#define CAN0BTR1    (*((volatile unsigned char*)(0x0143)))  
#define CAN0RFLG    (*((volatile unsigned char*)(0x0144)))    
#define CAN0RIER    (*((volatile unsigned char*)(0x0145)))  
#define CAN0TFLG    (*((volatile unsigned char*)(0x0146)))    
#define CAN0TIER    (*((volatile unsigned char*)(0x0147)))  
#define CAN0TARQ    (*((volatile unsigned char*)(0x0148)))    
#define CAN0TAAK    (*((volatile unsigned char*)(0x0149)))  
#define CAN0TBSEL   (*((volatile unsigned char*)(0x014A)))    
#define CAN0IDAC    (*((volatile unsigned char*)(0x014B)))  
#define CAN0RXERR   (*((volatile unsigned char*)(0x014E)))    
#define CAN0TXERR   (*((volatile unsigned char*)(0x014F)))  
 
#define CAN0IDAR0   (*((volatile unsigned char*)(0x0150)))    
#define CAN0IDAR1   (*((volatile unsigned char*)(0x0151)))  
#define CAN0IDAR2   (*((volatile unsigned char*)(0x0152)))    
#define CAN0IDAR3   (*((volatile unsigned char*)(0x0153)))  
#define CAN0IDMR0   (*((volatile unsigned char*)(0x0154)))    
#define CAN0IDMR1   (*((volatile unsigned char*)(0x0155)))  
#define CAN0IDMR2   (*((volatile unsigned char*)(0x0156)))    
#define CAN0IDMR3   (*((volatile unsigned char*)(0x0157)))  
#define CAN0IDAR4   (*((volatile unsigned char*)(0x0158)))    
#define CAN0IDAR5   (*((volatile unsigned char*)(0x0159)))  
#define CAN0IDAR6   (*((volatile unsigned char*)(0x015A)))    
#define CAN0IDAR7   (*((volatile unsigned char*)(0x015B)))  
#define CAN0IDMR4   (*((volatile unsigned char*)(0x015C)))    
#define CAN0IDMR5   (*((volatile unsigned char*)(0x015D)))  
#define CAN0IDMR6   (*((volatile unsigned char*)(0x015E)))    
#define CAN0IDMR7   (*((volatile unsigned char*)(0x015F)))  
 
#define CAN0RXFG0   (*((volatile unsigned char*)(0x0160)))    
#define CAN0RXFG1   (*((volatile unsigned char*)(0x0161)))  
#define CAN0RXFG2   (*((volatile unsigned char*)(0x0162)))    
#define CAN0RXFG3   (*((volatile unsigned char*)(0x0163))) 
#define CAN0RXFG4   (*((volatile unsigned char*)(0x0164)))    
#define CAN0RXFG5   (*((volatile unsigned char*)(0x0165))) 
#define CAN0RXFG6   (*((volatile unsigned char*)(0x0166)))    
#define CAN0RXFG7   (*((volatile unsigned char*)(0x0167))) 
#define CAN0RXFG8   (*((volatile unsigned char*)(0x0168)))    
#define CAN0RXFG9   (*((volatile unsigned char*)(0x0169))) 
#define CAN0RXFGA   (*((volatile unsigned char*)(0x016A)))    
#define CAN0RXFGB   (*((volatile unsigned char*)(0x016B))) 
#define CAN0RXFGC   (*((volatile unsigned char*)(0x016C)))    
#define CAN0RXFGD   (*((volatile unsigned char*)(0x016D))) 
#define CAN0RXFGE   (*((volatile unsigned char*)(0x016E)))    
#define CAN0RXFGF   (*((volatile unsigned char*)(0x016F))) 
 
#define CAN0TXFG0   (*((volatile unsigned char*)(0x0170)))    
#define CAN0TXFG1   (*((volatile unsigned char*)(0x0171)))  
#define CAN0TXFG2   (*((volatile unsigned char*)(0x0172)))    
#define CAN0TXFG3   (*((volatile unsigned char*)(0x0173))) 
#define CAN0TXFG4   (*((volatile unsigned char*)(0x0174)))    
#define CAN0TXFG5   (*((volatile unsigned char*)(0x0175))) 
#define CAN0TXFG6   (*((volatile unsigned char*)(0x0176)))    
#define CAN0TXFG7   (*((volatile unsigned char*)(0x0177))) 
#define CAN0TXFG8   (*((volatile unsigned char*)(0x0178)))    
#define CAN0TXFG9   (*((volatile unsigned char*)(0x0179))) 
#define CAN0TXFGA   (*((volatile unsigned char*)(0x017A)))    
#define CAN0TXFGB   (*((volatile unsigned char*)(0x017B))) 
#define CAN0TXFGC   (*((volatile unsigned char*)(0x017C)))    
#define CAN0TXFGD   (*((volatile unsigned char*)(0x017D))) 
#define CAN0TXFGE   (*((volatile unsigned char*)(0x017E)))    
#define CAN0TXFGF   (*((volatile unsigned char*)(0x017F))) 
 
#define CAN4CTL0    (*((volatile unsigned char*)(0x0280)))   
#define CAN4CTL1    (*((volatile unsigned char*)(0x0281)))   
#define CAN4BTR0    (*((volatile unsigned char*)(0x0282)))    
#define CAN4BTR1    (*((volatile unsigned char*)(0x0283)))  
#define CAN4RFLG    (*((volatile unsigned char*)(0x0284)))    
#define CAN4RIER    (*((volatile unsigned char*)(0x0285)))  
#define CAN4TFLG    (*((volatile unsigned char*)(0x0286)))    
#define CAN4TIER    (*((volatile unsigned char*)(0x0287)))  
#define CAN4TARQ    (*((volatile unsigned char*)(0x0288)))    
#define CAN4TAAK    (*((volatile unsigned char*)(0x0289)))  
#define CAN4TBSEL   (*((volatile unsigned char*)(0x028A)))    
#define CAN4IDAC    (*((volatile unsigned char*)(0x028B)))  
#define CAN4RXERR   (*((volatile unsigned char*)(0x028E)))    
#define CAN4TXERR   (*((volatile unsigned char*)(0x028F)))  
 
#define CAN4IDAR0   (*((volatile unsigned char*)(0x0290)))    
#define CAN4IDAR1   (*((volatile unsigned char*)(0x0291)))  
#define CAN4IDAR2   (*((volatile unsigned char*)(0x0292)))    
#define CAN4IDAR3   (*((volatile unsigned char*)(0x0293)))  
#define CAN4IDMR0   (*((volatile unsigned char*)(0x0294)))    
#define CAN4IDMR1   (*((volatile unsigned char*)(0x0295)))  
#define CAN4IDMR2   (*((volatile unsigned char*)(0x0296)))    
#define CAN4IDMR3   (*((volatile unsigned char*)(0x0297)))  
#define CAN4IDAR4   (*((volatile unsigned char*)(0x0298)))    
#define CAN4IDAR5   (*((volatile unsigned char*)(0x0299)))  
#define CAN4IDAR6   (*((volatile unsigned char*)(0x029A)))    
#define CAN4IDAR7   (*((volatile unsigned char*)(0x029B)))  
#define CAN4IDMR4   (*((volatile unsigned char*)(0x029C)))    
#define CAN4IDMR5   (*((volatile unsigned char*)(0x029D)))  
#define CAN4IDMR6   (*((volatile unsigned char*)(0x029E)))    
#define CAN4IDMR7   (*((volatile unsigned char*)(0x029F)))  
 
#define CAN4RXFG0   (*((volatile unsigned char*)(0x02A0)))    
#define CAN4RXFG1   (*((volatile unsigned char*)(0x02A1)))  
#define CAN4RXFG2   (*((volatile unsigned char*)(0x02A2)))    
#define CAN4RXFG3   (*((volatile unsigned char*)(0x02A3))) 
#define CAN4RXFG4   (*((volatile unsigned char*)(0x02A4)))    
#define CAN4RXFG5   (*((volatile unsigned char*)(0x02A5))) 
#define CAN4RXFG6   (*((volatile unsigned char*)(0x02A6)))    
#define CAN4RXFG7   (*((volatile unsigned char*)(0x02A7))) 
#define CAN4RXFG8   (*((volatile unsigned char*)(0x02A8)))    
#define CAN4RXFG9   (*((volatile unsigned char*)(0x02A9))) 
#define CAN4RXFGA   (*((volatile unsigned char*)(0x02AA)))    
#define CAN4RXFGB   (*((volatile unsigned char*)(0x02AB))) 
#define CAN4RXFGC   (*((volatile unsigned char*)(0x02AC)))    
#define CAN4RXFGD   (*((volatile unsigned char*)(0x02AD))) 
#define CAN4RXFGE   (*((volatile unsigned char*)(0x02AE)))    
#define CAN4RXFGF   (*((volatile unsigned char*)(0x02AF))) 
 
#define CAN4TXFG0   (*((volatile unsigned char*)(0x02B0)))    
#define CAN4TXFG1   (*((volatile unsigned char*)(0x02B1)))  
#define CAN4TXFG2   (*((volatile unsigned char*)(0x02B2)))    
#define CAN4TXFG3   (*((volatile unsigned char*)(0x02B3))) 
#define CAN4TXFG4   (*((volatile unsigned char*)(0x02B4)))    
#define CAN4TXFG5   (*((volatile unsigned char*)(0x02B5))) 
#define CAN4TXFG6   (*((volatile unsigned char*)(0x02B6)))    
#define CAN4TXFG7   (*((volatile unsigned char*)(0x02B7))) 
#define CAN4TXFG8   (*((volatile unsigned char*)(0x02B8)))    
#define CAN4TXFG9   (*((volatile unsigned char*)(0x02B9))) 
#define CAN4TXFGA   (*((volatile unsigned char*)(0x02BA)))    
#define CAN4TXFGB   (*((volatile unsigned char*)(0x02BB))) 
#define CAN4TXFGC   (*((volatile unsigned char*)(0x02BC)))    
#define CAN4TXFGD   (*((volatile unsigned char*)(0x02BD))) 
#define CAN4TXFGE   (*((volatile unsigned char*)(0x02BE)))    
#define CAN4TXFGF   (*((volatile unsigned char*)(0x02BF))) 
 
void MSCAN_INITIAL(void) 
{ 
CAN0CTL0|=0x01; 
CAN4CTL0|=0x01; 
while(!(CAN0CTL0&0x01)) 
{} 
while(!(CAN4CTL0&0x01)) 
{} 
CAN0IDAC=0x20; 
CAN4IDAC=0x20; 
CAN0IDAR0=0x01; 
CAN4IDAR0=0x01; 
CAN0IDAR1=0x00; 
CAN4IDAR1=0x00; 
CAN0IDAR2=0x04; 
CAN4IDAR2=0x04; 
CAN0IDAR3=0x08; 
CAN4IDAR3=0x08; 
CAN0IDAR4=0x41; 
CAN4IDAR4=0x41; 
CAN0IDAR5=0x41; 
CAN4IDAR5=0x41; 
CAN0IDAR6=0x41; 
CAN4IDAR6=0x41; 
CAN0IDAR7=0x41; 
CAN4IDAR7=0x41; 
 
CAN0IDMR0=0xff; 
CAN0IDMR1=0xff; 
CAN0IDMR2=0xff; 
CAN0IDMR3=0xff; 
CAN0IDMR4=0xff; 
CAN0IDMR5=0xff; 
CAN0IDMR6=0xff; 
CAN0IDMR7=0xff; 
CAN4IDMR0=0xff; 
CAN4IDMR1=0xff; 
CAN4IDMR2=0xff; 
CAN4IDMR3=0xff; 
CAN4IDMR4=0xff; 
CAN4IDMR5=0xff; 
CAN4IDMR6=0xff; 
CAN4IDMR7=0xff; 
 
CAN0BTR0=0x61; 
CAN4BTR0=0x61; 
CAN0BTR1=0x13; 
CAN4BTR1=0x13; 
CAN0CTL1=0x80; 
CAN4CTL1=0x80; 
CAN0CTL0&=0xfe; 
CAN4CTL0&=0xfe; 
while(CAN0CTL1&0x01) 
{} 
 
while(CAN4CTL1&0x01) 
{} 
 
CAN0CTL0=0x08; 
CAN4CTL0=0x08; 
CAN0RIER=0x0f; 
CAN4RIER=0x0f; 
 
CAN4TBSEL=CAN4TFLG; 
CAN4TXFG1=0x01; 
CAN4TXFG2=0x00; 
CAN4TXFG4=0x41; 
CAN4TXFG5=0x42; 
CAN4TXFG6=0x43; 
CAN4TXFG7=0x44; 
CAN4TXFG8=0x45; 
CAN4TXFG9=0x46; 
CAN4TXFGA=0x47; 
CAN4TXFGB=0x48; 
CAN4TXFGC=0x49; 
CAN4TFLG=CAN4TBSEL; 
 
} 
void main(void) { 
 
MSCAN_INITIAL(); 
  
while(!(CAN4TFLG&0x01)) 
{printp("\nCAN4 SEND\n");} 
 
} 
 
void CAN0_RECEIVE(void) 
{ 
asm 
{ 
sei 
} 
printp("CAN0 RECEIVE \n"); 
asm 
{ 
cli 
} 
asm 
{ 
rti 
} 
 
} 
void UnimplementedISR(void) 
{ 
   /* Unimplemented ISRs trap.*/ 
   asm stop; 
}