|
先上程序段如下:
#include<iom88.h>
#include<intrinsics.h>
#include<comp_a90.h>
#include"main.h"
uchar RX_Buffer = 0;
void Delay(uint del)
{
uint i=0,j=0;
for(i=0;i<del;i++)
for(j=0;j<1000;j++)
;
}
void USART0_Init(void)
{
UCSR0B = 1<<7|1<<4|1<<3;//使能接收中断,接收,发送使能
UCSR0C = 0X06;
UBRR0H = 0;
UBRR0L = 207;//2400 bps
}
void USART_Send_Data(uchar *Data)
{ //发送数据
while(*Data)
{
UDR0 = *Data++;
while(!(UCSR0A&0X40));
UCSR0A |= 0X40;
}
}
void main(void)
{
DDRD_Bit2 = 1;
USART0_Init();
_SEI();
while(1)
{
USART_Send_Data("你好。\r\n");
PORTD_Bit2 = ~PORTD_Bit2;
Delay(1500);
}
}
#pragma vector =USART_RX_vect
__interrupt void USART_RX(void)
{
RX_Buffer = UDR0;
if(RX_Buffer == 0x01)
{
USART_Send_Data("收到!");
}
}
描述如下:准备做个串口实验,单片机上电后就不停的向串口输出 “你好”。 当上位机向单片机 发送“0x01” 单片机则
转入 串口接收中断, 在接收中断里 发送“收到”。发送完后,继续不停的发送”你好“。
问题: 当单片机正想上位机发送”你好“的时候,上位机向单片机发送0x01,单片机只能回复”收到“。不能继续发送”你好“,原本主循环中闪烁的灯也不
闪烁了。求解,这是怎么回事。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|