2703|1

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于c8051f040串口调试的问题 [复制链接]

以下为串口调试代码,可为什么每次用串口精灵返回的数据好像是数组的个数啊,如果我的数组有6个数,返回的就是123456,如果是7个数返回的就是1234567,百思不得其解,各位高人指点下,不胜感激啊


#include "c8051f040.h"
typedef unsigned char uchar;
typedef unsigned int uint;
//sfr16 RCAP2=0xca;
//sfr16 RCAP3=0xca;
//sfr16 RCAP4=0xca;
//sfr16 TMR4=0xcc;
//sfr16 TMR3=0xcc;
//sfr16 TMR2=0xcc;
sfr16 PCA0CP0=0xfb;
sfr16 PCA0CP1=0xfd;
sfr16 PCA0CP2=0xe9;
sfr16 PCA0CP3=0xeb;
sfr16 PCA0CP4=0xed;
sfr16 PCA0CP5=0xe1;
xdata uchar aa[7]={0x31,0x32,0x33,0x34,0x35,0x36,0x37};
xdata uchar res[6];
xdata uchar k;
xdata uchar t;
enum {aalen=7};
void delay1ms(uint time);
void uart0_ini();
void t1_ini();
void t1_baud(uchar t1h);
void t2_ini();
void t2_baud(uint t2reload);
void config (void);
void uart0_ini(){
  SFRPAGE=0x00;
  SADEN0=0x00;
  SADDR0=0x00;
  SSTA0=0x01;
  SCON0=0x50;
  SCON0&=0xFC;
  IE|=0x10;
  t1_ini();
  t2_ini();
}

void t1_ini(){
    SFRPAGE=0x00;
    CKCON=0x10;
    TMOD=0x20;
    TCON=0x40;
}


void t1_baud(uchar val){
    SFRPAGE=0x00;
    TH1=~val+1;
    TL1=TH1;
}


void t2_ini(){
   SFRPAGE=0x00;
   TMR2CF=0x08;
   TMR2CN=0x04;
}


void t2_baud(uint t2reload){
    SFRPAGE=0x00;
    RCAP2=~t2reload+1;
    TMR2=RCAP2;
}

void config (void){
   WDTCN=0x07;
   WDTCN=0xDE;
   WDTCN=0xAD;
   SFRPAGE=0x0F;
   XBR0=0x04;
   XBR1=0x00;
   XBR2=0x40;
   XBR3=0x00;
   SFRPAGE=0x0F;
   P0MDOUT=0x00;
   P1MDIN=0xFF;
   SFRPAGE=0X0F;
   CLKSEL=0x00;
   OSCXCN=0x00;
   OSCICN=0x84;
}

void main(){
   config();
   uart0_ini();
   t1_baud(10);                     //设置波特率
   t2_baud(10);                    //设置波特率
   EA=1;
   k=0;
   t=0;
   SFRPAGE=0x00;
    SBUF0=aa[k];
   
//   while (1)
//    {
//       TI0=1;
//      SFRPAGE=0x00;
//    if(SCON0&0X01){
//      res[t]=SBUF0;
//      t++;
//     SCON0&=0xfe;
//    }
//    if(SCON0&0x02){
//        k++;
//         SBUF0=0x00;
//        SCON0&=0xfd;
//    }
//    }
  while(1){
    if(k>=aalen){
       SFRPAGE=0x00;
       TR2=0;
     }
    if(t>=aalen){
       SFRPAGE=0x00;
        TR1=0;
      }
     }
}

void uart0_ISR() interrupt 4{             //每次好像执行到这里就返回一个数值,123456...顺序返回,而不是返回的数组值
    SFRPAGE=0x00;
    if(SCON0&0x01){
      res[t]=SBUF0;
      t++;
      SCON0&=0xfe;
     }
     if(SCON0&0x02){
         k++;
         SBUF0=aa[k];
         //k++;
         SCON0&=0xfd;
     }
}


请各位达人指点。。。。。。。。。。
谢谢

最新回复

高人指点啊 谢谢 在下刚接触单片机有点生  详情 回复 发表于 2007-5-21 19:55
点赞 关注

回复
举报

58

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
高人指点啊
谢谢
在下刚接触单片机有点生
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表