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

📄 main._c

📁 AT90CAN128的CAN通信源码测试成功
💻 _C
字号:
/******************************************************************** 
*  函数库说明:主函数                                               * 
*  版本说明:  1.0 Bate                                             * 
*  作者:      andylee                                              * 
*  日期:      2006年10月                                            * 
*  平台:      mega16  16M                                          * 
*  说明:      CAN数据采集卡的系统监控函数                          * 
********************************************************************/ 

#include <iom16v.h>        
#include <macros.h>
#include "libdef.h"
#include "delay.c"
#include "rprint.c"
#include "can.c"
#include "uart.c"
#include "isr.c"

//#define DEBUG_MAIN

/**********
* 常量定义*  
**********/
unsigned int temp=0;
unsigned int value;

void main (void)
{
  unsigned char main_temp_all;        //数据暂变量
  unsigned char main_temp_uart;
  CLI();
 
  //CAN相关初始化
  sja_port_init();
  sja_init();

 //can_cmd_init();  
       
  isr_init();                         //外部中断0初始化
  uartInit();                         //串口初始化
  rprintfInit(uartSendByte);          //发送函数初始化
  
  watchdog_init();
  
  SEI();
  buffer_init();                     //can发送的缓冲区初始化
#ifdef DEBUG_MAIN	 
uartSendByte(0xaa);
uartSendByte(0xaa);
#endif
  DDRA|=(1<<DDA0)|(1<<DDA1);
  
  PORTA&=~(1<<PA0);
  PORTA&=~(1<<PA1);
  WDR();
  delay_nms(1000);
  WDR();
  PORTA|=(1<<PA0);
  PORTA|=(1<<PA1);
  while(1)
    { 
#ifdef DEBUG_MAIN	 
uartSendByte(0XAA);
uartSendByte(0XBB);
#endif
         /*
		 delay_nms(500);      //为什么加个延时在这才正常运行?
		 TransmitMessage[6]=0xb0;
		 uart_b0_flag=0;
		 sja_tx(TransmitMessage);      //CAN节点数据发送 
		 PORTA&=~(1<<PA0);
		 */
		 WDR();
		 delay_nms(1000) 
		 WDR();
		 delay_nms(1000); 
		 WDR();
		 if(uart_b0_flag==1)  //降压模拟
		 {
		    TransmitMessage[6]=0xb0;
			uart_b0_flag=0;
			sja_tx(TransmitMessage);      //CAN节点数据发送 
			PORTA&=~(1<<PA0);
		 }
		 
		 if(uart_b8_flag==1)  //停止充电模拟
		 {
		    TransmitMessage[6]=0xb8;
			uart_b8_flag=0;
			sja_tx(TransmitMessage);      //CAN节点数据发送 
			PORTA&=~(1<<PA1);
		 }
		 
		 if(uart_normal_flag==1)         //正常工作状态
		 {
		    TransmitMessage[6]=0x00;
			uart_normal_flag=0;
			sja_tx(TransmitMessage);      //CAN节点数据发送 
		 }
		 
		 if(uart_alarm_flag==1)          //报警状态
		 {
		    TransmitMessage[6]=0xa0;
			uart_alarm_flag=0;
			sja_tx(TransmitMessage);      //CAN节点数据发送 
		 }

		 WDR();
		 delay_nms(100);
		 WDR();
		 if(can_receive_flag==1)        //有一次有效中断
		 {
		  	can_receive_flag=0;        //清标志
			
			//给串口发数据,把收到的数据送向计算机,计算机去处理
			for(main_temp_all=0;main_temp_all<=12;main_temp_all++)
			{
			    main_temp_uart=RxBuffer[main_temp_all];
			 	uartSendByte(main_temp_uart);
			}
			delay_nms(1000);
		 }

		 WDR();
		 delay_nms(1000);   //方便看数据
		 WDR();
		 PORTA|=(1<<PA0);
  		 PORTA|=(1<<PA1);
    }
}

⌨️ 快捷键说明

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