PCSH91_305 板


LINE

※ [本文转录自 nfsong 信箱] 作者: ksmrt0123 (ksmrt) 看板: ASM 标题: Re: 利用8051撰写AT command 的问题 时间: Mon Dec 14 23:14:21 2009 改这样试看看~~~ ※ 引述《maxwellyann (不彦其烦)》之铭言: : init_rs232() //初始化RS232通讯介面 <<这里怪怪的 分号的部份>> : { //通讯协定:<9600 N 8 1> : SCON=0x50; //设定串列界面工作模式1,接收资料致能 SCON=0xD8; <- 改为 mode 3, 并把TB8设为1 这样才有正确的stop bit : TMOD=0x20; //设定计时器1工作於模式2 : TH1=0xFD; //设定鲍率为9600BPS : TR1=1; //启动计时器1开始计数 : TI=1; //设定串列传送中断产生旗号 TI=0; : } : tx_char(unsigned char c) //传送一位元组资料 : { : while(1) : if(TI)break; //等待传送中断旗号产生 上两行改 while(TI) ; : TI=0; //清除串列传送中断旗号 : SBUF=c; //由串列埠传送资料出去 : } : tx_str(char*str) //传送字串资料 : { : do{tx_char(*str++);} : while(*str!='\0'); 改 while(*str) tx_char(*str++); 可能好一点 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.68.71.218 ※ 编辑: ksmrt0123 来自: 219.68.71.218 (12/14 23:24)
1F:推 maxwellyann:谢谢你唷~我先来试试看! 12/14 23:23
2F:推 maxwellyann:SCON=0xD8 是加上去的还是改掉上面那句? 12/15 12:07
改掉上面
3F:→ maxwellyann:TB8设为1意思是我还要再加东西上去吗? 12/15 12:13
不用, 这边只是说明SCON=0xD8的效果
4F:→ maxwellyann:TI=0也是要加打上去的吗? 12/15 12:15
改掉原来的 TI=1; ※ 编辑: ksmrt0123 来自: 219.68.71.218 (12/15 14:47)
5F:推 maxwellyann:可以请问,如果我只要单纯测试RS232这一段,我的硬体 12/15 22:34
6F:→ maxwellyann:该如何配置,才能测试code是否能够传送资料呢? 12/15 22:35
用示波器或是逻辑分析仪看TxD的波形啊 这两样都没有就有点麻烦了... ※ 编辑: ksmrt0123 来自: 219.68.71.218 (12/16 00:30)
7F:→ maxwellyann:经过测试RS232的部份只有PIN4有动作,PIN2.PIN3都没有 12/16 17:10
RS232? 还是51的serial port? 什麽东西的pin 2,3,4? 这两个并不一样
8F:→ maxwellyann:动作,是RS232程式码定义错误吗? 12/16 17:10
怎样的动作? 有看到波形吗? 正确吗?
9F:→ maxwellyann:还有我的BAUD RATE是9600,这个部份需要定义吗? 12/16 17:15
假如你用的标准的8051, 且crystal用的是 11.0592MHz, 那这麽baudrate应该是9600没错 ※ 编辑: ksmrt0123 来自: 219.68.71.218 (12/16 20:38)
10F:→ maxwellyann:我说的是RS232的第二三四脚,只有第四脚有电位差。 12/16 21:31
rs232 pin.4是DTR, 你有用到DTR? 还有什麽叫"有电位差"?
11F:→ maxwellyann:RS232指的是51的serial port,还有要怎麽看51是标准的 12/16 21:47
就说这两个不一样了... 把厂牌/型号写出来啊
12F:→ maxwellyann:经过测试51的2脚(RD).3脚(TD)都没有反应.只有4脚有 12/16 21:53
你应该又把rs232 什麽又叫"有反应"? 跟51的serial port搞混了 ※ 编辑: ksmrt0123 来自: 219.68.71.218 (12/16 23:03)
13F:→ maxwellyann:我使用的51版是洋天科技TE-51-UC 12/16 23:56
14F:→ maxwellyann:测量过51的serial port 需要使用的RXD、TXD接示波器, 12/17 00:09
15F:→ maxwellyann:都没有任何反应,DTR没用到。 12/17 00:10
16F:→ maxwellyann:假设我的51 serial port接GSM RS232(母), 12/17 00:12
17F:→ maxwellyann:连接的线是GSM专用的线,GSM RS232(母)对线(公), 12/17 00:15
18F:→ maxwellyann:线(公)对51 serial port(母),这样接51跟GSM能顺利沟 12/17 00:16
19F:→ maxwellyann:通吗?我不会测量传输线是否为交叉线,也不确定这麽接 12/17 00:18
20F:→ maxwellyann:对不对?麻烦你帮我解答噜!非常紧急需要你的帮忙! 12/17 00:19
21F:→ maxwellyann:目前我遇到最大的问题在於我不晓得RS232转换电路是否 12/17 00:20
22F:→ maxwellyann:可以正常运作,如果可以正常运作,跑软体却还是没有动 12/17 00:21
23F:→ maxwellyann:作的话,软体该怎麽去修改?硬体接收到senser==1的讯 12/17 00:22
24F:→ maxwellyann:号是否要放到暂存器中,如果是的话,我对这部份更是一 12/17 00:23
25F:→ maxwellyann:窍不通,解决完这部份,就剩下ATcommand的部份要测试 12/17 00:24
26F:→ maxwellyann:还有一个重点是,我用的51,它的说明比较烦杂,甚至 12/17 00:31
27F:→ maxwellyann:有什麽功能或者使用方式都跟一般的51不太一样 12/17 00:31
28F:推 WolfLord:洋天的TE51基本上是89S51,除了烧录外都跟标准51差不多 12/17 01:55
29F:推 WolfLord:老兄,您别着急,您的GSM MODEM有没有线上规格可以抓得到? 12/17 01:58
30F:推 WolfLord:然後确定一下,你的GSM MODEM是否为UART或需要转换信号 12/17 02:02
31F:推 WolfLord:然後,TE51的232第二只脚是输出(TX)第三只脚是输入(RX) 12/17 02:05
32F:→ WolfLord:地5只脚是接地,用电表量看看到MODEM对不对 12/17 02:05
33F:推 WolfLord:真的搞不清楚,先接PC操作看看 12/17 02:24
34F:→ maxwellyann:回WO大,GSM MODEN的规格网路上好像找不到,我打给厂 12/17 13:12
35F:→ maxwellyann:商问,不过是个很烂的厂商,先问他规格 12/17 13:12
36F:→ maxwellyann:还有一个问题,51的serial port 第三脚TX第二脚RX吧? 12/17 13:13
37F:→ maxwellyann:51的serial port应该都一样吧! 12/17 13:14
38F:→ maxwellyann:还有我要怎麽去量51到MODEN呢?要接传输线吧? 12/17 13:15
39F:→ maxwellyann:可是如果接起来了,我要怎麽去量测呢?麻烦你噜! 12/17 13:16
40F:推 WolfLord:只要用三用电表就可以测量电线怎麽跳了您该不会连三用电 12/17 14:06
41F:→ WolfLord:表都不会用吧? 类比的指针表甚至能捕捉到脉冲跳动哪 12/17 14:06
42F:→ maxwellyann:你的意思是测量51的serial port吧!如果是的话我已经 12/17 15:35
43F:→ maxwellyann:用电表测量过了,RX跟TX都没有反应,正极接RX.TX负极 12/17 15:37
44F:→ maxwellyann:接地对吧!还有可请大大开呼叫器吗?这样问你较方便! 12/17 15:38
假如还在debug, 可照下列步骤做: (0) 名词定义 0.1 实验板: 洋天 TE-51-UC 0.2 51: 8051 uP, 厂牌与型号未知, 可能是 Atmel 89S51 0.3 Serial port: 8051 IC 上的 serial io port, 包含 RxD (pin 10) 与 RxD (pin 11) 0.4 RS232: TE-51-UC板子上的 DE-9 接头的那个介面. RS232跟 51 serial port相关但不相同, 不要搞混 TE-51-UC板子应该是DCE端, TxD是pin3, RxD是pin 2 (1) 确认 8051 正确烧录与执行 请先确定写好的程式有正确的烧录进8051, 并且有正确执行. 把下列程式烧进去51里, 用示波器或电表量看看51的IO port输出是否正确: #include <reg51.h> main() { P0 = 0x55; P1 = 0x55; P2 = 0x55; P3 = 0x55; } (2) 确认 51 serial port 有正确输出 #include <reg51.h> main() { int c; SCON=0xD8; TMOD=0x20; TH1=0xFD; TR1=1; TI=1; TI=0; c = 0; while(1) { SBUF = 0x00; while(!TI) ; TI = 0; } } 把上面的程式烧进 51 後, 用示波器量 51 的 TxD (pin 11), 会看到这样的波形: _ _ _ _ _ TxD: |_________| |_________| |_________| |_________| |___ (3) 确认 baudrate 假如8051用的是11.0592MHz的crystal, 那serial port输出 会是 9600 bps. 输出0x00, 包含1个start bit 跟8个data bits 均为 low, 所以TxD波形 low 的宽度是 9个 bit time, 约为 937.5 uS; high只占1个bit time, 约104uS. _ _ |_________| |____ ^-937.5uS-^ ^-^ 104uS (4) 先这样看情况再说吧... ※ 编辑: ksmrt0123 来自: 219.68.71.218 (12/17 16:01)
45F:推 maxwellyann:感恩KS大唷,我先试试看再说!还有我用的是 12/17 16:17
46F:→ maxwellyann:ATMEL AT89S52 12/17 16:18
47F:→ maxwellyann:测试(1)後,每一个pin都是一个5V一个0V,这样对吗? 12/17 16:57
嗯, 这样应该ok
48F:→ maxwellyann:还有pin10.RX电压4.6V,pin11.TX电压0V,这样正常吗? 12/17 16:59
你的RS232有接东西吗? 理论上没接其他东西的话 RxD应该要维持 5V, TxD 因为送 0x00出去, 用电表 量到 0V 应该ok... 你不是有示波器? 用示波器看比较准~ 量量看有没有我画的那样的波形 ※ 编辑: ksmrt0123 来自: 219.68.71.218 (12/17 17:05)
49F:→ maxwellyann:pin10.11当我没说@@,那不在PORT里面~~~ 12/17 17:11
50F:→ maxwellyann:(2)测量完了,TXD的波形与你的画的是一样的,测(3)! 12/17 17:12
51F:推 maxwellyann:鲍率我不会算,帮我算一下好吗?Time=0.2ms,CH1=5V, 12/17 17:59
52F:→ maxwellyann:FREQ=1.7453KHZ,算超久算不出来,麻烦你噜! 12/17 18:00
53F:推 WolfLord:? 没关过呼叫器啊~ 只是我又不一定在电脑旁 12/17 18:17
54F:推 maxwellyann:TH1=0xFD就是设定BAUDRATE为9600bps对吧! 12/17 18:20
55F:→ maxwellyann:目前我出现的波形都跟你说的一样,代表说我可以开始 12/17 18:20
56F:→ maxwellyann:测试程式码噜,对吧!那code不改直接测吼!对吧? 12/17 18:22
还是先确定baudrate正确比较好, 1.7543KHz有点怪怪的. 不然你看一下板子上的 crystal 上面打多少? 假如不是 11.0592 的话 baudrate就不对, 要改 TH1. 示波器还是要学一下... 不会看示波器以後debug会很困难 你说的 CH1=5V是垂直(电压)的区间(division)一格是5V, 在这不重要, Time=0.2mS 表示水平一格是 0.2mS = 200uS, 假如TxD以9600bps送出 0x00, 那 low 的部份就会占 937.5uS, 大约是4格多接近5格. 这样可大约估出波形宽度了. 可配合 trigger position来调整波形在萤幕上的位置, 把前面的下降缘对齐格线, 这样量就比较准确了. 现在的示波器都是DSO, 有游标(cursors)做精确地量测, 把第一个cursor放在下降缘, 第二个放上升缘, 这样low 的宽度 DSO 就自动量好显示在萤幕上了. (一般在右上方显示 |A-B| 或是 一个三角形(delta)的就是了) ※ 编辑: ksmrt0123 来自: 219.68.71.218 (12/17 19:01)
57F:推 maxwellyann:我在烧录的时候设定11.0592来烧,跑你的code也都没问 12/17 19:45
58F:→ maxwellyann:题,这样可以确定鲍率是9600bps吗? 12/17 19:46
不可以
59F:推 maxwellyann:TH1=0xFD,就是设定鲍率9600对吧,所以code可以跑步不 12/17 19:51
60F:→ maxwellyann:就代表51是11.0592吗,这麽说对吧! 12/17 19:51
不对 你应该要读一下 8051 serial port跟baudrate的设定. 当baudrate固定, crystal频率跟(0x100-TH1)成正比. crystal 越快, 0x100-TH1 就要越大, TH1 也就越小. 至於 keil c 设定的 11.0592 MHz 是供 simulator 计算时间用的, 跟实际一点关系都没有. 你可试试把 keil 设成 generic 8052, crystal 可设成 999 MHz, 烧录看看跑起来有没有不一样~~~ ※ 编辑: ksmrt0123 来自: 219.68.71.218 (12/17 20:24) --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.161.50.245







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP