;------中断服务程序--------
ORG 0023H
ACTNT: MOVC A,@A+DPTR ;读数据
CLR TI ;清发送中断
MOV SBUF,A ;发送字符
DJNZ R7,AEND ;没发送完转AEND
CLR ES ;禁止串行中断
CLR TR1 ;定时器1停止计数
AEND: INC DPTR
RETI ;中断返回
TAB: DB 'A','B','C','D'
END
START:MOV TMOD,#20H
MOV TH1, #0FDH
MOV TL1, #0FDH
SETB EA
CLR ES
MOV PCON,#00H
MOV SCON,#50H
SETB TR1
MOV DPTR,#TAB
MOV R7,#08H
MOV A,R7
SETB ES
SJMP
ACTNT: CLR EA
AEND: MOVC A,@A+DPTR
INC DPTR
MOV SUBF, A
DJNZ R7,AEND
JNB TI,$
CLR TI
SETB EA
RET1
你程序的本意是一次传送A,B,C,D还是只是一个数。你主程序的意思只传送一个,而中断里的意思是传诵4的,但你这样是实现不了的。