导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→8251单步时发送正确,但是全速运行时却会出错?为什么?[优游青春]

 *第47706篇: 8251单步时发送正确,但是全速运行时却会出错?为什么?

  
楼 主:优游青春 2007年4月9日16:05
 8251单步时发送正确,但是全速运行时却会出错?为什么?
这是单步执行时的结果:
ZYXWVUTSRQPONMLKJIHGFEDCBA@?>  =  <;:987654321
这是全速执行时的结果:
ZYYXWVVUTSSRQPPONMMLKJJIHGGFEDDCBAA@?>  >  =  <;;:988765543221ZZZYXWWVUTTSRQQPONNMLKKJIHHGFEEDCBBA@??>  =  <  <;:998766543321ZZZYXWWVUTTSRQQPONNMLKKJIHHGFEEDCBBA@??>  =  <  <;:998766543321ZZZYYXWVVUTSSRQPPONMMLKJJIHGGFEDDCBAA@?>  >  =  <;;:988765543221ZZYYXWVVUTSSRQPPONMMLKJJIHGGFEDDCBAA@?
一'比较两种结果发现全速执行时结果有重复的部分,而单步执行则一一对应.为什么会出现这种情况呢?
二'我发送的是for(a=0x5A;a>  0x30;a--),出来为什么是这些字符呢?
三'如果我要发送汉字应该怎么发送啊?
#define _TEST_C_
#include "reg52.h"
#include "stdlib.h"
#include "absacc.h"
#include "intrins.h"
#include "test.h"
#include "math.h"
#define uchar unsigned char
#define uint  unsigned int
#define COM8251 XBYTE[0x8701]
#define DAT8251 XBYTE[0x8700]
uchar  data data_temp[6]={0x52,0x53,0x54,0x55,0x00,0x58};
uchar   temp[6]={52,0x53,0x54,0x55,0x00,0x58};
 uchar m=0,n=0,k;  
 uchar data a;
void  initmcu(void);
void  wait(uchar p,q);

void main(void) 
{  

    EA = 0;
    initmcu();
    EA = 1;
   //wait(11,82);//8251工作速度慢,每送一个控制字,等待一会儿延时2ms
    COM8251 = 0x00;
    DAT8251 = 0x00;
    DAT8251 = 0x00;
    COM8251 = 0x40;//以上为8251复位部分
    wait(11,82);
    COM8251 = 0x4e;//9600baud,1停止位,无校验,8位数据,X16
    wait(11,82);
    COM8251 = 0x35;  
    wait(11,82);     
    for(a=0x5A;a>  0x30;a--)
 {
  do 
  {
     DAT8251=a;
  }while((COM8251&0x01)==0);
 }  
}

void  wait(uchar p,q)
{
   uchar  i,j;                //(2*j+3)*i+4
   for (i=p;i>  0;i--)
      for (j=q;j>  0;j--);
}



>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:mega8 int0中断要 置哪几位

[下一篇主题]:[原创]招聘单片机开发人员(上海)