USART数据自发自收测试程序怎么不好使呢。请高手帮忙看看。

发布时间:2024-05-15 06:46 发布:上海旅游网

问题描述:

#include<avr/io.h>
#include <stdint.h>
#include <inttypes.h>
#include <util/delay_basic.h>
#include<avr/interrupt.h>

#define uchar unsigned char
#define uint unsigned int

#define MCLK 8000000
#define BAUD;

uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delay(uint ms)
{
uint i;
for(i=0;i<ms;i++)
_delay_loop_2(8*250);
}

ISR(USART_RXC_vect)
{
uchar status,data;
status=UCSRA;
data=UDR;
if((status&0X1C)==0)
PORTA|=_BV(3);
PORTB=table[data];
PORTA&=~_BV(3);
PORTA|=_BV(4);
PORTB=0X3F;
PORTA&=~_BV(4);
}

void USART_Transmit(uchar data)
{
while(!(UCSRA&0X02))
UDR=data;
}

void main()
{
uchar i=0;
DDRA|=_BV(3)|_BV(4);
DDRB=0XFF;
DDRD=0X02;
PORTD=0X03;
BAUD=MCLK/16/BAUD-1;
UCSRA=0X00;
UCSRB=0X98;
UCSRC=0X86;
UBRRH=BAUD_H;
UBRRL=BAUD_L;
sei();
for(;;)
{
USART_Transmit(i);
if(++i>=10)
i=0;
delay(500);
}
}

问题解答:

USART数据自发自收测试程序怎么不好使呢。请高手帮忙看看。这个旅游问答期待您的解答,请登录账号或关注微信公众号回答这个问题。

热点新闻