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

📄 main.c

📁 MCU:ATMEGA8515 Frequence: 16M 描述:利用已有CAN TEST V1.0电路板进行调试, 可靠性测试已通过
💻 C
字号:
/*****************************************
                测试版本
MCU:ATMEGA8515
Frequence: 16M
描述:利用已有CAN TEST V1.0电路板进行调试,
可靠性测试已通过,并发现8515外部中断不稳定
的原因是没有在INT0脚加上拉电阻,加上后已能
够稳定地运行
调试过程中发现SJA1000的首地址设置有误,改过
后,当CAN发送数据时,程序能进入中断了,但发现
中断是由出错报警中断引起的,估计与波特率设置
有关。
通过修改CDR的参数,以及更换16M晶振,现在已能
正常地收发送数据了!!!!!!!!!!!!!
日期:2006.3.11
*****************************************/
#include "iom8515v.h"
#include "macros.h"
#include "MAIN.h"
#include "Timer.h"
#include "IO.h"
#include "CAN.h"
#pragma interrupt_handler Inter0:2
void Inter0(void)
{
   uchar reg;
   uchar CompCount;
   uchar can_status;
   CLI();						 //关CPU中断
   RevFlag=1;
   reg=read_sja(4);				 //保存SJA1000的中断允许状态
   write_sja(4,0x00);			 //重设中断允许状态为不允许任何中断
   can_status=Receive();		 //接收消息
   if(can_status == 0x01)
   {
	  for(CompCount=5;CompCount<13;CompCount++)				//检查接收到的数据是否正确
	  {
	     if(RxBuffer[CompCount] != TransBuffer[CompCount])
         {
		    RevFlag &= 0x00;	   						  	//发现有不一致时,则清0标志位 
	     } 
      } 
   }
   else
   Init_CAN();		 	 	 	 //如果不是正确接收,则重新初始化
   write_sja(4,reg);			 //重新写回中断允许模式
   SEI();
}     
//////////////////////////////////////////////////////////////////////////

void Status_lighting(uchar status)
{
   if(status == 1)
   PORTD |= BIT(5);
   else if(status == 0)
   PORTD &=~ BIT(5);
}

void delay_1ms( void ) 
{
 uint k ; 
 for ( k = 0 ; k < ( 8*142-2 ) ; k++ ) // 定时1ms公式:xtal*142-2
 	 ;  
}
void Delay (uint n)
{
 uint p ; 
 for( p = 0 ; p < n ;p++ ) 
 	  {
	   delay_1ms() ;
	  }
}

void main(void)
{  
   uchar lp_count;
   CLI();					 //关中断
   IOIni();					 //IO口初始化
   Timer0Ini();
   Delay(1000);
   Init_CAN();			     //CAN初始化	
   SEI();
   while(1)
   {
	  Key3=KeyInput(3);
	  if(KeyStatus == 1)	 //按键按下
	  {
	     KeyStatus=0;
		 CanTransmit(); 	 //发送数据
	  }
	 
	  if(RevFlag == 1)		 //如果正确接收到数据
	  {
	     RevFlag=0;
		 PORTD ^= BIT(5); 
	  }
   }
}

⌨️ 快捷键说明

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