1、利用中断实现双机通讯1 实验目的:1 熟悉单片机工作原理;2 熟练掌握串口接口的工作方式;3 熟练掌握四种工作方式下的波特率的计算和设置;4 了解有关串口工作的寄存器;2 实验器材:1 单片机一片,装有汇编软件的电脑一台,烧写软件及下载线,导线若干3 实验内容:由一片单片机发送数据,由另一片单片机接收数据,由开关控制发送数据,实现开关按下后弹开后发送一个数据(要求:发送方每发送一个数据由 p1.0 控制led 亮一次,接收方把接受的数据送至数码管显示)程序清单:发送方:/*发送程序程序效果:发送数值给从机,让从机显示该数值*/ORG 0000HLJMP STARTORG 0023HSJMP L
2、OP1ORG 0030HSTART: MOV TMOD,#20H /定时器 1 工作在方式 2MOV TH1,#0F4H /设置波特率为 4800MOV TL1,#0F4HMOV PCON,#80H /把 SMOD 置 1MOV SCON,#40H /串口工作在方式 1,允许接收CLR ET1 /GUAN 定时器 1CLR ES /允许串行口中断SETB TR1 /启动定时器MOV DPTR,#TAB /赋表首地SETB EAMAIN: JNB P3.6,KEY2 /判断按键是否按下LJMP MAINKEY2: LCALL DELAY10MS /延时,消抖JB P3.6,MAIN /再判断按键
3、是否真的按下WAIT: JNB P3.6,WAIT /等待按键松手SETB ESMOV A,#00MOV SBUF,ASJMP MAINLOP1: PUSH PSW MOV A,#00 /清零MOVC A,A+DPTRCLR TIMOV SBUF,ACLR P1.0ACALL DELAYCJNE A,#,SENDDATA /判断数据是否发送完MOV DPTR,#TAB SETB P1.0ACALL DELAY CLR ESPOP PSWRETISENDDATA: INC DPTRSETB P1.0ACALL DELAYCLR ESPOP PSWRETIDELAY: MOV 63H,#9FHDE
4、2: MOV 64H,#9FHDE1: DJNZ 64H,DE1DJNZ 63H,DE2RETDELAY10MS: MOV 65H,#200DE3: MOV 66H,#250DE4: DJNZ 66H,DE4DJNZ 65H,DE3RETTAB: DB 0xc0,0xf9,0xa4,0xb0,0x99 /数码管显示的数值 DB 0x92,0x82,0xf8,0x80,0x90,#END接收方:/*接收程序程序效果:一个数码管显示主机发送来的数值*/ORG 0000HLJMP STARTORG 0023HSJMP DISPORG 0030HSTART: MOV TMOD,#20H /定时器 1
5、工作在方式 2MOV TH1,#0F4H /波特率为 4800,发送与接收的波特率要相等MOV TL1,#0F4HMOV PCON,#80H /SMOD 为 1MOV SCON,#50H /串口工作在方式 1,允许接收CLR ET1 /开定时器SETB ES /允许串口中SETB TR1 /启动定时器CLR RI /接收中断标志位清零SETB EASJMP $DISP: PUSH PSWCLR RI /接受完了,接收中断标志位清零DISP1: MOV A,SBUF /同时把该数据送给 AMOV P2,#7FH /点亮一个数码管MOV P0,A /显示该数值 LCALL DELAY /延时 0.1s,便于眼睛能够看清该数据,时间适宜即可MOV P0,#00 /消隐JNB RI,DISP1 /判断下一个数据是否接受完,没有则继续显示POP PSWRETI/延时 0.1s 子程序DELAY: MOV 61H,#200DEL2: MOV 62H,#250DEL1: DJNZ 62H,DEL1DJNZ 61H,DEL2RETEND/*只需用 3 根线连接 2 个单片机即可实现,gnd 连 gnd ,rxd 连 txd ,txd 连 rxd, */4 实验心得:GOOD LUCK!