这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » pc 来问个郁闷的东西,pc串口通信的

共2条 1/1 1 跳转至

pc 来问个郁闷的东西,pc串口通信的

院士
2006-09-17 18:14:16     打赏
pc 来问个郁闷的东西,pc串口通信的



关键词: 问个     郁闷     东西     串口     通信    

院士
2006-12-22 22:43:00     打赏
2楼
问 #include <AVR/io.h>
#include <AVR/interrupt.h>
#include <AVR/signal.h>

unsigned char *TXBUF;
unsigned char *RXBUF;
int TXCOUNT=-1;
int RXCOUNT=-1;

SIGNAL(SIG_UART_DATA)
{
    if(TXCOUNT-1)
    {
        TXCOUNT--;
        TXBUF++;
        outp(*TXBUF,UDR);
    }
    else
        UCSRB&=~_BV(UDRIE);
}

SIGNAL(SIG_UART_RECV)
{
    unsigned temp;
    temp=inp(UDR);
}

SIGNAL(SIG_UART_TRANS)
{
    /*if(TXCOUNT-1)
    {
        TXCOUNT--;
        TXBUF++;
        outp(*TXBUF,UDR);
    }
    else
    {*/
        TXCOUNT=9;
        TXBUF="good day!";
        UCSRB|=_BV(UDRIE);
        outp(*TXBUF,UDR);
    //}
}

void UART_INIT(void)
{
    
    UBRRL=51;
    UCSRB=_BV(TXEN)|_BV(RXEN)|_BV(RXCIE)|_BV(TXCIE)|_BV(UDRIE);
    UCSRC=_BV(UCSZ1)|_BV(UCSZ0)|_BV(URSEL)|_BV(USBS);
}    


int main(void)
{
    UART_INIT();
    TXBUF="good day!";
    TXCOUNT=9;
    outp(*TXBUF,UDR);
    sei();
    for(;;)
    {
        asm("nop");
    }
}

结果就是什么也就收不到
8M的晶振,max232做转换,设成9600bps结果接收到的只是00
如果用低一点的波特率就能就接受到一几个1了
如果不用SIG_UART_DATA中断也是一样,不过在9600bps能接收到几个1了
郁闷,弄很久了
winAVR的20040404版本编的
帮忙看看 1: 没有人理我

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]