一个关于用delphi向串口发数据的问题

1978322 2000-05-23 01:18:00
我在delphi下安装了mscomm这个ocx控件,用它向串口发数据(串口接了一个我自己制作的单片机电路),不过没次接收到的数据都有错误,我也调了波特率,但是还是不行,有那为大虾能帮我解决!
...全文
244 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
meijg 2000-05-29
  • 打赏
  • 举报
回复
对于你的单片机程序,我认为有以下几点问题,现提出来与你交流一下:
1、在计算波特率的时候,不知你用的是多少,据我计算可能是2400bps,
这要基于以下几个条件:smod=1、fosc=11.059mhz、th1=e8h(这是你程序里的是设定值)
在这里smod=1是很关键的,如果没有将smod设为1,则计算出的波特率就为1200bps,
不知是否与你的想法吻合。
2、另外我发现在你的LJ1程序段里,好象有些问题,提出来分析一下:
当跳转进入LJ1时,dz中为从pc机收到的数据,接着以dz中的值来累加30h中的值,但是在判断条件
cjne a,30ah,lj处会有问题,因为你的30h内的初始值是#0fh,累加的结果无法满足你的条件(逢十进一)
这样送到显示程序的数就不是你期望的值了,是否应将30h的初始值设为00h(31h、32h也是同样的)
3、关于串行方式的选择我想谈谈我的看法,不知你选择方式3是什么用意,在sm2=1的情况下,若第九位
数据(RB8)为0时,RI是不置位的,也就是单片机认为没有数据,不知在pc端你是怎么处理的?
我建议如果没有特别的要求,还是使用方式1比较好一点。
最后希望能多交流,在这里能遇到做单片机的满珍贵。
有什么问题可以直接E-mail:meijg@elong.com
1978322 2000-05-27
  • 打赏
  • 举报
回复
下面是我写的单片机接收程序,不知有没有错误,请各位指点!
PML EQU 0D000H
PA EQU 0D001H
PB EQU 0D002H
PCC EQU 0D003H
DBPS EQU 0E8H
TX BIT 20H.0
DZ EQU 36H
ORG 0000H
AJMP MAIN
ORG 0023H
AJMP INTU
ORG 0100H
MAIN:MOV R0,#20H
MOV R7,#60H
MAIN0:MOV @R0,#00H
INC R0
DJNZ R7,MAIN0
MOV SP, #40H
SETB EA
SETB ES
MOV TMOD,#20H
MOV TH1,#DBPS
MOV TL1,#DBPS
SETB TR1
MOV SCON,#0D0H
MOV 30H,#0FH
MOV 31H,#0DH
MOV 32H,#0CH
MOV 33H,#0BH
MOV 34H,#0AH
MOV 35H,#0FH
GOOD:JB TX,LJ1
AJMP LED

INTU:JBC RI,RR1
JBC TI,RR2
RETI
RR1:MOV A,SBUF
MOV DZ,A
SETB TX
RR2:RETI

LJ1:MOV R4,DZ
LJ0:INC 30H
MOV A,30H
CJNE A, #0AH,LJ
MOV 30H,#00H
INC 31H
MOV A,31H
CJNE A, #0AH,LJ
MOV 31H,#00H
INC 32H
LJ:DJNZ R4,LJ0
MOV 33H,#0FH
MOV 34H,#0FH
MOV 35H,#0FH

LED:MOV DPTR,#PML
MOV A,#0FH
MOVX @DPTR,A
MOV R0,#30H
MOV R3,#01H
MOV A,R3
LD02:MOV A,#0FFH
MOV DPTR,#PA
MOVX @DPTR,A
MOV A,R3
MOV DPTR,#PCC
MOVX @DPTR,A
MOV A,@R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV DPTR,#PA
MOVX @DPTR,A
ACALL DL
INC R0
MOV A,R3
JB ACC.5,LD1
RL A
MOV R3,A
AJMP LD02
LD1:AJMP GOOD
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
DB 90H,0A3H,0A3H,0A1H,86H
DB 0FFH

laolie 2000-05-27
  • 打赏
  • 举报
回复
双方的定义要一致 如都是asc码 or 都是十六进制数 萡特率一致等
1978322 2000-05-27
  • 打赏
  • 举报
回复
InputMode好象是PC机接收的属性,我说的是单片机接收到PC机发送的数据有错误!
Un1 2000-05-23
  • 打赏
  • 举报
回复
必须设置InputMode为comInputModeBinary以及确认Settings格式正确
flylt 2000-05-23
  • 打赏
  • 举报
回复
详细点

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧