麻烦哪位帮小弟看一下这段程序呢,现象:串口无输出,检测TI不置位,程序卡在JNB TI,$
YX EQU P3.6 ;运行
SR EQU P3.2 ;输入 ON=0
JDQ EQU P3.3 ;继电器 ON=0
AUXR EQU 8EH
ORG 0000H
SJMP MAIN
ORG 000BH
LJMP INTT
ORG 0030H
MAIN: MOV P1,#0FFH
MOV P3,#0FFH
LCALL DEL1
MOV TMOD,#20H
ORL AUXR,#40H ;定时器1时钟为Fosc,即1T
ORL AUXR,#80H ;定时器0时钟1T模式
ANL AUXR,#0FEH ;串口1选择定时器1为波特率发生器
MOV TH0,#28H
MOV TL0,#00H
MOV TH1,#0B8H
MOV TL1,#0B8H
CLR ET1
SETB TR1
MOV PCON,#80H
MOV SCON,#40H
CLR TF0
SETB TR0
CLR ES
SETB ET0
SETB EA
SETB YX
MOV R1,#100
LOOP: JB SR,$
CLR JDQ
LCALL SD_KS
LCALL DEL1
JNB SR,$
SETB JDQ
LCALL SD_TZ
LCALL DEL2
SJMP LOOP
DEL1: MOV 30H,#183 ;1秒
D1: MOV 31H,#255
D5: MOV 36H,#40
DJNZ 36H,$
DJNZ 31H,D5
DJNZ 30H,D1
RET
DEL2: MOV 32H,#210 ;60秒
D2: MOV 33H,#255
D3: MOV 34H,#255
D4: MOV 35H,#8
DJNZ 35H,$
DJNZ 34H,D4
DJNZ 33H,D3
DJNZ 32H,D2
RET
DEL10MS:MOV 40H,#5
D6: MOV 41H,#22
D7: MOV 42H,#248
DJNZ 42H,$
DJNZ 41H,D7
DJNZ 40H,D6
RET
SD_KS: CLR TR0 ;开始录像
MOV DPTR,#TAB0
MOV R0,#8
SD1: CLR A
MOVC A,@A+DPTR
MOV SBUF,A
SETB TI
;JNB TI,$
LCALL DEL10MS
CLR TI
INC DPTR
DJNZ R0,SD1
SETB TR0
RET
SD_TZ: CLR TR0 ;停止录像
MOV DPTR,#TAB1
MOV R0,#8
SD2: CLR A
MOVC A,@A+DPTR
MOV SBUF,A
;JNB TI,$
LCALL DEL10MS
CLR TI
INC DPTR
DJNZ R0,SD2
SETB TR0
RET
INTT: ;每5ms中断一次,500ms取反一下运行指示灯
DJNZ R1,RETTI
CPL YX
MOV R1,#100
RETTI: RETI
TAB0: DB 02H,0FEH,00H,00H,01H,00H,00H,01H
TAB1: DB 02H,0FEH,00H,00H,00H,00H,00H,00H
END
此帖出自
小平头技术问答
有些朋友用C编程,调用printf串口输出时忘记TI需要先置位,不知道你是不是这个问题,不是请忽略,本人菜鸟,看不懂汇编
一周热门 更多>