2437|11

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请大家帮小弟看一段程序,谢谢! [复制链接]

 
麻烦哪位帮小弟看一下这段程序呢,现象:串口无输出,检测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
此帖出自51单片机论坛

最新回复

不会汇编,,,帮顶  详情 回复 发表于 2014-2-21 01:38
点赞 关注
 

回复
举报

2002

帖子

24

TA的资源

五彩晶圆(高级)

沙发
 
粗略看了一下,首先你SD_KS这段子函数是实现查表输出到SBUF,每次输出之间延时10ms,但我没发现你TI的定义,不知道是一个变量标志位还是一个IO口状态,估计程序本意是要等待TI满足一次反转条件,但实际上你程序其他地方并没有涉及到TI的反转,所以这里会卡住,你在检查一下吧
此帖出自51单片机论坛
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
新手飘过
此帖出自51单片机论坛
 
 
 

回复

1071

帖子

7

TA的资源

纯净的硅(中级)

4
 
汇编!!!!!看了会晕的路过
此帖出自51单片机论坛
 
 
 

回复

173

帖子

0

TA的资源

纯净的硅(初级)

5
 
我没有仔细核对,不知道你的波特率设置是否正确。定时器工作模式、串口工作模式等。不仅单片机端要设置正确,还要和接收端的波特率一致。

程序方面:   " MOV     SBUF,A
                     SETB    TI
                     ;JNB     TI,$    "
这3语句,当执行第一句后,串口即开始向外发送数据,然后应该进入原地等待阶段,等待发送完成,也就是执行第三句。而不是第二句。“TI”是发送完成后由硬件置位,检测到“TI ”置位后,程序即可自动进行下面的步骤。

而你用了第二句就错了。你不管发送完成与否你都人为的将“TI”置位,肯定不能正常。
应该是这样:“    MOV     SBUF,A
                            ;SETB    TI
                              JNB     TI,$   "
或者:“    MOV     SBUF,    A
                  JNB       TI,        $   "
此帖出自51单片机论坛
 
 
 

回复

1632

帖子

4

TA的资源

纯净的硅(高级)

6
 
汇编语言爱莫能助,友情帮顶
此帖出自51单片机论坛
 
个人签名科技改变生活
 
 

回复

38

帖子

0

TA的资源

一粒金砂(中级)

7
 
汇编还没学到的说
此帖出自51单片机论坛
 
 
 

回复

360

帖子

0

TA的资源

纯净的硅(初级)

8
 
        MOVC    A,@A+DPTR
        MOV     SBUF,A
        ;JNB     TI,$
        LCALL    DEL10MS
;;;;改為下面程序
        MOV     SBUF,A
TI_WAIT:      ;發送完畢 TI會自動設1
        JNB      TI,TI_WAIT
        CLR      TI
此帖出自51单片机论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

9
 
汇编没学,爱莫能助……
有些朋友用C编程,调用printf串口输出时忘记TI需要先置位,不知道你是不是这个问题,不是请忽略,本人菜鸟,看不懂汇编
此帖出自51单片机论坛
 
 
 

回复

672

帖子

0

TA的资源

版主

10
 
还以为是C,汇编没学透。。。
此帖出自51单片机论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(初级)

11
 
不会汇编,,,帮顶
此帖出自51单片机论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

12
 
感谢大家的帮助,问题解决了,stc的运行太快了,初始化没有设置好。。
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表