j__choi 发表于 2010-12-14 15:11:03

大侠们,帮我看下这个用uart0实现双机通信的程序哪里出问题了

发送:
#include<iom128v.h>
#include<macros.h>
#define baud9600
#define fosc12000000
//unsigned char tabble[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void uart_init()
{
UCSR0B=0X00;
UCSR0A=0X00;
UCSR0B=(1<<TXEN0)|(1<<RXEN0)|(1<<RXCIE0);
UCSR0C=(1<<UCSZ01)|(1<<UCSZ00);
UBRR0L=(fosc/16/(baud+1))%256;
UBRR0H=(fosc/16/(baud+1))/256;
DDRE=0X02;
SREG=0X80;
}

void uart_transmit0(unsigned char i)
{


while(!(UCSR0A&(1<<UDRE0)))
{
UDR0=i;
//PORTD=0X00;
}
while(!(UCSR0A&(1<<TXC0)))
UCSR0A|=BIT(TXC0);
}


void delay(unsigned int m)
{
unsigned int j;
unsigned int i;
for(i=0;i<m;i++)
for(j=0;j<10;j++);
}
void main()
{
unsigned char k;
uart_init();
uart_transmit0(0X3f);
delay(300);
}
接收:
#include<iom128v.h>
#include<macros.h>
#define baud9600
#define fosc12000000
#pragma interrupt_handler uart_receive0:19
unsigned char rcode,flag;
unsigned char tabble[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void uart_init()
{
UCSR0B=0X00;
UCSR0A=0X00;
UCSR0B=(1<<TXEN0)|(1<<RXEN0)|(1<<RXCIE0);
UCSR0C=(1<<UCSZ01)|(1<<UCSZ00);
UBRR0L=(fosc/16/(baud+1))%256;
UBRR0H=(fosc/16/(baud+1))/256;
DDRE=0X02;
SREG=0X80;
}

void uart_receive0(void)
{
UCSR0B&=~BIT(RXCIE0);
flag=1;
rcode=UDR0;
UCSR0B|=BIT(RXCIE0);
}
void delay(unsigned int m)
{
unsigned int j;
unsigned int i;
for(i=0;i<m;i++)
for(j=0;j<10;j++);
}
void main()
{
DDRA=0XFF;
DDRB=0XFF;
uart_init();
while(1)
{
if(flag==1)
{
flag=0;
PORTB=0XFF;
delay(1000);
PORTA=rcode;
}
}
}

貌似一直都进不了中端,用示波器看管脚的波形好像也错了

j__choi 发表于 2010-12-14 15:13:52

大侠们看看吧

j__choi 发表于 2010-12-14 16:09:07

大侠们,解答一下吧

danielmi 发表于 2010-12-14 20:41:19

发送字节程序有问题吧,应该是:
void uart_transmit0(unsigned char i)
{
while(!(UCSR0A&(1<<UDRE0))) ;
UDR0=i;
//PORTD=0X00;
while(!(UCSR0A&(1<<TXC0)))
UCSR0A|=BIT(TXC0);
}

j__choi 发表于 2010-12-14 21:23:11

回复【3楼】danielmi 俊俊
-----------------------------------------------------------------------

大侠,恩人啊,这几天一直没查出是这里错了。

danielmi 发表于 2010-12-14 21:26:14

回复【4楼】j__choi
-----------------------------------------------------------------------

不是大虾,只要细心点就行了!!

jie18778884418 发表于 2014-5-29 09:46:43

j__choi 发表于 2010-12-14 15:13
大侠们看看吧

楼主能把你双机通信的程序发给我看看吗,我也正在搞,不懂啊
页: [1]
查看完整版本: 大侠们,帮我看下这个用uart0实现双机通信的程序哪里出问题了