搜索
bottom↓
回复: 1

请教个68013的串口问题

[复制链接]

出0入0汤圆

发表于 2014-9-28 21:32:58 | 显示全部楼层 |阅读模式
目的是想用串口1打印调试信息。
板子上的晶振是24MHZ的。
现在的问题是,在win7平台下,编译下载代码到ram后串口打印出来的是乱码,在winxp下可以打印字符串,但是打印%d这样的数值为实际数值×256,比如printf("val=%d",3);则串口printf出来的是768,很是奇怪,不知又遇到这样问题的朋友吗?



测试代码如下:

main.c

  1. #include <fx2.h>
  2. #include <fx2regs.h>
  3. #include <stdio.h>
  4. #include"uart.h"

  5. extern BYTE flag;

  6. void main(void)
  7. {
  8.         char buff[16]="123456789\n";
  9.         char cmd[]="are you ok ma ?";
  10.         char  k=3;
  11.         char i=0;

  12.     REG_Init();
  13.     SerialPort_Init();
  14.     EA = 1;

  15.         Uart1_printf("k1=%x\n",k);

  16.     while(1)
  17.     {
  18.          if(flag==1)
  19.         {
  20.              flag=0;
  21.                         for(i=0;i<sizeof(buff);i++)
  22.                         {
  23.                                 Serial_SendChar(buff[i]);                       
  24.                         }
  25.                         Uart1_printf("cmd=[%s],k=%d\n",cmd,k);
  26.             //Serial_SendChar(temp_data);
  27.         }
  28.     }
  29. }
复制代码


uart.c
  1. #include <stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. #include <stdarg.h>
  5. #include <fx2.h>
  6. #include <fx2regs.h>

  7. #include"uart.h"

  8. BYTE  temp_data=0;
  9. BYTE  flag=0;
  10. void REG_Init()
  11. {
  12.     CPUCS = 0x10; //48Mhz
  13.     CKCON = (CKCON&(~bmSTRETCH)) | 1;
  14. }
  15. void SerialPort_Init()
  16. {
  17.     TMOD = (TMOD & 0x0F) | 0x20;   // ???1????2,????  
  18.   CKCON |= 0x10;  //T1M = CLKOUT/4
  19.   EICON |= 0x80;  //??SMOD1=1,?????  
  20.   SCON1 = 0x50;  //???1????1,10?????,REN=0,?????RI1=0,TI1=0
  21.    TH1  = 0xD9;      //???1???      
  22.   ES1 = 1;     //????1??
  23.   TR1 = 1;
  24.    EA = 1;
  25.    TI1=1;
  26. }
  27. void Serial_SendChar(BYTE source)
  28. {
  29.     SBUF1 = source;
  30.     while(TI1 == 0);
  31.     TI1 = 0;
  32. }
  33. void Serial_Interrupt1() interrupt 7
  34. {      
  35.      if(RI1 == 1)
  36.     {
  37.         RI1 = 0;
  38.         //temp_data = SBUF1;
  39.                 //SBUF1=0;
  40.         flag = 1;
  41.     }
  42. }     



  43. ////////////////////////////////////////////////////////
  44. void Uart1_printf(char *str,...)
  45. {
  46.         char xdata buf[128];
  47.         unsigned char i = 0;
  48.         va_list ptr;
  49.         va_start(ptr,str);
  50.         memset(buf,0,sizeof(buf));
  51.         vsprintf(buf,str,ptr);

  52.         while(buf[i])
  53.         {
  54.                 Serial_SendChar(buf[i]);
  55.                 i++;
  56.         }
  57. }

复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
头像被屏蔽

出0入0汤圆

发表于 2014-9-30 12:12:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-17 17:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表