最新单片机原理及应用多机通信幻灯片.ppt
多机通信多机通信MCS-51系列单片机的串行通讯方式系列单片机的串行通讯方式2和方式和方式3是有多机通讯功能,可构成是有多机通讯功能,可构成多种分布式通讯系统。一个全双工主从方式多机通讯系统的原理框图如多种分布式通讯系统。一个全双工主从方式多机通讯系统的原理框图如下:下: TXD RXD 主机0#机1#机 N#机 4、约定主机发送的命令字为:01H:要求从机发送数据块其他:非法命令 5、从机的数据格式约定: D7 D6 D5 D4 D3D2 D1 D0 ERR CON1 CON2 0 X X X X 定义: 若ERR=1, 从机接收到非法命令,0为正常 若CON1=1,从机状态1异常,0为正常 若CON2 =1,从机状态2异常,0为正常 D7 D6 D5 D4D3D2 D1 D0 X x x x x x x x高4位数据呼叫从机号在60H中数据块首地址为30H波特率为2400H禁止串口中断 FLAG BIT 00H SLADD BYTE 60HORG 0000HAJMP MAIN ORG 0030H MAIN: MOV SP,#70H MOV TMOD,#20H ;T1 方式2,8位自动 重装载 MOV PCON,#80H MOV SCON,#D8H ; SM0 SM1 SM2 REN TB8 RB8 TI RI ; 1 1 0 1 1 0 0 0 ; SM2对主机没有要求 MOV TH1,#0F3H MOV TL1,#0F3H;波特率为2400H CLR FLAG SETB TR1 NEXTLP: MOV R0,#30H MOV R6,#10H LOOP: MOV R7,#02H CALL AddR JBC FLAG,NEXTS CALL RDDATA AJMP NEXTA NEXTS: INC R0 INC R0 NEXTA: INC SLADD DJNZ R6,LOOP AJMP NEXTLP ADDR:MOV A,SLADD;取从机号MOV SBUF,A;发送从机号JNB TI,$;等待发送结束CLR TI;清TI标志JNB RI,$;等待从机回答本机地址CLR RI;清RI标志MOV A,SUBF;读取从机回答地址CJNE A,SLADD,RETN;地址不符,返回CLR TB8;地址相等,清TB8 准备发送命令RET RETN: SETB FLAG RET RDDATA: MOV A,#01H MOV SBUF,A JNB TI,$ CLR TI RPT: JNB RI,$;等待回送从机状态 CLR RI MOV A,SUBF MOV R0,A INC R0 DJNZ R7,RPT RET 本机地址在4FH中 ;接收到数据为#01H,表示要向主机发送数据; ;数据保存在31H,32H单元中 SM0 SM1 SM2REN TB8 RB8 TI RI ; 1 1 1 1 0 0 0 0 FLAG BIT 00H FALGAD BIT 01HORG 0000HAJMP MAINORG 0023HAJMP COMORG 0030H MAIN: MOV SP,#70H MOV TMOD,#20H;T1 方式2,8位自动重装载 MOV TH1,#0F3H MOV TL1,#0F3H ;波特率为2400H MOV PCON,#80H MOV SCON,#D8H SETB TR1 SETB ES;采用中断方式接收主机呼叫SETB EACLR FLAG SETB FLAGAD;初始值为1,接收地址呼叫 RPT:JNB FLAG, RPT CLR FLAG CALL TDATA SETB SM2AJMP RPT COM:CLR ES;禁止中断 JNB FLAGAD,COMDCLR RIMOV A,SBUFCJNE A,4FH,EXIT1MOV SBUF,A;回送地址JNB TI,$CLR TICLR SM2;准备接受命令和数据 CLR FLAGAD EXIT1:SETB ESRETI COMD: CLR RI MOV A,SBUF CJNE A,#01H,EXIT2 SETB FLAG SETB ES RETI EXIT2: CJNE A,#0FFH,EXIT3 SETB SM2 SETB FLAGAD EXIT3: SETB ES RETI TDATA: MOV A,31H MOV SBUF,A JNB TI,$ CLR TI MOV A,32H MOV SBUF,A JNB TI,$ CLR TI RET 系统以10ms采样周期采样锅炉中水的温度; 高,低液位开关正常时输出高电平,超出设定液位时输出低电平,分别连接外部中断0和1; 系统异常时输出低电平,控制光藕继电器输出报警信号; 水位的控制通过输出-20mA控制阀门开度调节水流量 水温及液位状态通过RS-485总线上传给监控机 数据采样采用位A/D 本机地址在4FH中 ;接收到数据为#01H,表示要向主机发送数据; ;数据保存在31H,32H单元中 数据格式: 液位高液位低X X X X(状态)(状态)数据高位 X X X X X X X X 数据低等位 FLAGE0 BIT 00H FALGE1 BIT 01H FLAGT0 BIT 02H FLAGS0 BIT 03H FLAGAD BIT 04HORG 0000HAJMP INIT ORG 0003H AJMP EINT0 ORG 000BH AJMP T0INT ORG 0013H AJMP EINT1ORG 0023HAJMP COMORG 0030H INIT: MOV SP, #70H MOV TMOD, #XXH MOV TH0, #XXH MOV TL0, #XXH MOV TH1, #0F3H MOV TL1, #0F3H MOV PCON, #80H MOV SCON, #D8H SETB IT0 SETB IT1 SETB TR0 SETB TR1 SETB PX1 SETB ES SETB EX0 SETB EX1 SETB ET0 SETB EA CLR FLAGE0 CLR FLAGE1; CLR FLAGT0; CLR FLAGS0; SETB FLAGADDR MAIN:JBC FLAGE0, E0FUN JBC FLAGE1, E1FUN JBC FLAGT0, T0FUN JBC FLAGS0, S0FUNAJMP MAIN E0FUN: CLR ALARMLOW ORL 31H,#01000000B AJMP MAIN E1FUN: CLR ALARMHIGH ORL 31H,#10000000B AJMP MAIN T0FUN: CALL ADFUN CALL OUTFUN AJMP MAIN S0FUN: CALL TDATA SETB SM2 AJMP MAIN EINT0: SETB FLAGE0; RETI EINT1: SETB FALGE1; RETI T0INT: MOV TH0,#XXH MOV TL0,#XXH SETB FLAGT0 RETI COM:CLR ES;禁止中断 JNB FLAGADR,COMDCLR RIMOV A,SBUFCJNE A,4FH,EXIT1MOV SBUF,A ;回送地址JNB TI,$CLR TICLR SM2;准备接受命令和数据 CLR FLAGADR EXIT1: SETB ESRETI COMD: CLR RI MOV A,SBUF CJNE A,#01H,EXIT2 SETB FLAGS0 SETB ES RETI EXIT2: CJNE A,#0FFH,EXIT3 SETB SM2 SETB FLAGADR EXIT3: SETB ES RETI TDATA: MOV A,31H MOV SBUF,A JNB TI,$ CLR TI MOV A,32H MOV SBUF,A JNB TI,$ CLR TI RET ADFUN: . RET OUTFUN: . RET