c8051f单片机内部用中断的方式计时,60毫秒进中断一次,每次进中断,unsigned long型time变量加一。用仿真器仿真时,time值显示正确。但是发返回指令0xfc指令给单片机UART串口时,返回的time值在超过65535时,返回错误了。(65535以内返回的数据是正确的。)比如time值仿真器显示的是0x00012fb8 uart串口显示的是0xffff2fb8 波特率设置成2400bps。波特率应该没有问题。下面是uart发送函数
unsigned long tep1; //tep1ÊÇÐÎʽ²ÎÊý¡£¼ò³ÆÐβÎ
unsigned char j5,j6;
void uart_long_send(tep1) // ·¢Ëͳ¤ÕûÐÍÊý¾Ý
{
SBUF0=(tep1>>24);
for(j5=0;j5<=60;j5++) //¶ÌÔÝÑÓʱ£¬²»ÖªÊÇ·ñÐèÒª
for(j6=0;j6<=100;j6++);
SBUF0=(tep1>>16);
for(j5=0;j5<=60;j5++) //¶ÌÔÝÑÓʱ£¬²»ÖªÊÇ·ñÐèÒª
for(j6=0;j6<=100;j6++);
SBUF0=(tep1>>8);
for(j5=0;j5<=60;j5++) //¶ÌÔÝÑÓʱ£¬²»ÖªÊÇ·ñÐèÒª
for(j6=0;j6<=100;j6++);
SBUF0=tep1;
for(j5=0;j5<=60;j5++) //¶ÌÔÝÑÓʱ£¬²»ÖªÊÇ·ñÐèÒª
for(j6=0;j6<=100;j6++);
} |