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

📄 main.c

📁 CAN总线开发板源代码与原理图
💻 C
字号:

/*************************************************************************************************
;																								 *
;    实验平台: YH51-III CAN、USB总线学习开发板                                           		 *                  
;    MCU 类型: STC10F08  FOSC:11.0592MHZ 														 *
;    实验内容: CAN <---> 232通讯实验                                                             *
;    实验说明: 把CanMini和YH51-III学习板连接好并且把Canmini和YH51-III的串口和USB都连接到电脑上打 *
;    开两个YuhangDebugTools调试软件,连接CanMini的软件选择CAN-232调试界面波特率设置为115200,另一 *
;    个选择CAN-USB调试界面,连接YH51-III学习板的波特率设置为9600,上电后LED1间隔闪烁表示单片机正 *
;    常运行,LED2点亮表示CAN芯片自检通过。有什么问题请到我们的技术论坛上讨论www.eldiy.net/bbs	 *
;            						 											 				 *
;    项 目 名: can-232                                                         					 * 
;    程序版本: V2.00                                                         					 *   
;    创 建 者: 宇航工作室                                                      					 *
;    创建日期: 2010-04-22                                                        				 *
;																		 						 *
;    网站: http://www.eldiy.net  																 *
;    版权: Copyright(c)宇航工作室      											 				 *
;    声明: 此程序仅用于学习与参考,引用请注明版权和作者信息!					 				 *
;																	       						 *
;*************************************************************************************************/

#include "main.h"

/********************************************************************************************
** 函数名称: void Sysinit(void)
** 功能描述: 单片机初始化
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
*********************************************************************************************/
void Sysinit(void)
{
	bCAN_RecSuccFlag = 0;
	P4SW = 0x50;  //P4.4、P4.6做I/O口
    TMOD = 0x21; //定时器1定时方式2
	TH0 = 0xdc;
	TL0 = 0x00;  //11.0592M  10MS
	ET0 = 1;
	TR0 = 1;

	SCON = 0x50; //串口方式1,允许接收 
	TH1 = 0xfd;	   //设置波特率为9600
	TL1 = 0xfd;
	//TR1 = 1;
	//ES = 1;
	
	EX1 = 1;  //开放can中断
	EA = 1;
}


/********************************************************************************************
** 函数名称: void T0_INT() interrupt 5
** 功能描述: T2中断服务程序
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
*********************************************************************************************/
void T0_INT() interrupt 1
{
    TH0 = 0xdc;
	TL0 = 0x00;  //11.0592M  10MS
	if(SystemTime > 0)SystemTime--;
}

void main(void)
{   
	Sysinit();  
	CanInit();
    if(CanTest()) LED2 = 0;  //CAN自检成功,点亮LED2
	if(CH372_Init()) LED3 = 0; //USB成功,点亮LED3
    while(1)
    {
		if(!CH372_INT) 
		{
			CH372Interrupt(); //处理USB伪中断
		}
		if(USB_RecFlag)  
		{				//收到USB总线发来的数据,转发到CAN总线上
			EX0 = 0;
			if(CanTransmitMessage(USB_Buff))
			{
				USB_RecFlag = 0; //发送成功,清楚USB接收标志
			}
			EX0 = 1;
		}
		if(bCAN_RecSuccFlag)
		{		//收到CAN总线发来的数据
			EX1 = 0;
			bCAN_RecSuccFlag = 0;
			USB_Send_Data(CAN_ReBuf,cCanRecLen);
			EX1 = 1;
		} 

        if(SystemTime==0)  //系统指示灯
        {
            LED1 = !LED1;
            SystemTime = 50;  //闪烁周期为1s
        }
    }                          
}

⌨️ 快捷键说明

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