
单片机双机通信 15
接收方每次显示接受的数据之前都要显示一次74(本人完成的功能是发送和接收0-99BCD码发送)发送方显示无误请高人指点74的来历是干扰吗?用PROTUES仿真没问题程序如...
接收方每次显示接受的数据之前都要显示一次74(本人完成的功能是发送和接收0-99 BCD码发送)发送方显示无误 请高人指点74的来历 是干扰吗?用PROTUES仿真没问题 程序如下(外中断嵌套串口中断):
DATA1 EQU 70H
DATA2 EQU 77H
GREEN BIT P2.0
BLUE BIT P2.1
ORG 0000H
SJMP MAIN
ORG 0003H
LJMP TRANS
ORG 0013H
LJMP RECE
ORG 0023H
LJMP SPINT
ORG 0030H
MAIN:MOV P1, #30H;禁止数码管显示
CLR P3.6
CLR IT0 ;低电平有效
CLR IT1
SETB EA
SETB EX0 ;外中断允许
SETB EX1
MOV P2,#0FFH;禁止LED显示
CLR P3.6
SETB P3.7
SJMP $
TRANS: CLR EA
SETB P3.6 ;在发状态
MOV SCON,#0C0H;置串口方式3
MOV TMOD, #20H;T1方式2
MOV PCON, #00H
SETB PS
MOV TL1,#0FDH;定时常数 波特率9600
MOV TH1,#0FDH
SETB TR1
CLR TI
CLR ET1
SETB EA
SETB ES
MOV R7,#100
MOV DATA1,#00H
LOOP1: MOV A , DATA1
MOV SBUF,A;启动发送
WAIT1:JNB TI, WAIT1
CLR TI
MOV A , DATA1
ADD A ,#1
DA A
MOV DATA1, A
DJNZ R7,LOOP1;循环100次
CLR P3.6;关发状态
SETB GREEN;灭灯
MOV P1, #30H
RETI
RECE: CLR EA
MOV SCON,#0D0H;置串口方式3 允许接收
MOV TMOD, #20H;T0方式2
MOV PCON, #00H
SETB PS
MOV TL1,#0FDH;定时常数 波特率9600
MOV TH1,#0FDH
SETB TR1
CLR RI
CLR ET1
SETB EA
SETB ES
MOV R6,#100
LOOP2: MOV DATA2,SBUF
WAIT2: JNB RI,WAIT2
CLR RI
DJNZ R7,LOOP2 ;循环100次
SETB BLUE;灭灯
MOV P1, #30H
RETI
SPINT:JB TI,TRANSR
JB RI,RECER
TRANSR:CLR EA
CPL GREEN
MOV R6, #50H
DIS1: MOV A, DATA1
ANL A,#0FH
ADD A ,#11100000B
MOV P1,A
ACALL DELAY;延时1毫秒
MOV A, DATA1
SWAP A
ANL A, #0FH
ADD A, #11010000B
MOV P1,A
ACALL DELAY;延时1毫秒
DJNZ R6, DIS1;循环2OO次
SETB EA
RETI
RECER: CLR EA
CPL BLUE
MOV R6, #50H
DIS2: MOV A, DATA2
ANL A,#0FH
ADD A ,#11100000B
MOV P1,A
ACALL DELAY;延时1毫秒
MOV A, DATA2
SWAP A
ANL A, #0FH
ADD A, #11010000B
MOV P1,A
ACALL DELAY;延时1毫秒
DJNZ R6, DIS2;循环2OO次
SETB EA
RETI
DELAY:MOV R5,#98
D1:MOV R4,#5
NOP
NOP
DJNZ R4,$
DJNZ R5,D1
RET
END 展开
DATA1 EQU 70H
DATA2 EQU 77H
GREEN BIT P2.0
BLUE BIT P2.1
ORG 0000H
SJMP MAIN
ORG 0003H
LJMP TRANS
ORG 0013H
LJMP RECE
ORG 0023H
LJMP SPINT
ORG 0030H
MAIN:MOV P1, #30H;禁止数码管显示
CLR P3.6
CLR IT0 ;低电平有效
CLR IT1
SETB EA
SETB EX0 ;外中断允许
SETB EX1
MOV P2,#0FFH;禁止LED显示
CLR P3.6
SETB P3.7
SJMP $
TRANS: CLR EA
SETB P3.6 ;在发状态
MOV SCON,#0C0H;置串口方式3
MOV TMOD, #20H;T1方式2
MOV PCON, #00H
SETB PS
MOV TL1,#0FDH;定时常数 波特率9600
MOV TH1,#0FDH
SETB TR1
CLR TI
CLR ET1
SETB EA
SETB ES
MOV R7,#100
MOV DATA1,#00H
LOOP1: MOV A , DATA1
MOV SBUF,A;启动发送
WAIT1:JNB TI, WAIT1
CLR TI
MOV A , DATA1
ADD A ,#1
DA A
MOV DATA1, A
DJNZ R7,LOOP1;循环100次
CLR P3.6;关发状态
SETB GREEN;灭灯
MOV P1, #30H
RETI
RECE: CLR EA
MOV SCON,#0D0H;置串口方式3 允许接收
MOV TMOD, #20H;T0方式2
MOV PCON, #00H
SETB PS
MOV TL1,#0FDH;定时常数 波特率9600
MOV TH1,#0FDH
SETB TR1
CLR RI
CLR ET1
SETB EA
SETB ES
MOV R6,#100
LOOP2: MOV DATA2,SBUF
WAIT2: JNB RI,WAIT2
CLR RI
DJNZ R7,LOOP2 ;循环100次
SETB BLUE;灭灯
MOV P1, #30H
RETI
SPINT:JB TI,TRANSR
JB RI,RECER
TRANSR:CLR EA
CPL GREEN
MOV R6, #50H
DIS1: MOV A, DATA1
ANL A,#0FH
ADD A ,#11100000B
MOV P1,A
ACALL DELAY;延时1毫秒
MOV A, DATA1
SWAP A
ANL A, #0FH
ADD A, #11010000B
MOV P1,A
ACALL DELAY;延时1毫秒
DJNZ R6, DIS1;循环2OO次
SETB EA
RETI
RECER: CLR EA
CPL BLUE
MOV R6, #50H
DIS2: MOV A, DATA2
ANL A,#0FH
ADD A ,#11100000B
MOV P1,A
ACALL DELAY;延时1毫秒
MOV A, DATA2
SWAP A
ANL A, #0FH
ADD A, #11010000B
MOV P1,A
ACALL DELAY;延时1毫秒
DJNZ R6, DIS2;循环2OO次
SETB EA
RETI
DELAY:MOV R5,#98
D1:MOV R4,#5
NOP
NOP
DJNZ R4,$
DJNZ R5,D1
RET
END 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询