请大家帮小弟看一段程序,谢谢!

2019-03-24 18:22发布

麻烦哪位帮小弟看一下这段程序呢,现象:串口无输出,检测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
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
naga568
1楼-- · 2019-03-25 14:30
 精彩回答 2  元偷偷看……
夏义道
2楼-- · 2019-03-25 14:35
汇编没学,爱莫能助……
有些朋友用C编程,调用printf串口输出时忘记TI需要先置位,不知道你是不是这个问题,不是请忽略,本人菜鸟,看不懂汇编
柠檬酸钠
3楼-- · 2019-03-25 16:23
还以为是C,汇编没学透。。。
想个名字0
4楼-- · 2019-03-25 17:21
 精彩回答 2  元偷偷看……
cccwwwggg2000
5楼-- · 2019-03-25 22:03
感谢大家的帮助,问题解决了,stc的运行太快了,初始化没有设置好。。

一周热门 更多>