微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 讲解一下程序

讲解一下程序

时间:10-02 整理:3721RD 点击:
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

这是一个用RS232串口与PC机通信的子程序。通信开始时先发送#3F的握手数据,PC机收到后返回#2E的数据,单片机收不到就反复发送等待,直到收到#2E的数据表示握手成功。握手成功后先发送需要传送的总字节数R7,然后初始化发送信息,待发送的数据地址保存在R0中,校验信息保存在R6中。逐个发送需要发送的数据(R7用来统计已发送个数),每发送一个数,将该数与R6相加,最后得到所有已发送数据和的后8位作为校验数据也发送给PC机,PC机将收到的数据也进行相同的运算,将运算结果与收到的校验数进行比较,结果相同标示收到的数据无误,返回一个非#46H的数给单片机,单片机收到确认信息后退出通信子程序。若PC机收到的校验码与自身计算的校验码不一致,返回#46H的数给单片机,单片机收到误码信息后重新初始化发送程序,再次重新开始传送数据的全过程(不含握手信号)。仅供参考。

非常感谢,你有rs485与PC机通行的子程序吗?非常感谢您,这点程序弄得都愁死我了

我需要的是一个RS485的子程序,谢谢您

汇编啊 好深奥啊

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top