完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
SEND: MOV A,#3FH
MOV SBUF,A JNB ti,$ ;与PC机进行握手 CLR TI JNB RI,$ CLR RI MOV A,SBUF CJNE A,#2EH,SEND MOV A,R7 MOV R3,A ;对总字节数进行暂存 MOV SBUF,A JNB TI,$ CLR TI MOV R6,#00H MOV R0,#BLK1 ;数据存取位置 SEND1: MOV A,@R0 MOV SBUF,A ;发送数据 JNB TI,$ CLR TI ADD A,R6 ;校验 MOV R6,A INC R0 DJNZ R7,SEND1 ;判断是否已经传送完 MOV A,R6 MOV SBUF,A JNB TI,$ CLR TI MOV A,SBUF CJNE A,#46H,SEND3 ;通PC机的应答进行判断 SEND2: MOV R0,#BLK1 ;重新再传数据 MOV R6,#00H MOV A,R3 MOV R7,A AJMP SEND1 SEND3: RET |
|
相关推荐
4个回答
|
|
这是一个用RS232串口与PC机通信的子程序。通信开始时先发送#3F的握手数据,PC机收到后返回#2E的数据,单片机收不到就反复发送等待,直到收到#2E的数据表示握手成功。握手成功后先发送需要传送的总字节数R7,然后初始化发送信息,待发送的数据地址保存在R0中,校验信息保存在R6中。逐个发送需要发送的数据(R7用来统计已发送个数),每发送一个数,将该数与R6相加,最后得到所有已发送数据和的后8位作为校验数据也发送给PC机,PC机将收到的数据也进行相同的运算,将运算结果与收到的校验数进行比较,结果相同标示收到的数据无误,返回一个非#46H的数给单片机,单片机收到确认信息后退出通信子程序。若PC机收到的校验码与自身计算的校验码不一致,返回#46H的数给单片机,单片机收到误码信息后重新初始化发送程序,再次重新开始传送数据的全过程(不含握手信号)。仅供参考。
|
|
|
|
非常感谢,你有rs485与PC机通行的子程序吗?非常感谢您,这点程序弄得都愁死我了
|
|
|
|
我需要的是一个RS485的子程序,谢谢您
|
|
|
|
汇编啊 好深奥啊
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
stm32f407+ksz8863rlli概率性ping不通
698 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-常见网络服务搭建之NFS服务搭建
374 浏览 0 评论
求助:辉芒微芯片 FDM B11GBMH 的信息及开发环境安装
375 浏览 0 评论
918 浏览 0 评论
嵌入式 学习-飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之输入输出重定向
774 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11306 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-29 06:57 , Processed in 0.712115 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号