这是单步执行时的结果:<br />ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<:987654321<br />这是全速执行时的结果:<br />ZYYXWVVUTSSRQPPONMMLKJJIHGGFEDDCBAA@?>>=<;:988765543221ZZZYXWWVUTTSRQQPONNMLKKJIHHGFEEDCBBA@??>=<<:998766543321ZZZYXWWVUTTSRQQPONNMLKKJIHHGFEEDCBBA@??>=<<:998766543321ZZZYYXWVVUTSSRQPPONMMLKJJIHGGFEDDCBAA@?>>=<;:988765543221ZZYYXWVVUTSSRQPPONMMLKJJIHGGFEDDCBAA@?<br />一'比较两种结果发现全速执行时结果有重复的部分,而单步执行则一一对应.为什么会出现这种情况呢?<br />二'我发送的是for(a=0x5A;a>0x30;a--),出来为什么是这些字符呢?<br />三'如果我要发送汉字应该怎么发送啊?<br /><br />以下是我的程序部分:<br />#define _TEST_C_<br />#include "reg52.h"<br />#include "stdlib.h"<br />#include "absacc.h"<br />#include "intrins.h"<br />#include "test.h"<br />#include "math.h"<br />#define uchar unsigned char<br />#define uint unsigned int<br />#define COM8251 XBYTE[0x8701]<br />#define DAT8251 XBYTE[0x8700]<br />uchar data data_temp[6]={0x52,0x53,0x54,0x55,0x00,0x58};<br />uchar temp[6]={52,0x53,0x54,0x55,0x00,0x58};<br />uchar m=0,n=0,k; <br />uchar data a;<br />void initmcu(void);<br />void wait(uchar p,q);<br /><br />void main(void) <br />{ <br /><br />EA = 0;<br />initmcu();<br />EA = 1;<br />//wait(11,82);//8251工作速度慢,每送一个控制字,等待一会儿延时2ms<br />COM8251 = 0x00;<br />DAT8251 = 0x00;<br />DAT8251 = 0x00;<br />COM8251 = 0x40;//以上为8251复位部分<br />wait(11,82);<br />COM8251 = 0x4e;//9600baud,1停止位,无校验,8位数据,X16<br />wait(11,82);<br />COM8251 = 0x35; <br />wait(11,82); <br />for(a=0x5A;a>0x30;a--)<br />{<br />do <br />{<br />DAT8251=a;<br />}while((COM8251&0x01)==0);<br />} <br />}<br /><br />void wait(uchar p,q)<br />{<br />uchar i,j; //(2*j+3)*i+4<br />for (i=p;i>0;i--)<br />for (j=q;j>0;j--);<br />}<br /> |
|