AVR的485通讯
#include <iom64v.h>#include <macros.h>
#include <string.h>
#include <stdio.h>
void init()
{
DDRA=0x0fc;
DDRB=0x00;
DDRC=0x0ff;
DDRD=0x0f8;
DDRE=0x02; //配置TXD1为输出,RXD1为输入
DDRF=0x00;
DDRG=(1<<DDG0)|(1<<DDG1)|(1<<DDG2)|(0<<DDG3)|(1<<DDG4);
}
void uart1_init(void)
{
CLI(); //关全局中断
UCSR1B= 0x00; //disable while setting baud rate
UCSR1A= 0x00; //disable while setting baud rate
UBRR1L=0x17; //set baud rate 19200//外部晶振7.3728MHZ
UBRR1H=0x00;
UCSR1C=0x06; //异步,无奇偶校检,1位停止位,8位数据位
UCSR1B=0x98; //senddata enable receivedata enable
SEI(); //使能全局中断
}
void main()
{
uart1_init();
while(1)
{ ;
}//end while
}
#pragma interrupt_handler uart1_rx_isr:19//*****485串口以中断方式接受数据
void uart1_rx_isr(void)
{
CLI();
data1=UDR1;
PORTA|=0x40; //亮灯1
if(k==10)
{
k=0;
PORTA|=0x08; //亮灯2
}
SEI();
}
用的是ATMEGA64,需要用串口1进行485通讯,当485发送器发送数据(每次发10字节)后,ATMEGA64的接收端有波形,但灯1,灯2都不亮,请问谁知道是什么原因吗??? 各位大哥给点建议嘛,急呀!!! 已经解决,下了一个中文的说明,把中断向量搞错了,还是看英文原版的好啊 mark mark mark mark 楼主的自学能力很强{:victory:}
页:
[1]