资源描述:
《单片机与无线通信模块串口通信发送部分子程序.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、单片机与无线通信模块串口通信:发送部分子程序ORG1000HTBLOCKDATA20HLENDATAIEHSTART:MOVSCON,#80H;设置串行口工作方式MOVPCON,#80H;波特率设置MOVR0,#TBLOCK;数据起始地址送RMOVR2,#LEN;数据长度送R2MOVR3,#OOH;存入累加器和寄存器RACALLTXSU;调用发送子程序SJMP$:待机ORG1100HTXSUB:PUSHACC;保护A中内容PUSHPSW;保护PSW中内容CLRTI;TI清0TXLEN:MOVSBUF,R2;发送数据块长度JNBTI,$;
2、等待发完CLRTI:发送完TI清0TXD:MOVA,@CRO:发送字符送AMOVSBUF,A;启动发送JNBTI,$;等待发完CLRTI;发送完TI清0ADDA,R3;求累加和MOVR3,A:存入R3INCRO;字符块指针加1DJNZR2,TXD;若字符未发完,则继续TXSUM:MOVSBUF,R2;若发完,发累加和JNBTI,$:等待累加和发完CLRTI;若发完,TI清0MOVR3,#OOH;累加和寄存器清0POPPSW;恢复PSW内容POPACC;恢复ACC内容;RETI:中断返回END⑵单片机接收部分子程序ORGOOOOHBLOC
3、KDATA,30H;设置T1工作方式START:MOVTMOD,#20H;设置时间常数初值MOVTH1,#OF4HMOVTL1,#OF4HSETBTR1;启动TIMOVSCON,#ODOH;串行口工作于方式3接收MOVPCON,#80H;使SMOD=1MOVR0,BLOCK;接收数据区始址送ROMOVR3,#OOH;累加器寄存器R3清0ACALLRXSUB;转接收子程序SJMP$待机RXSUB:CLRRI;RI清0RXLEN:JNBRI,$;等待接收数据块长度字节CLRRI;接收完后清RIMOVA,SBUF;数据块长度送AMOVR2,A
4、;存入R2ADDA,R2;开始求累加和MOVR3,A;累加和存入R3RXD:JNBRI,$;等待接收字符CLRRI;接收完清RIMOV@RO,A;接收字符存入内存ADDA,R3;求累加和MOVR3,A;存入R3INCRO;接收数据区加1DJNZR2,RXD:若没有接收完,则继续RXSUM:JNBRI,$:等待接收累加和CLRRI;接收完RI清0MOVA,SBUF;接收累加和送AXRLA,R3;比较两累加和JNZERROR:若不等,转出错处理RETERROR:ACALLERRSTR;转发送出错指示信息DBOD,OAHDB‘WRONGMAS
5、SAGE'DB1BHTXERRSUM:MOVA,R3;回送累加和MOVSBUF,ARET;返回ERRSTR:POPDPH:弹出CR的地址POPDPLCLRAMOVCA,@A+DPTRLOOP:MOVSBUF,A:发送出错信息JNBTI,$CLRTIINCDPTR;取下个待发字符CLRAMOVCA,@A+DPTRCJNEA,#IBH,LOOPMOVA,#01JMP@A+DPTREND