单片机与PC通信,用串口调试助手V2.2发送数据后,总接收到80, 这是什么原因?请高人帮忙!!
单片机程序用模拟软件与串口调试助手V2.2没有问题#include<iom16v.h>#include<macros.h>#defineF_CPU8000000#defi...
单片机程序 用模拟软件与串口调试助手V2.2没有问题
#include<iom16v.h>
#include<macros.h>
#define F_CPU 8000000
#define BAUD 9600
#define uint unsigned int
#define uchar unsigned char
uchar rdata;
void uart_init(void)
{
UBRRH = (F_CPU /BAUD/16-1)/256;
UBRRL = (F_CPU /BAUD/16-1)%256;
UCSRB |= (1 << RXEN )|(1 << TXEN)|(1 << RXCIE);
SEI();
//DDRD|=0X02;
}
void delay(uint ms)
{
uint x,y;
for(x=0;x<ms;x++)
{
for(y=0;y<1141;y++);
}
}
void uart_sendb(uchar tdata)//发送字符
{
while(!(UCSRA&(BIT(UDRE))));
UDR=tdata;
while(!(UCSRA&(BIT(TXC))));
UCSRA|=BIT(TXC);
}
int puts(char *s)
{
while(*s)
{
uart_sendb(*s);
s++;
}
uart_sendb(0x0a);
uart_sendb(0x0d);
return 1;
}
void main(void)
{
uart_init();
DDRA=0XFF;
while(1)
{
}
}
#pragma interrupt_handler uart_rx:12
void uart_rx(void)
{
unsigned long i;
CLI();
while( !(UCSRA & (1<<UDRE)));
rdata=UDR;
SEI();
UDR=rdata;
i=rdata;
switch(i)
{
case 0x01 : PORTA=BIT(0);break;
case 0x02 : PORTA=BIT(1);break;
case 0x03 : PORTA=BIT(2);break;
case 0x04 : PORTA=BIT(3);break;
case 0x05 : PORTA=BIT(4);break;
case 0x06 : PORTA=BIT(5);break;
case 0x07 : PORTA=BIT(6);break;
case 0x08 : PORTA=BIT(7);break;
case 0x09 : PORTA=0Xff;break;
case 0x00 : PORTA=0X00;break;
}
}
16进制发送,16进制接收 展开
#include<iom16v.h>
#include<macros.h>
#define F_CPU 8000000
#define BAUD 9600
#define uint unsigned int
#define uchar unsigned char
uchar rdata;
void uart_init(void)
{
UBRRH = (F_CPU /BAUD/16-1)/256;
UBRRL = (F_CPU /BAUD/16-1)%256;
UCSRB |= (1 << RXEN )|(1 << TXEN)|(1 << RXCIE);
SEI();
//DDRD|=0X02;
}
void delay(uint ms)
{
uint x,y;
for(x=0;x<ms;x++)
{
for(y=0;y<1141;y++);
}
}
void uart_sendb(uchar tdata)//发送字符
{
while(!(UCSRA&(BIT(UDRE))));
UDR=tdata;
while(!(UCSRA&(BIT(TXC))));
UCSRA|=BIT(TXC);
}
int puts(char *s)
{
while(*s)
{
uart_sendb(*s);
s++;
}
uart_sendb(0x0a);
uart_sendb(0x0d);
return 1;
}
void main(void)
{
uart_init();
DDRA=0XFF;
while(1)
{
}
}
#pragma interrupt_handler uart_rx:12
void uart_rx(void)
{
unsigned long i;
CLI();
while( !(UCSRA & (1<<UDRE)));
rdata=UDR;
SEI();
UDR=rdata;
i=rdata;
switch(i)
{
case 0x01 : PORTA=BIT(0);break;
case 0x02 : PORTA=BIT(1);break;
case 0x03 : PORTA=BIT(2);break;
case 0x04 : PORTA=BIT(3);break;
case 0x05 : PORTA=BIT(4);break;
case 0x06 : PORTA=BIT(5);break;
case 0x07 : PORTA=BIT(6);break;
case 0x08 : PORTA=BIT(7);break;
case 0x09 : PORTA=0Xff;break;
case 0x00 : PORTA=0X00;break;
}
}
16进制发送,16进制接收 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询