AVRMEGA8 串口求救

2019-03-24 21:09发布

串口求救
#include <avr/io.h>
#include <util/delay.h>
#include <iom8v.h>
#include "IPGA204.h"
#define fosc 8000000//晶振8M
#define baud 9600//波特率9600

void putchar(unsigned char c);
unsigned char getchar(void);
int puts(char *s);
void puts_hh(char *s);
void uart_init(void);
void main(void)
{
        unsigned char i=0;
        uart_init();
        while(1)
        {
                //i=0;
                //i=getchar();
                //putchar(0x0a);
                //if(i!=0)
                //{
                        //putchar(0x35);
                        _delay_ms(100);
                        putchar(0x73);
                        //putchar(11);
                        //putchar(i);
                        //_delay_ms(100);
                        //putchar(0x0a);
                        //putchar(0x0d);
                        //puts("please put in:");
                //}
        }
}

void putchar(unsigned char c)
{
        while(!(UCSRA&(1<<UDRE)));
        UDR=c;
}
unsigned char getchar(void)
{
        while(!(UCSRA&(1<<RXC)));
        return UDR;
}
int puts(char *s)
{
        while(*s)
        {
                putchar(*s);
                s++;
        }
        return 1;
}
void puts_hh(char *s)
{
        while(*s)
        {
                putchar(*s);
                s++;
        }
        putchar(0x0a);
        putchar(0x0d);
}
void uart_init(void)
{
        UCSRB=(1<<RXEN)|(1<<TXEN);
        UBRRL=(fosc/16/baud-1)%256;
        UBRRH=(fosc/16/baud-1)/256;
        UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
        //OSCCAL=0xFF;
}
代码如上。。。
不知为何,输出结果不对,串口输出始终是80 00 80不知是否有什么设置不对,求高手解答。。。 此帖出自小平头技术问答
0条回答