/*********************************** 瘟鸡工作室********************************
* 文件名 :main.c
* 描述 :pic18f45k80单片机入口程序文件
* 开发平台:pic18f45k80 IDE:mplab 编译器:HI-TECH PICC18
* 作者 :Sandy QQ:872180981
* 修改时间 :2015-8-1
*******************************************************************************/
#include<p18f45k80.h>
#include"ecan.h"
void delay(void);
void system_clock_init(void);
/*******************************************************************************
* 名称: main
* 功能:程序入口函数
* 形参: 无
* 返回: 无
* 说明: 无
******************************************************************************/
void main(void)
{
system_clock_init();
IPEN = 1; //使能中断优先级
INTCON = 0XC0; //使能高低优先级总中断
myInitECAN();
while(1)
{
delay();
delay();
myECAN_Transmit(); //发送数据
}
}
/*******************************************************************************
* 名称: delay
* 功能: 简单的延时函数
* 形参: 无
* 返回: 无
* 说明: 具体的延时时间没有测试。
******************************************************************************/
void delay(void)
{
unsigned char i = 0;
unsigned char j =0;
for(i=0 ; i<250;i++)
{
for(j=0 ; j<250;j++);
}
}
/*配置位地址定义*/
extern volatile unsigned char FOSC @300001;
extern volatile unsigned char WDTEN @300003;
/*******************************************************************************
* 名称: system_clock_init
* 功能: PIC单片机的时钟树初始化函数
* 形参: 无
* 返回: 无
* 说明: 外部调用
******************************************************************************/
void system_clock_init(void)
{
OSCTUNE=0x80; //OSC 16MHz 禁止PLL 内部31.25KHz
FOSC = 0x08; //选用内部振荡,RA6和RA7为普通端口
WDTEN = 0x1E; //这里配置看门狗可以在CODE里面关掉它
OSCCON = 0X76; //IRCF<3 0> 选择配置为16M模式。
asm("CLRWDT"); //喂狗
}
/*******************************************************************************
* 名称: HI_isr
* 功能: 高优级中断过程处理函数
* 形参: 无
* 返回: 无
* 说明: 系统调用
******************************************************************************/
void interrupt HI_isr(void)
{
// CAN接收数据
if(PIR5bits.RXB0IF==1)
{
PIR5bits.RXB0IF=0; // 清接收中断标志
RXB0EIDH;
RXB0EIDL;
RXB0SIDH;
RXB0SIDL;
RXB0DLC;
RXB0D0;
RXB0D1;
RXB0D2;
RXB0D3;
RXB0D4;
RXB0D5;
RXB0D6;
RXB0D7;
RXB0CONbits.RXFUL=0; // 清除标志,接收新报文
}
}