标题: 串口助手发数据1给单片机接收机,接收方收到后P3.2取反,不能接收分析原因? [打印本页]

作者: chydn2000    时间: 2023-7-20 14:24
标题: 串口助手发数据1给单片机接收机,接收方收到后P3.2取反,不能接收分析原因?
接收采用查询方式

main:mov scon,#50h;串口方式1,允许接收

     mov tmod,#20h;00100000B,定时器T1自动重装入8位定时器,方式2
     mov th1,#0fdh;波特率9600
     mov tl1,#0fdh

     setb tr1

jieshou:jnb ri,$;在此处接收主机数据
            clr ri
             mov a,sbuf
             cjne a,#1,jieshou
             cpl p3.2
             lcall d250ms
             ajmp jieshou

   d250ms:mov 31h,#250
       p2212:mov 32h,#250
       wt22:nop
       nop
        djnz 32h,wt22
       djnz 31h,p2212
        ret


        end


作者: tyrl800    时间: 2023-7-20 15:52
主要检查通信双方使用的晶振是否一致,这点很容易搞错
作者: chydn2000    时间: 2023-7-20 16:10
tyrl800 发表于 2023-7-20 15:52
主要检查通信双方使用的晶振是否一致,这点很容易搞错

电脑端的串口助手发送数据1给单片机,让CPL p3.2
作者: tyrl800    时间: 2023-7-20 17:01
chydn2000 发表于 2023-7-20 16:10
电脑端的串口助手发送数据1给单片机,让CPL p3.2

按你的程序波特率数据,单片机上晶振一定是11.0592MHz才正确
作者: lkc8210    时间: 2023-7-20 18:01
chydn2000 发表于 2023-7-20 16:10
电脑端的串口助手发送数据1给单片机,让CPL p3.2

是Hex模式吗?
作者: cnfloatleaf    时间: 2023-7-20 20:01
            clr ri
             mov a,sbuf
             cjne a,#1,jieshou
             cpl p3.2

     c程序的CJNE A,#1,JIESHOU是数据不等于1,跳到jieshou,也就是说只有数据等于1了,才回到下一步P32取反。不等于1都跳到jieshou了,不会到P32取反
作者: chydn2000    时间: 2023-7-20 21:58
接收到数据后判断,等于1后CPL P3.2,不为1等待
作者: chydn2000    时间: 2023-7-21 06:54
波特率9600,晶体11.0592MHZ,还是没有解决问题,大家给看看程序哪里有问题。采用查询串口方式
作者: lzts88    时间: 2023-7-21 09:20
;;;            mov a,sbuf
;;;             cjne a,#1,jieshou
屏蔽这二句试下, 收到数据就取反, 因为你后面跟足够长的延时, 串口助手可一次发几个数据
如灯亮, 检查你波特率和数据收发是否不一致(发1只能用HEX方式), 灯不亮, 看手册检查程序
串口初始化部分
作者: lkc8210    时间: 2023-7-21 10:19
chydn2000 发表于 2023-7-21 06:54
波特率9600,晶体11.0592MHZ,还是没有解决问题,大家给看看程序哪里有问题。采用查询串口方式

试改为
cjne a,#31H,jieshou
作者: chydn2000    时间: 2023-7-21 20:28
一楼,二楼的建议都试过了,不是这个原因。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1