13579 发表于 2010-1-4 09:19:17

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都不亮,请问谁知道是什么原因吗???

13579 发表于 2010-1-4 14:01:27

各位大哥给点建议嘛,急呀!!!

13579 发表于 2010-1-4 17:44:33

已经解决,下了一个中文的说明,把中断向量搞错了,还是看英文原版的好啊

dugutianma 发表于 2010-5-31 21:43:16

mark

dugutianma 发表于 2010-6-4 22:24:28

mark

zou317 发表于 2010-6-4 22:53:34

mark

zdaly 发表于 2010-12-16 01:33:11

mark

shacha1234 发表于 2013-5-3 13:56:31

楼主的自学能力很强{:victory:}
页: [1]
查看完整版本: AVR的485通讯