用汇编写的,单片机就是51,用到了MAX232,发送数据总是收不到结果,郁闷
ORG 0000H
AJMP MAIN
ORG 0023H
AJMP UART ;串口中断
ORG 0030H
MAIN:
MOV SP,#60H
MOV R0,#50H ;接收数据首地址入R0
MOV R7,#10H ;接收数据长度入R7
MOV TMOD,#20H ;T1工作方式2
SETB EA ;开总中断
LCALL URTINIT ;串口初始化
AJMP $ ;等待串口中断
;*******************************************************
UART:
PUSH ACC
JNB RI,URT1 ;RI=0即没有接受完则转到URT1继续接收
URT0: ;接收完毕各标志位清零
CLR ES
CLR RI
MOV A,SBUF
MOV @R0,A
INC R0
DJNZ R7,URT1 ;数据未接收完则转URT1
CLR EA
URT1:
SETB ES ;串行口中断允许位置1
POP ACC
RTI: RETI
;*******************************************************
URTINIT:
MOV SCON,#50H ;串口工作方式1
MOV PCON,#00H ;SMOD=0
MOV TH1,#0E8H ;12M 2400BPS
MOV TL1,#0E8H
CLR ET1 ;禁止T1中断
SETB TR1 ;开启定时器
SETB ES ;开启串口中断
RET
END |