⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 应用单片机MC68HC908GZ16实现CAN的发送和接收程序
💻 C
字号:
#include <hidef.h> /* for EnableInterrupts macro */
#include <MC68HC908GZ16.h> /* include peripheral declarations */

typedef unsigned char uchar;
typedef unsigned int uint;

uint MsCount=0,Ms100Count=0;
uchar Ga,Gear_Flag,Key,Key_Change_Flag,Err_Flag;

void Delay_ms(uint count)
{
  MsCount=0;
  while(MsCount<=count);
}

void Init_MCU(void)
{
  PCTL = 0x00;         //禁止锁相环
  COPCTL = 0x00;	   //写COPCTL,feeds the dog
  
//配置寄存器初始化 
  CONFIG1=0x09; //初始化配置COP,LVI
  CONFIG2=0x08;	//外部振荡器 8MHz

//TBM Init
  TBCR = 0x16; //8MHz,时基中断允许,8192分频,1.024ms 8M/8192

//MSCAN Init
  CMCR0 = 0x01;      //MSCAN08处于软复位状态
  CMCR1 = 0x00;      //MSCAN08使用CGMXCLK/2作为时钟源
    
  CIDAC = 0x00;      //单个32位验收滤波器,滤波器0匹配
    
  CIDAR0 = 0x67;     //0x0cf1e403(自身标识符)
  CIDAR1 = 0x9b;
  CIDAR2 = 0xc8;
  CIDAR3 = 0x06;

  CIDMR0 = 0xff;     //标识符屏蔽寄存器,不忽略,全部验收
  CIDMR1 = 0xff;
  CIDMR2 = 0xff;
  CIDMR3 = 0xff;     
    
  CBTR0 = 0x81;      //8MHz,SJW=3,3个Tq周期,BRP=2,波特率预定标器 
  CBTR1 = 0x14;      //8MHz,ONE SAMPLE,P_SEG=3,PHASE1=2,PHASE2=2  //0x25;  //TSEG1=6,TSEG2=3 
   
  CMCR0 = 0x00;      //Start the device 
  CRIER = 0x01;      //允许接收终端
  
  
//IO Init
  DDRB_DDRB3=1;      //设置CS_A为输出
  
  DDRE_DDRE0=1;      //设置DATA0为输出
  DDRD=0xff;         //设置DATA1-DATA7为输出
  
  DDRA_DDRA0=0;      //设置键盘为输入
  DDRA_DDRA1=0;
  DDRA_DDRA2=0;
  DDRA_DDRA3=0;
  
//KeyBoard Init
  INTKBSCR_MODEK=0;  //选择触发方式为下降沿
  INTKBSCR_IMASKK=1; //屏蔽键盘中断
  INTKBIER_KBIE=0x0f;  //PTA0、PTA1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -