您尚未
登入
注册
忘记密码
搜寻
赞助
赞助本站
数位公仔
纪念T恤
纪念马克杯
广告
刊登广告
广告价格
线上申请刊登
用雅币刊登
免费刊登
目前客户
简讯
简讯说明
购买金币
发送简讯
预约简讯
发送记录
好友通讯
罐头简讯
论命
数位论命馆
免费排盘工具
葫芦墩 优生造命
葫芦墩 八字命书
影音论命(葫芦墩)
影音占卜(葫芦墩)
购买金币
星座分析
孔明神数
周公解梦
星侨线上论命
娱乐
影 像 行 脚
数 位 造 型
数 位 画 廊
心 情 日 记
公 益 彩 券
送生日蛋糕
俄罗斯方块
四 川 省
猜 数 字
比 大 小
泡 泡 龙
许 愿 池
万 年 历
经 期 计 算
体 重 测 量
音 乐 点 播
卫 星 地 图
时间戳字幕
男女聊天室
求助
论坛守则
会员等级
会员权限
语法教学
常见问题
最新活动
打工赚雅币
首页
新版首页(全页)
传统首页(全页)
新版首页(选单)
传统首页(选单)
MyChat 数位男女
命理风水
15
星侨五术软体
4
葫芦墩命理网
5
命理问答
9
四柱八字
1
紫微斗数
1
姓名学
手面相
易经占卜
1
风水研讨
1
择日&三式
1
西洋占星
无视论塔罗牌
10
修行&武术
1
中医研讨
五术哈啦
1
电脑资讯
13
硬体讨论
5
超频 & 开箱
3
数位生活
2
PDA 讨论
手机讨论区
软体推荐
2
软体讨论
6
Apple 讨论
1
Unix-like
网路&防毒
2
程式设计
网站架设
4
电脑教学资源
生活休闲
14
休闲哈啦
7
感情世界
2
上班一族
5
国考&法律
7
生活医学
4
运动体育
1
单车讨论
1
钓鱼讨论
6
旅游讨论
4
天文观星
3
摄影分享
8
图片分享
4
数位影视
2
笑话集锦
3
兴趣嗜好
13
文学散文
7
绘图艺术
1
布袋戏
3
动漫画讨论
3
美食天地
6
理财专区
心理测验
1
汽、机车
3
宠物园地
模型&手工艺
4
花卉园艺
魔术方块
独轮车专区
电玩游戏
13
游戏欢乐包
4
CS讨论
8
Steam
3
MineCraft
2
东方Project
英雄联盟LOL
1
单机游戏
2
WebGame
3
线上游戏1
6
线上游戏2
5
电视游乐器
1
掌上型游戏
2
模拟器游戏
1
工商服务
6
虚拟城市
7
好康分享
新品贩售
二手拍卖
1
租屋&找屋
工商建议区
1
站务专区
10
最新活动
活动成果
数位造型
心情日记
个人图库
新人报到练习
论坛问题建议
1
荣会及电子报讨论
-最近版区-
-最近浏览-
»
程式设计
»
如何用RS232传送HEX档?
手机版
订阅
地图
繁体
您是第
20714
个阅读者
<<
上页
1
2
3
4
5
6
下页
>>
(共 6 页)
可列印版
加为IE收藏
收藏主题
上一主题
|
下一主题
ken0127
级别:
小人物
x0
x0
分享:
▼
发现没有办法回传值
电路也检查过了
不知道是什么原因…
程式如下
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;
}
}
}
是回传程式有误吗?
x
0
[30 楼]
From:未知地址 |
Posted:
2007-03-25 01:56 |
cmovies
级别:
小人物
x0
x20
分享:
▲
▼
你把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) ; // 纯测试的话不一定需要这行
}
}
x
0
[31 楼]
From:台湾中华电信HINET |
Posted:
2007-03-25 13:19 |
ken0127
级别:
小人物
x0
x0
分享:
▲
▼
改完之后还是没有回传值
问了学长
他说之前的学长有提到有关于电脑com1那边的资源设定要注意到
但他说他也不太清楚
但检查之后发现电路也没错...
x
0
[32 楼]
From:未知地址 |
Posted:
2007-03-25 15:33 |
ken0127
级别:
小人物
x0
x0
分享:
▲
▼
我将测试rs232的程式加入了一小段
烧录8052
功能多了将高位跟低位的值都show出来
发现输入1,七段显示器会显示71
代表从pc端传出来的值原本就是不对的…
用VB传送的不是都是ASCII码吗…数字1应该是31H呀....
x
0
[33 楼]
From:未知地址 |
Posted:
2007-03-25 16:24 |
cmovies
级别:
小人物
x0
x20
分享:
▲
▼
我记得你之前做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
x
0
[34 楼]
From:台湾中华电信HINET |
Posted:
2007-03-25 17:14 |
ken0127
级别:
小人物
x0
x0
分享:
▲
▼
从软体上监看
输出的值是正确的没错
但我在接收到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重新编辑 ]
x
0
[35 楼]
From:未知地址 |
Posted:
2007-03-25 20:12 |
cmovies
级别:
小人物
x0
x20
分享:
▲
▼
接收的资料会错, 如果送的没问题只有收的出错了.
收的会错应该是格式不对速率不对或是 MAX232 有问题.
你有检查你的 Crystal 真的是 11.0592 MHz 吗?
如果你有示波器的话也许可以量量看波形对不对.
你有打开 Options -> Show Hex 来确定吗? 我刚试了一下好像没问题啊!
还有 Edit -> Max Output Bytes 要设定 128 这样才能看到所有 Hex 资料
x
0
[36 楼]
From:台湾中华电信HINET |
Posted:
2007-03-25 21:28 |
ken0127
级别:
小人物
x0
x0
分享:
▲
▼
原来是我没打开设为128
所以看的都短短的资料,以为后面被截掉
我现在用的是12.0000 M HZ
而ICE上面的也是12.0000MHZ
难道是这个原因吗?
那我改成11.0592好了,刚好手边有一颗
那我把ICE设为使用外频模式来试试
x
0
[37 楼]
From:未知地址 |
Posted:
2007-03-25 21:42 |
ken0127
级别:
小人物
x0
x0
分享:
▲
▼
对不起…我错了
原来真的是这个问题
现在收发正确的资料了
现下就来试试程式了…
谢谢大大....
x
0
[38 楼]
From:未知地址 |
Posted:
2007-03-25 21:48 |
ken0127
级别:
小人物
x0
x0
分享:
▲
但我不知道我的程式有没有真的写入记忆体内
因为在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那个位置
但结果依然不是我想要的动作....
是我偏移量设错了吗?
x
0
[39 楼]
From:未知地址 |
Posted:
2007-03-25 22:20 |
<<
上页
1
2
3
4
5
6
下页
>>
(共 6 页)
MyChat 数位男女
»
程式设计
Powered by
PHPWind
v1.3.6
Copyright © 2003-04
PHPWind
Processed in 0.072538 second(s),query:16 Gzip disabled
本站由
瀛睿律师事务所
担任常年法律顾问 |
免责声明
|
本网站已依台湾网站内容分级规定处理
|
连络我们
|
访客留言