程序1:
#include <pic.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x30D2);
uchar t,x;
void main()
{
uint j=10,i=50000;
t=0;
x=9;
TRISC=0xc0;
TRISD4=0; //RD4口定义为输出
RD4=0;
////////////////////////////////////////////////////////////////////////////
//这段程序放在这里,编译完后,烧写,然后LED确实闪烁5次。
////////////////////////////////////////////////////////////////////////////
while(j--) //闪烁5次
{
while(i--); //
i=50000;
RD4=~RD4; //
}
///////////////////////////////////////////////////////////////////////////
SPBRG=0x64;
TXSTA=0x24;
RCSTA=0x90;
RCIE=1;
TXIE=1;
PEIE=1;
GIE=1;
while(1);
}
void interrupt usart(void)
{
if(RCIF)//判断是否为串口接受中断
{
RCIF=0;
t=RCREG;
if(t==1)
{
t=0;
RD4=~RD4;
TXREG=x;
}
}
}
程序2:
#include <pic.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x30D2);
uchar t,x;
void main()
{
uint j=10,i=50000;
t=0;
x=9;
TRISC=0xc0;
TRISD4=0; //RD4口定义为输出
RD4=0;
SPBRG=0x64;
TXSTA=0x24;
RCSTA=0x90;
RCIE=1;
TXIE=1;
PEIE=1;
GIE=1;
////////////////////////////////////////////////////////////////////////////
//这段程序放在这里,编译完后,烧写,然后LED根本就没有闪烁。
////////////////////////////////////////////////////////////////////////////
while(j--) //闪烁5次
{
while(i--); //
i=50000;
RD4=~RD4; //
}
///////////////////////////////////////////////////////////////////////////
while(1);
}
void interrupt usart(void)
{
if(RCIF)//判断是否为串口接受中断
{
RCIF=0;
t=RCREG;
if(t==1)
{
t=0;
RD4=~RD4;
TXREG=x;
}
}
}
这是为什么呢?急死我啦,LED闪烁程序放的位置不同,造成的结果不同,但是串口通信和PC机通信是正常的,都可以收到和发送。奇怪啦!哪里有问题? |