内容发布更新时间 : 2024/11/19 15:29:10星期一 下面是文章的全部内容请认真阅读。
//=================================================================================== // //
工程名称: 功能描述:
汽车041项目目标板3-6程序 CAN通信,继电器控制,AD采集
// IDE环境: ICCAVR // Init2515: 2515初始化程序
//===================================================================================
#include \#include \#include \#include \#include \#include \#include \#include \#include \#include \
#pragma interrupt_handler Extint0:2 #pragma interrupt_handler timer1_isr:9 #define uint unsigned int #define uchar unsigned char
/******************外部中断常量******************/ #define GLOBAL 7
//全局中断位宏定义
//标准输入输出头文件
#define EXTINT0 6 //外部中断0位宏定义
#define H_SRCLK PORTD|=(1<<6) //上升沿移位
#define L_SRCLK PORTD&=~(1<<6) //下降沿不移位 #define H_SER PORTD|=(1<<7) //595串行数据输 #define L_SER PORTD&=~(1<<7) //595串行数据输 #define H_RCLK PORTD|=(1<<5) //595数据锁存放开 #define L_RCLK PORTD&=~(1<<5) //595数据锁存
uchar Flag=0,Flag1=0,pp=0; uchar Receive_Data=0,Start_Data=0; uchar CAN_TX_Buf[8],CAN_RX_Buf[8];
//************************************************************* //* 函数说明:MCU端口初始化 //* 输入: 无 //* 输出: 无 //* 调用函数:
//************************************************************* void port_init(void) {
DDRA=0x00;
//IO端口初始化
PORTA=0x00;
DDRB=0xff; PORTB=0xff; DDRC=0xff; PORTC=0xff;
DDRD=0xff;
PORTD=0xff;
}
/******************************************* 函数名称: Int_init 功 能: 中断初始化 参 数: 无 返回值 : 无
/********************************************/ void Int_init(void) {
SREG|=BIT(GLOBAL); MCUCR|=0x02;
//使能全局中断
//外部中断0采用下降沿触发
GICR|=BIT(EXTINT0);//使能外部中断0 DDRD&=~(BIT(PD2));
//配置中断管脚为输入
PORTD|=BIT(PD2); //使能中断管脚的上拉 }
void timer1_init(void) {
TCCR1B=0x04;//256分频 TCNT1H=0Xff;//赋初值 TCNT1L=0Xfe;//赋初值 TIMSK|=0x04;//中断使能 SREG|=0x80;//总中断开关 }
/*******************************************