我自己弄了2個程序,在proteus上模擬的,發現怎么樣都不能使rb8位置1,程序如下,用兩個at89c51做的 接收機的程序:
- [br]1 ORG 0000H [br]2 AJMP START [br]3 ORG 0030H [br]4 START: [br]5 MOV PCON,#10000000B [br]6 ;MOV r1,080h [br]7 ;LCALL DELAY [br]8 RRRR: [br]9 MOV SCON,#10010000b [br]10 ;WAIT: JNB RI,WAIT [br]11 LCALL DELAY [br]12 MOV P0,SBUF [br]13 [br]14 MOV C,RI [br]15 MOV P1.0,C [br]16 [br]17 MOV C,RB8 [br]18 MOV P1.1,C [br]19 CLR P1.2 [br]20 JMP $ [br]21 DELAY:MOV R7,#250 [br]22 D1:MOV R6,#250 [br]23 D2:DJNZ R6,D2 [br]24 DJNZ R7,D1 [br]25 RET [br]26 END
復制代碼
發送機的程序:
- [br]1 ORG 0000H [br]2 AJMP START [br]3 ORG 0030H [br]4 START: [br]5 clr p1.1 [br]6 clr p1.1 [br]7 clr p1.1 [br]8 clr p1.1 [br]9 SEND: [br]10 [br]11 ;0 01 [br]12 [br]13 CLR p1.0 [br]14 CLR p1.0 [br]15 CLR p1.0 [br]16 SETB p1.0 [br]17 CLR p1.0 ;0 [br]18 clr p1.0 [br]19 SETB p1.0 ;1 [br]20 clr p1.0 [br]21 ;100 [br]22 CLR p1.0 [br]23 SETB p1.0 ;1 [br]24 CLR p1.0 [br]25 CLR p1.0 [br]26 SETB p1.0 ; 1 [br]27 SETB p1.0 [br]28 CLR p1.0 ; 0 [br]29 SETB p1.0 [br]30 ;000 [br]31 CLR p1.0 [br]32 SETB p1.0 ;1 [br]33 CLR p1.0 [br]34 SETB p1.0 [br]35 CLR p1.0 ;0 [br]36 SETB p1.0 [br]37 setb p1.0 ;0 [br]38 setb p1.0 [br]39 [br]40 setb p1.0 [br]41 SETB p1.0 ;1 [br]42 setb p1.0 [br]43 ;CLR p1.0 [br]44 ;CLR p1.0 ;0 [br]45 ;CLR p1.0 [br]46 [br]47 [br]48 ;JMP SEND [br]49 END
復制代碼
我是用發送機的p1.0口來模擬串行信號的,發送給接收機的數據中,1-8位都顯示正常,只有rb8總是0,不知道為什么??? |