******************************************************************************* 实验十八 单片机自发自收串口通信实验 ******************************************************************************* 串口按全双工方式收、发数据,要求将内部RAM中30H单元开始的20个数据发送出去,同时自己接收该20个数据,并把它们存入内部RAM中50H开始的数据单元中,波特率为2400bps,fosc=11.0592M ,发送与接收数据采用中断方式进行。响应中断后,通过检测是RI置位还是TI置位来确定是进行数据发送或是接收数据。 ⑴ 自发自收汇编调试程序如下: ORG 0000H LJMP MAIN ORG 0023H AJMP SBS1 ;转至中断服务子程序 ORG 0050H MAIN: MOV SP,#60H MOV TMOD,#20H ;定时器 1 设为模式2 MOV TL1,#0FAH ; MOV TH1,#0FAH ;置定时器初值 SETB TR1 ;启动 T1 MOV SCON,#50H ;将串口设置为方式1,REN=1 MOV R0,#30H ;发送数据区首地址送R0 MOV R1,#50H ;接收数据区首地址送R1 MOV R2,#20H ;置发送数据个数送R2 LCALL SOUT ;调用发射子程序 SETB ES ; SETB EA ;开中断 LOOP: AJMP LOOP ;等待中断 ORG 0100H ;中断服务子程序 SBS1: JNB RI,SEND ;TI=1,为发送中断 ACALL SIN ;RI=1,为接收中断 SJMP NEXT SEND: ACALL SOUT ;调用发送子程序 NEXT: RETI SOUT: CLR TI ;清发送中断标志 DJNZ R2,LOOP1 ;数据未发送完,继续发送 SJMP RR1 ;发送完返回 LOOP1: MOV A,@R0 ;取发送数据到A MOV SBUF,A ;发送数据 INC R0 ;指向下一个数据 RR1: RET SIN: CLR RI ;清接收中断标志 MOV A,SBUF ;读接收数据 MOV @R1,A ;存入数据缓冲区 INC R1 ;指向下一个存储单元 RET ⑵ RS232 通信芯片的测试 该芯片把TTL 电平转换成为RS232 电平,或把RS232 电平转换成TTL 电平。 RS232 电平标准是:-12V∽-15V 为逻辑“1”, +12V∽+15V 为逻辑“0”。 在 15 米范围内,最大传输波特率为20KB/S。 为了看到RS232 芯片各相关引脚波形,在参考程序的SEND:ACALL SOUT 后应增加一条 AJMP SEND 指令,在该处循环发送数据,则 MAX232 芯片的11 脚上应能测到0V∽+5V的脉冲波,在 14脚上可看到-10V∽+10V的脉冲波。若 D型头 2∽3短接,在 MAX232芯片的13脚上可看到-10V∽+10V的脉冲,12脚上可看到0V∽+5V的脉冲波,并可一...