广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 19889 个阅读者
 
<<   1   2   3  下页 >>(共 3 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
tgs0910 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x61
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x1
有关于8051和ascii的问题谢谢
小弟我的石英晶体是 11.0592我想用19200bps的速率
想 p2.1 on时就发射30h和31h
这样写对吗
如果收到30h时 p1.1就on
收到31h时 p1.2就on  这要如何写
收到的ascll码是0还是1或是其他
请会的大大帮帮小弟谢谢
---------------------- ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



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

-13 应该为 F3, 算法为 2 补数 (一般电脑的负数都用 2 补数来算)
13 = 0Dh = 00001101 取 1 补数(就是反相) -> 11110010 再加 1 就为 2 补数 -> 11110011 = F3h
另外一种算法为 100h - 0Dh = F3h
你可用 Windows 的小算盘, 选择检视->工程型. 输入 -13 然后换成 16 进位看最后两位就是 F3h

想 p2.1 on时就发射30h和31h
这样写对吗?
-> 不对, 你只有读 p2.1 但没有判别 1 或 0, 一般按键按下应该拉为 Low, 所以应该要判别 p2.1 为 0 时才动作

如果收到30h时 p1.1就on
收到31h时 p1.2就on  这要如何写???
->
判别 ri 就可以知道有没有收到资料, 但你的 SCON 中 REN 设为 0 根本收不到资料
所以 scon = 01111000b
接收很简单
jnb ri, checkp21
clr ri
mov a, sbuf
cjne a, #30h, chkrcv31h
setb p1.1
jmp checkp21
chkrcv31h:
cjne a, #31h, checkp21
setb p1.2
checkp21:
setb p2.1 ; pull high p2.1 for input
jnb p2.1, START_9 ; 因为你的程式按下 p2.1 送完资料就停了, 所以不考虑这个按键是否已处理过的问题

收到的ascll码是0还是1或是其他
-> 送什么就收到什么, 电脑送 Ɔ', 51 就收到 30h 你也可以写成 Ɔ' 都一样

此文章被评分,最近评分记录
财富:100 (by codeboy) | 理由: 很热心的回答喔~^^给你一些奖励喔~请继续在此帮忙喔~^^thx


献花 x0 回到顶端 [1 楼] From:台湾中华电信 | Posted:2006-03-28 00:45 |
tgs0910 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x61
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

首先非常谢谢大大的帮忙
但是小弟还有一点小问题要麻烦大大的帮忙
不知道可不可以
请大大不令赐教帮帮小弟 谢谢


-> 不对, 你只有读 p2.1 但没有判别 1 或 0, 一般按键按下应该拉为 Low,
所以应该要判别 p2.1 为 0 时才动作



START_2:MOV     P2,#11111111B
    SETB   C
    MOV     C,P2.1
    jc     start_2
    jnc     start_9
这样写对吗
如果不对请大大帮帮小弟改一下好吗    
   


如果收到30h时 p1.1就on
收到31h时 p1.2就on  这要如何写???


->
判别 ri 就可以知道有没有收到资料, 但你的 SCON 中 REN 设为 0 根本收不到资料
所以 scon = 01111000b
接收很简单
jnb ri, checkp21     若ri不等于零则跳checkp21
clr ri             把ri设为零
mov a, sbuf         把sbuf的内容存到a里
cjne a, #30h, chkrcv31h 若a不等于30h时就跳到chkrcv31h
setb p1.1           把p1.1设为1
jmp checkp21         跳到check21
chkrcv31h:
cjne a, #31h, checkp21 若a不等于31h时就跳到checkp21h
setb p1.2           把p1.2设为1
checkp21:
setb p2.1 ; pull high p2.1 for input
jnb p2.1, START_9 ; 因为你的程式按下 p2.1 送完资料就停了,
所以不考虑这个按键是否已处理过的问题

请问一下我这样的写法
不是应该按下p2.1是就重复发送30h和31h吗


请问一下这最后两行是什么意思
checkp21:
setb p2.1 ; pull high p2.1 for input
jnb p2.1, START_9 ;
这样写的话不是永远p2.1等于1嘛
也永远不会跳到start_9嘛



那我想p2.1等余零时就发射30h和31h
等我收到30h时就p1.1亮
  收到31h时就p1.2亮是不是这样写
  我是用副控制
    ORG   00h          
    MOV   TMOD,#00100000B

    MOV   TH1,#0FDH    
    SETB   TR1      
    ORL   PCON,#80H
    MOV   SCON,#01111000B


START_2:MOV   P2,#11111111B
    SETB   C
    MOV   C,P2.1
    jc     start_2
    Jnc   START_9
   

START_9:mov   dptr,#table  
next:   mov   a,#0      
    movc   a,@a+dptr  
    cjne   a,#$,trans
    RET        
NEXT2: jnb   ri, chkp21    
    clr   ri            
    mov   a, sbuf        
    cjne   a, #30h, chk31h
    CLR   p1.1          
    jmp   chkp21        
chk31h: cjne   a, #31h, chkp21  
    CLR   p1.2          
chkp21: ORL   P2,#11111111B


trans: mov   sbuf,a    
    jnb   ti,$        
    clr   ti        
    inc   dptr        
    ajmp   next      

table: DB     30h
    DB     31h
    DB     $
如果我要收到30h和31h时on p1.3
    收到30h时on p1.1
    收到31h时on p1.2
要如何写谢谢


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

START_2:MOV   P2,#11111111B
  SETB   C
  MOV   C,P2.1
  jc   start_2
  jnc   start_9
这样写对吗
如果不对请大大帮帮小弟改一下好吗  
->
这样写也可以, 但既然 mov c, p2.1 为何还要 setb c
有了 jc start_2 下一行可以写 jmp start_9 也不会错 (不是 1 就是 0 这在数位逻辑不会错吧)
不过一般会用我下面的写法
checkp21:
setb p2.1 ; pull high p2.1 for input
jnb p2.1, START_9 ;
这样写的话不是永远p2.1等于1嘛
也永远不会跳到start_9嘛
-> 当外部输入拉为 Low 的话, 你读到的就一定为 Low
setb p2.1 就跟你的 MOV   P2,#11111111B 一样意思为pull high
在 8051 要读外部输入一般都会先将此 port 输出为 High, 然后由外部输入拉为 Low

那我想p2.1等余零时就发射30h和31h
等我收到30h时就p1.1亮
收到31h时就p1.2亮是不是这样写
我是用副控制

  ORG   00h      
  MOV   TMOD,#00100000B

  MOV   TH1,#0FDH  
  SETB   TR1    
  ORL   PCON,#80H
  MOV   SCON,#01111000B


START_2:MOV   P2,#11111111B
  SETB   C
  MOV   C,P2.1
  jc   start_2
  Jnc   START_9
 

START_9:mov   dptr,#table  
next:   mov   a,#0    
  movc   a,@a+dptr  
  cjne   a,#$,trans
  RET      
-> 我没看到你用 call, 为何要用 ret

NEXT2: jnb   ri, chkp21  
  clr   ri        
  mov   a, sbuf      
  cjne   a, #30h, chk31h
  CLR   p1.1      
  jmp   chkp21      
chk31h: cjne   a, #31h, chkp21  
  CLR   p1.2      
chkp21: ORL   P2,#11111111B
-> 下面怎么直接到 trans 了??? 加个 jmp 吧!

trans: mov   sbuf,a  
  jnb   ti,$      
  clr   ti      
  inc   dptr      
  ajmp   next    

table: DB   30h
  DB   31h
  DB   $
如果我要收到30h和31h时on p1.3
  收到30h时on p1.1
  收到31h时on p1.2
要如何写谢谢
->
on p1.1 应该是 setb p1.1 吧? 还是你输出有反相???

如果我要收到30h和31h时on p1.3
-> 你说的是收到 30h, 31h 两个 bytes 后 p1.3 要 ON 吗?
你可以在收到 30h 设个 flag 然后再收到 31h 时判别该 flag 是否有设定就可以知道是否收到 30h 31h
如果收到其他资料要记得将该 flag 清除


献花 x0 回到顶端 [3 楼] From:台湾中华电信 | Posted:2006-03-29 11:05 |
tgs0910 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x61
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

谢谢大大的帮忙
          ORG   00h    
            MOV   TMOD,#00100000B
            MOV   TH1,#0FDH  
            SETB   TR1  
            ORL   PCON,#80H
            MOV   SCON,#01111000B

START_9:   mov   dptr,#table  
next:       mov   a,#0  
            movc   a,@a+dptr  
            cjne     a,#$,trans
            jmp     start_9

NEXT2:     jnb     ri, chkp21  
          clr       ri      
          mov     a, sbuf    
          cjne     a, #30h, chk31h
          CLR       p1.1    
          jmp       chkp21    
chk31h:   cjne     a, #31h, chkp21  
          CLR       p1.2

chkp21:   setb p2.1 ; pull high p2.1 for input
          jnb p2.1, START_9 ;


   
trans:     mov     sbuf,a  
          jnb       ti,$    
          clr       ti    
          inc       dptr    
          ajmp     next  

table:     DB       30h
          DB       31h
          DB       $
这样对嘛

你可以在收到 30h 设个 flag 然后再收到 31h 时判别该 flag 是否有设定就可以知道是否收到 30h 31h
如果收到其他资料要记得将该 flag 清除

可以在说的清楚一点嘛
小弟太笨了
请大大多帮忙感激不尽谢谢


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

怎么越写越奇怪???
修改如下:
    ORG   00h  
    MOV   TMOD,#00100000B
    MOV   TH1,#0FDH  
    SETB   TR1  
    ORL   PCON,#80H
    MOV   SCON,#01111000B
    clr   20h.0
START:
    jnb   ri, checkp21
    clr   ri
    mov   a, sbuf
    cjne   a, #30h, chkrcv31h
    setb   p1.1
    setb   20h.0
    jmp   checkp21
chkrcv31h:
    cjne   a, #31h, rcvother
    setb   p1.2
    jnb   20h.0, checkp21
    setb   p1.3         ; 收到 30h, 31h
    clr   20h.0
    jmp   checkp21
rcvother:
    clr   20h.0       ; 非 30h, 31h
checkp21:
    setb   p2.1         ; pull high p2.1 for input
    jnb   p2.1, START_9
    jmp   START
   
START_9:
    mov   dptr, #table
next:   mov   a,#0
    movc   a,@a+dptr
    cjne   a,#'$',trans
    jmp   START
     
trans: mov   sbuf,a
    jnb   ti,$
    clr   ti
    inc   dptr
    ajmp   next
table: DB     30h, 31h, '$'


献花 x0 回到顶端 [5 楼] From:台湾中华电信 | Posted:2006-03-30 01:00 |
tgs0910 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x61
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

谢谢大大的帮忙
不知大大是否有用过 rs485 和8051来传输
如果有的话请大大帮小弟看一下好吗
我把8051的 rx接485的第一支脚
          tx 接485的第四支脚
          485的第二和第三脚接0时input
                            接1时output
                第五脚接地
                第八脚接+5v
                第六脚接d+
                第七脚接d-
这样对吗
但是我用两颗8051这样接却不能用
还是第六七脚要在接啥东西
麻烦大大帮帮小第谢谢


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

RS485 IC 第六七脚就是真正的讯号的输出/输入(差动讯号).
因为 485 为两线式 Bus 讯号, 同时只能有一方送讯号(半多工)
所以第三脚 DE 就为发送时拉 High, 其他时候拉 Low (允许别人发送)
第二脚 /RE 为接收致能(Receive Enable), 必须拉为 Low 才可以接收.

两个 8051 透过 RS485 来通讯, 就必须将两个板子上 RS485 D+ D- 透过两芯线接在一起才会通

以你的程式应该有送有收吧? 还是只有一个送一个收???
如果只有一送一收那你RS485的接法应该可以用!

一般 RS485 脚位的接法, 都是第三脚接到 8051 的某个 I/O, 发送时拉 High
第二脚直接接地, 永远可以接收.

假设 P1.7 接到 RS485 第三脚 DE
setb p1.7 ; DE 拉 High 发送
mov sbuf, a
jnb ti, $
clr ti
clr p1.7 ; DE 拉 Low 允许其他人发送


献花 x0 回到顶端 [7 楼] From:台湾中华电信 | Posted:2006-03-31 12:35 |
tgs0910 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x61
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

ORG   0000H
    MOV   TMOD,#00100000B
    MOV   TH1,#230
    MOV   TL1,#230
    SETB   TR1
;
    MOV   SCON,#01110000B
;
   
LOOP:   CLR   RI
    CLR   TI
    MOV   SBUF,P2
WAIT1: JNB   TI,WAIT1
;
WAIT2: JNB   RI,WAIT2
   
;
    ORL   P1,#11111111B    
    MOV   A,SBUF
    JNB   ACC.0,CASE0
    JNB   ACC.1,CASE1
    JNB   ACC.2,CASE2
    JNB   ACC.3,CASE3
    JNB   ACC.4,CASE4
    JNB   ACC.5,CASE5
    JNB   ACC.6,CASE6
    JNB   ACC.7,CASE7
    AJMP   LOOP

 
CASE0: CLR   P1.0
    AJMP   LOOP
CASE1: CLR   P1.1
    AJMP   LOOP
CASE2: CLR   P1.2
    AJMP   LOOP
CASE3: CLR   P1.3
    AJMP   LOOP
CASE4: CLR   P1.4
    AJMP   LOOP
CASE5: CLR   P1.5
    AJMP   LOOP
CASE6: CLR   P1.6
    AJMP   LOOP
CASE7: CLR   P1.7
    AJMP   LOOP


小弟是做一发一送
这是小弟的程式两颗都一样
但是小弟照大大的说法接
把a的第三脚接地
把b的第三脚接正
但是为何我把b的p2.1 on为零时
却两颗8051的1.都会亮
如果把b的第二支脚也接正时会出现乱亮的问题
但我不接75176时却不会有这个问题
请大大帮帮小弟谢谢


[ 此文章被tgs0910在2006-04-03 18:42重新编辑 ]


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

你的 SCON 中的 REN 没有设为 1 可以接收到任何资料吗???
我不晓的你原本的 b 的第二脚 /RE 是否接地?
因为 485 有个特性自己送的资料自己会收到, 所以 b 的第二脚 /RE 应该接 High 才不会收到自己的资料
8051 的 P0, P2 为开集极(Open drain), 所以一定要 pull high (可用 4.7K 电阻接 Vcc)


献花 x0 回到顶端 [9 楼] From:台湾中华电信 | Posted:2006-04-04 01:34 |

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