广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 20774 个阅读者
 
<< 上页  1   2   3   4   5   6  下页 >>(共 6 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
ken0127
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

发现没有办法回传值
电路也检查过了
不知道是什么原因…
程式如下

main()
{
     char buf;
     int i;
     SCON = 0x52;
     TMOD = 0X21;
     TH1 = 256-(28800/9600);
     TR1 = 1;
     TI = 1;


     P1 = 0x00;
     while(1)
     {
           if(RI == 1)
           {
                 TI = 1;
                 buf = SBUF;
                 i = atoh(buf);
                 P1 = seven_seg[ i ];
                 delay10ms(50) ;
                 RI = 0;
                 do
                 {

                 }while(!TI);
                 TI=0;
                 SBUF = buf;

           
           }
     }
}

是回传程式有误吗?



献花 x0 回到顶端 [30 楼] From:未知地址 | Posted:2007-03-25 01:56 |
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

你把TI的定义弄错了. 你的程式变成收到一个Byte就停了. 因为 TI 永远不会自动清为零

当 51 将 SBUF 的资料送完时(传送 stop bit), 会自动将 TI 设为 1, 而不是清为 0
不过你的程式只是测试而已, 也不需要等是否传送完. 反正接收也要相同的时间才会有下一个 byte

  while(1)
  {
      if(RI == 1)
      {
          buf = SBUF;
          i = atoh(buf);
          P1 = seven_seg[ i ];
          delay10ms(50) ;
          RI = 0;
          TI=0;
          SBUF = buf;
          while (!TI) ; // 纯测试的话不一定需要这行
      }
  }


献花 x0 回到顶端 [31 楼] From:台湾中华电信HINET | Posted:2007-03-25 13:19 |
ken0127
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

改完之后还是没有回传值
问了学长
他说之前的学长有提到有关于电脑com1那边的资源设定要注意到
但他说他也不太清楚
但检查之后发现电路也没错...


献花 x0 回到顶端 [32 楼] From:未知地址 | Posted:2007-03-25 15:33 |
ken0127
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我将测试rs232的程式加入了一小段
烧录8052
功能多了将高位跟低位的值都show出来
发现输入1,七段显示器会显示71
代表从pc端传出来的值原本就是不对的…
用VB传送的不是都是ASCII码吗…数字1应该是31H呀....


献花 x0 回到顶端 [33 楼] From:未知地址 | Posted:2007-03-25 16:24 |
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我记得你之前做RS232测试时不是会回传吗???

如果你觉得PC送的资料有问题有两种方式可以确定:
1. 使用 Serial Port Monitor 软体来监看PC对COM Port的动作
2. 使用另一个COM Port来接收这个COM Port的资料

你有用过上次那个RS232 PC 测试软体来送资料吗???

Serial Port Monitor 软体
http://www.microsoft.com/technet/sys...ies/portmon.mspx


献花 x0 回到顶端 [34 楼] From:台湾中华电信HINET | Posted:2007-03-25 17:14 |
ken0127
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

从软体上监看
输出的值是正确的没错
但我在接收到SBUF时的值却是错的
这是什么情形…
鲍率也都设成9600但输入的值却是错的....

后来我加入了底下程式
    if( getChar >= 0x41 && getChar <= 0x4f ) getChar = getChar - 0x20;
    if( getChar >= 0x70 && getChar <= 0x8f ) getChar = getChar - 0x40;
    if( getChar >= 0xb0 && getChar <= 0xcf ) getChar = getChar - 0x60;
    if( getChar >= 0xf0 && getChar <= 0xfe ) getChar = getChar - 0x80;

虽然传的资料是错的
但是有规则
而用软体监看传资料的状况
发现大大您之前写的vb程式
似乎有些许ug
就是你设定每行一次最多传送长度为32
但在hex档里每行几乎都当过32
当超过时
他会直接将后面的截掉加入0x0a,好像是换行指令
然后接着下一行传
所以当传到最后存的资料是不正确的....


[ 此文章被ken0127在2007-03-25 20:56重新编辑 ]


献花 x0 回到顶端 [35 楼] From:未知地址 | Posted:2007-03-25 20:12 |
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

接收的资料会错, 如果送的没问题只有收的出错了.
收的会错应该是格式不对速率不对或是 MAX232 有问题.
你有检查你的 Crystal 真的是 11.0592 MHz 吗?
如果你有示波器的话也许可以量量看波形对不对.

你有打开 Options -> Show Hex 来确定吗? 我刚试了一下好像没问题啊!
还有 Edit -> Max Output Bytes 要设定 128 这样才能看到所有 Hex 资料


献花 x0 回到顶端 [36 楼] From:台湾中华电信HINET | Posted:2007-03-25 21:28 |
ken0127
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

原来是我没打开设为128
所以看的都短短的资料,以为后面被截掉

我现在用的是12.0000 M HZ

而ICE上面的也是12.0000MHZ
难道是这个原因吗?
那我改成11.0592好了,刚好手边有一颗
那我把ICE设为使用外频模式来试试


献花 x0 回到顶端 [37 楼] From:未知地址 | Posted:2007-03-25 21:42 |
ken0127
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

对不起…我错了
原来真的是这个问题
现在收发正确的资料了
现下就来试试程式了…
谢谢大大....


献花 x0 回到顶端 [38 楼] From:未知地址 | Posted:2007-03-25 21:48 |
ken0127
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

但我不知道我的程式有没有真的写入记忆体内
因为在ice内的memory window里头去找那位置看不到我写入的资料
           *((unsigned char *)&pCode + 0 ) = getChar + 0x80;      // high address
           getHex();
           *((unsigned char *)&pCode + 1 ) = getChar ;      // low address



           *pCode++ = getChar;                  //读取并储存data

但在ICE里头看监看pCode、getChar都有正确的值
我将偏移量设为8000
也就是pCode写的位置会在8xxxh那边
这样是正确的吗?
有在8k之后吗?
因为用ice模拟,传送完资料之后
p1有清除的动作,也就是我的程式有载完并有跳到8000h那个位置
但结果依然不是我想要的动作....
是我偏移量设错了吗?


献花 x0 回到顶端 [39 楼] From:未知地址 | Posted:2007-03-25 22:20 |

<< 上页  1   2   3   4   5   6  下页 >>(共 6 页)
首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.099154 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言