#include<mytouwenjian.h>
#pragma interrupt_handler read:12
uchar nn,mm=0;
void inst()//初始化函数
{
UCSRA=0;
UCSRB=(bit(RXCIE)|bit(RXEN)|bit(TXEN));//接收结束中断允许 发送接收使能
UCSRC=bit(URSEL)|0X06;//8位数据 1停止位
UBRRH=0;
UBRRL=71;//波特率9600 11.0592晶振
SREG|=bit(7);//开全局中断
DDRD|=0X02;
}
void write(uchar date)
{
while(!(UCSRA&bit(UDRE)));
UDR=date;
while(!(UCSRA&bit(TXC)));
UCSRA|=bit(TXC);
}
void read()//接收中断程序
{
UCSRB&=~bit(RXCIE);//关中断
nn=UDR;
mm=1;
UCSRB|=bit(RXCIE);//开中断
}
void main()
{
uchar kkk=0x55;
inst();
DDRA=0XFF;
write(kkk);
while(1)
{
if(mm)
{write(nn);PORTA=nn;mm=0;}
}
}
请高手看看上面这程序,串口调试助手能接收单片机发送的数据 但单片机不能接收数据 ,我做过实验,是没有进入接收中断程序,但把程序稍微改改,能进入发送中断程序 。 不知问题出在那??
|