串行通信接收不到,是哪里错了?

stefaniewhh 2007-03-21 04:59:41
我用汇编语言编了一段串行通信的程序,可是什么反应也没有,不知道错在哪里?程序如下:
ORG 00H
SJMP START
ORG 30H
START:
MOV P1,#0FH
MOV TMOD,#20H
MOV TL1,#0FCH
MOV TH1,#0FCH
MOV PCON,#00H
CLR ES
SETB TR1
MOV SCON,#50H
ML0:
JBC RI,ML1
SJMP ML0
ML1:
MOV A,SBUF
MOV P1,A
RET
END
我该怎样调试呢?用仿真机测出来的p1口的值都是不对的,我是用串口调试助手发数据的。
...全文
286 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
stefaniewhh 2007-03-22
  • 打赏
  • 举报
回复
会是MAX232坏了吗
stefaniewhh 2007-03-22
  • 打赏
  • 举报
回复
这是一块成熟的电路板,应该没错
fclvgyfe 2007-03-22
  • 打赏
  • 举报
回复
MAX232没接对.看手册.
stefaniewhh 2007-03-22
  • 打赏
  • 举报
回复
我该怎样测试呢?用示波器怎样测试呢?我可以用示波器检测到电脑串口发出的信号,但是我发现这些信号经过MAX232就没有了,也就是说在MAX232的输出管腿(和单片机相连的管脚)上测得电平是一个定值,没有波形,我该怎么测呢?
lbing7 2007-03-22
  • 打赏
  • 举报
回复
用串口,在走之前把脚印给扫了...

另:请把汇编语言再看看

MOV A,SBUF
MOV P1,A
RET;这里为什么有这个?


调试,你可以写到片子里然后在,
MOV P1,A
SJMP $;加这一句,让机器停下来
或者靖P1的数据再送回PC
fclvgyfe 2007-03-21
  • 打赏
  • 举报
回复
给段标准初始化程序,供参考,执行完了可以在串行中断里收发:
MOV SCON,#0F0H ;SERIAL PORT CTRL,9 BIT,SM2=1,CAN RECEIVE
MOV PCON,#00H ;SMOD=0,NO DOUBLE BAUD RATE
MOV TMOD,#21H ;T0 IS MODE 1,16 BIT TIMER;T1 IS MODE 2,8 BIT TIMER
MOV TCON,#50H ;INTERRUPT SIGN BIT IS ALL CLR
MOV IP,#10H ;X X PT2 PS PT1 PX1 PT0 PX0
MOV IE,#12H ;EA X ET2 ES ET1 EX1 ET0 EX0
MOV PSW,#00H
MOV TH0,#70H ;T0 TIME IS 5MS,2MS IS 0F8H 0CDH
MOV TL0,#00H ;70H 00H IS 40MS,0B8H 00H IS 20MS
MOV TH1,#0FDH ;9600 BAUD RATE
MOV TL1,#0FDH
SETB SM2 ;接收地址字节

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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