C51编程:89c2051串口通信,问题原程序
我用at89c2051做了个最简单的系统,用MOV SBUF,A发数据时,一发某些数值就会造成
无法运行,有些数发了没事。rxd,txd没接线时也是这样。这是为什么??
程序:
SJMP START
ORG 0023H
AJMP RXD_INT
START: MOV IP,#00H
;SCON: SM0|SM1|SM2|REN|TB8|RB8|TI|RI
MOV SCON,#11010000B ; 1 1 0 0 0 0 0 0
MOV A,PCON
ANL A,01111111B ;SMOD=0
MOV PCON,A
MOV P1,#00H
MOV TCON,#00H
MOV IE,#00H
MOV TH1,#0FDH ;波特率9600
MOV TL1,#0FDH
;TMOD: GATE|C/!T|M1|M0|GATE|C/!T|M1|M0
MOV TMOD,#00100000B; 0 0 1 0 0 0 0 0
SETB TR1
SETB ES
SETB EA
MOV A,#0FH
LOOP: ACALL DELAY ;循环的发数据
ACALL SENT
SJMP LOOP
DELAY: MOV R0,#0FFH ;延时子程序
MOV R1,#0FFH ;延时:执行r0*r1*r2条djnz指令的时间
MOV R2,#05H ;
D_1: DJNZ R2,INIT_2 ;
RET ;延时完成,返回
INIT_2: MOV R1,#0FFH ;
D_2: DJNZ R1,D_3 ;
SJMP D_1 ;
D_3: MOV R0,#0FFH ;
DJNZ R0,$ ;
SJMP D_2 ;
SENT: MOV SBUF,A ;问题就在这,发某些数就停了
MOV P1,A ;
INC A ;实验发送0-255
RET
RXD_INT:CLR TI ;
JB RI,RCV ;
RETI ;
RCV: CLR RI ;接收的数据从p1口显示
MOV P1,SBUF ;p1口接8个LED
RETI
发表时间:2003年2月22日13:59:00