#include <avr/io.h> //头文件
#include <util/delay.h> //引用系统自带的延时函数
#include<string.h>
#include<avr\interrupt.h>
#include <usart.h>
#include <crc8.h> //CRC校验函数就在这个文件里面
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define amount 10 //设定通讯数据量(包括1个地址帧,n个数据帧,1个校验帧)
unsigned char send[amount]; //发件箱
unsigned char inbox[amount]; //收件箱
unsigned char n=0; //**中断次
//unsigned char temp;
//波特率9600/9个数据位/1个停止位/奇校验/收发开启/接收中断
void usart_init(void)
{
UCSR0A=0x00; //不知道 ABC设置有没有错,
UCSR0B=0x98;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=51; //8M,9600
DDRD |= (1<<2); //MAX485平时工作在接收状态
PORTD &= ~(1<<2);
}
//--------------------------------------------------------------------
ISR(SIG_UART0_RECV) //接收中断
{
DDRC|=(1<<0);
PORTC |=(1<<0);
asm("cli");
unsigned char temp;
temp=UDR0; //保存到收件箱
_delay_ms(50);
PORTD |= (1<<2);
UDR0=temp;
_delay_ms(50);
PORTD &= ~(1<<2);
asm("sei");
}
//---------------------------------------------------------------------
int main(void)
{
usart_init(); //串口初始化
UCSR0A=0; //主机关闭地址筛选功能(多机通讯功能)
asm("sei"); //打开全局中断
DDRC|=(1<<0);
PORTC |=(1<<0);
while(1)
{
}
}
中断不了,串口发送11,后不返回11,进入不了中断,不知道那出问题了 |