永发信息网

51单片机与PC机串行通信

答案:3  悬赏:50  手机版
解决时间 2021-03-03 07:59
要实现的功能如下:单片机给PC机发送字符55H,在PC机上看到后,用串口调试助手发送AAH给单片机,单片机接收到之后,再给PC机发送字符“K”。
我调试了两天,但怎么都调试不出来,波特率用9600,我编的程序如下,这个程序的调试结果不对。给大家参考下,大家帮帮我。。能帮我调试出来的分肯定给上了。
ORG 0000H
AJMP START
ORG 0023H
LJMP SERIALS
ORG 0030H
START:MOV SP,#5FH
MOV TMOD,#20H
MOV PCON,#80H
MOV TH1,#0FAH
MOV SCON,#50H
SETB TR1
SETB ES
SETB EA
ajmp $
SERIALS:
MOV A,#55H ;给PC机发送字符55H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,SBUF ; 等待PC机发送字符AAH,接到AA后,给PC机发送字符K
CJNE A,#0AAH,$
MOV A,#'K'
MOV SBUF,A
CLR RI
reti
END
回happycxz:
1,为什么要加上关总中断?
2,CJNE A,#0AAH,$ ;这一句要换掉,不然,你接收的不是0aaH,你就死在这了 这我也不明白,为什么会死掉?要换的话换成什么?看我改过的程序,换成那样行不?
3,MOV A,#'K' 这句话没问题的,就是把K的ASCII码发到A上
我按照你的意思,把程序改了下。不过调试的时候还是不行,麻烦你再看看
SERIALS:
CLR EA
MOV A,#55H
MOV SBUF,A
JNB TI,$
CLR TI
D1:JNB RI,$
MOV A,SBUF
CLR RI
CJNE A,#OAAH,D1
MOV A,#'K'
MOV SBUF,A
JNB TI,$
CLR TI
CLR RI
RETI
END

哈哈,我终于调出来了,原来是整个程序没能触发串口中断,在START里加个SETB TI,然后就可以了,谢谢happycxz的帮助!
最佳答案
去百度文库,查看完整内容>

内容来自用户:xy鸭头丫头

单片机与PC机串口通信(C51编程)
实训报告
学院名称:福建船政交通职业学院专业:11计算机控制技术题目:单片机与PC机串口通信组别:第一组组员姓名:池清清,黄倩滢,蓝春燕学号:114103101,114103111,114103116
指导教师:朱其祥,黄炳乐,武光信,陈明,任慧目录1实训要求与任务11.1要求11.2任务12程序代码13程序运行平台34总体设计35串行通信方案设计46 Proteus仿真57结论6摘要
串行口是计算机与外部设备之间进行数据交换的重要介质,所以串行通信在工程中有着广泛的应用。这种通信的实现,主要是靠上位PC机与下位单片机组成的二级系统通过RS232进行通信。此次设计通过计算机输入数据通过串口传送给单片机进而在LED上显示,使学生进一步巩固所学的单片机系统硬件知识,C语言程序设计方法,计算机通信原理,计算机可视化程序设计,综合性很强,学生得到很大的锻炼。
关键词:单片机PC机串口通信
1、掌握串行口的控制与状态寄存器scon
2、掌握特殊功能寄存器pcon
3、掌握串行口的工作方式及其设置
4、掌握串行口的破特率(bond rate)选择
实现PC机发送一个字符给单片机,单片机接受到后即在个位、十位数码管上进行显示,同时将其回发给PC机。要求:单片机收到pc机发来的信号后用串口中断方式处理,而单片机回发给while(!TI)
全部回答
SERIALS: ; 加上关总中断 MOV A,#55H ;给PC机发送字符55H MOV SBUF,A JNB TI,$ CLR TI ; 这里加上,等待RI=1的语句 MOV A,SBUF ; 等待PC机发送字符AAH,接到AA后,给PC机发送字符K CJNE A,#0AAH,$ ;这一句要换掉,不然,你接收的不是0aaH,你就死在这了 MOV A,#'K' ; 汇编中表示字符是这样吗?#'K' 请查证后再写 MOV SBUF,A ;为什么不加上等待发送结束? CLR RI reti END 加上的: 1,为什么要加上关总中断? 答:就怕在中断程序中又触发其它优先级更高的中断。 2,CJNE A,#0AAH,$ ;这一句要换掉,不然,你接收的不是0aaH,你就死在这了 这我也不明白,为什么会死掉?要换的话换成什么?看我改过的程序,换成那样行不? 答:CJNE A,#0AAH,$ 判断A里,如果不是你要的值0aaH 那程序就一直在原处,并且,程序是不会响应串口再次发送的数据,换成你写的这样,就可以:一直到上位机发AAH,才往下执行。可以的。 3,MOV A,#'K' 这句话没问题的,就是把K的ASCII码发到A上 我按照你的意思,把程序改了下。不过调试的时候还是不行,麻烦你再看看 另外,我多嘴一句,你这个程序很容易就死在中断程序里,汇编我不常用,看看是可以。 做双方通信,你要确定以下内容: 1、电路是否正常工作 2、波特率、起始位、停止位是否一致 3、用上位机小软件时,是否选择是字符发送接收还是十六进制数发送接收。 串口中断程序中,不要加入太多程序,建议: 串口中断程序中,写,判断是接收中断还是发送中断,是发送中断,执行空语句,是接收中断,接收到什么置相应标志位,然后主程序中判断标志位,作相应的处理,可以理解吗?
首先要看pc机有没有串口,即是电脑上的com口,这是rs232口,有的话,就很方便。 单片机的rxd,txd两个脚就是串行通信的引脚,用一片max232,或max202,把rxd,txd两脚接到max232上,组成一个rs232接口电路,max232的rxd,txd接到db9头上,再用一条串口线,连接单片机的db9头和电脑上的串口,也是一个db9头。 硬件连接好了,在单片机上就要写串行通信程序了。 这方面的资料,在百度知道里可以搜索到无数个。 如果电脑上没有串口,就得买一条usb转串口线了,usb一端插到电脑的usb口上,安装上驱动程序,这样,电脑就多出一个虚拟串口了。usb转串口线另一端就是db9头,就插到单片机的db9头上,也同样可以串行通信。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
益普利生牌螺旋藻片和碳酸氢钠片可以一起吃吗
十里香酒坊怎么去啊,有知道地址的么
用有了 的牵挂, 的生活 便 了 的 来造句
【水果运输保鲜】水果运输商如何保鲜水果
徽商银行个人网上银行怎么登录
为什么我总想吃方便面?
海螺牌和虎山牌水泥那个好?
林州市城郊乡田西峪学校在哪里啊,我有事要去
纽约比萨(白石洲店)地址在什么地方,想过去办
【膀胱的位置】膀胱的位置、形态和分部。
四柱大运
少儿美术班都开什么课程
科学岛路地址有知道的么?有点事想过去
1998年10月13日的本命年
下图的数学等式反映了谁的悲惨生活:A. 奴隶B
推荐资讯
杰西卡琼斯 正片片头曲叫什么?
一群人岛上,上面有三个僵尸还有猛鬼是哪部电
狼王有多大图片
长沙到杭州的k803次火车都经过那些站,急…
centos 怎么修改用户密码
大神们,魔域心悦庆典礼包怎么领取啊
搬新家的第一天全家人可以不在新房住吗
本科一个偏远地区211大学电子科学与技术专业
随缘饭店在哪里啊,我有事要去这个地方
荣达酒店我想知道这个在什么地方
孩子多大能扶站
牙套掉肚子里,要不要去医院检查,会有什么事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?