这个程序里面有一下几点:
1、主程序中没有发送数据的函数
2、你在中断中定义Declare1[]和Declare2[],我的确不知道用意何在,你是要发送这两个字符串么?如果是要发送的话应该定义在main()函数内,或者之外。
3、如果让单片机要发送数据和接收数据的话,那是不是还应该有一个从机?这个程序只发送了数据,那么接收的数据是从哪里产生的呢?
我贴一个我自己写的程序,板子是M16,M128是和这个差不多,编译器是ICCAVR:
#include "iom16v.h"
#include "macros.h"
#define uchar unsigned char
#define uint unsigned int
#define mclk 1000000
#pragma interrupt_handler USART_RX:12
uchar DATA,flag=0;
void USART_init(uint baud)
{
UCSRA=0x00;
baud=mclk/16/baud-1;
UBRRH=baud<<8;
UBRRL=baud;
UCSRB=((1<
SREG|=BIT(7);
DDRD|=0x02;
}
void USART_TX(uchar data)
{
while(!(UCSRA&(1<
while(!(UCSRA&BIT(TXC)));//查询发送完毕 发送完毕对TXC置位
UCSRA|=BIT(TXC);//查询操作不会自动清0通过写一进行清0
}
void USART_RX()
{
UCSRB&=~BIT(RXCIE);//接收完成中断屏蔽不让其使能
while(!(UCSRA&(1<
UCSRB|=BIT(RXCIE);//使能接收完成中断
}
void main ()
{
uchar temp=0x00;
USART_init(9600);
while(1)
{
USART_TX(temp);
}
}
请问 你的问题解决了 吗?我现在用的128 串口0也遇到了这个问题 ,,求教???