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

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

   优游青春 
优游青春发表的帖子 

 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--);
}




发表时间:2007年4月9日16:05:29

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:mega8 int0中断要 置哪几位mega8 int0中断要&nbs
[下一篇帖子]:[原创]招聘单片机开发人员(上海)1. 硬件工程师 工作地点:上海 /P P