导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:89c2051串口通信,问题原程序

* 19352: C51编程:89c2051串口通信,问题原程序

   digiboy 
digiboy发表的帖子 

 C51编程:89c2051串口通信,问题原程序
我用at89c2051做了个最简单的系统,用MOV SBUF,A发数据时,一发某些数值就会造成
无法运行,有些数发了没事。rxd,txd没接线时也是这样。这是为什么??
程序:
        SJMP    START
        ORG     0023H
        AJMP    RXD_INT

START:  MOV     IP,#00H
                          ;SCON: SM0|SM1|SM2|REN|TB8|RB8|TI|RI
        MOV     SCON,#11010000B ; 1   1   0   0   0   0  0  0
        MOV     A,PCON
        ANL     A,01111111B     ;SMOD=0
        MOV     PCON,A
        MOV     P1,#00H
        MOV     TCON,#00H
        MOV     IE,#00H
        MOV     TH1,#0FDH       ;波特率9600
        MOV     TL1,#0FDH
                          ;TMOD: GATE|C/!T|M1|M0|GATE|C/!T|M1|M0
        MOV     TMOD,#00100000B;   0    0  1   0   0    0   0  0
        SETB    TR1
        SETB    ES
        SETB    EA
        MOV     A,#0FH

LOOP:   ACALL   DELAY     ;循环的发数据
        ACALL   SENT
        SJMP    LOOP

DELAY:  MOV     R0,#0FFH  ;延时子程序
        MOV     R1,#0FFH  ;延时:执行r0*r1*r2条djnz指令的时间
        MOV     R2,#05H   ;
D_1:    DJNZ    R2,INIT_2 ;
        RET               ;延时完成,返回
INIT_2: MOV     R1,#0FFH  ;
D_2:    DJNZ    R1,D_3    ;
        SJMP    D_1       ;
D_3:    MOV     R0,#0FFH  ;
        DJNZ    R0,$      ;
        SJMP    D_2       ;

SENT:   MOV     SBUF,A    ;问题就在这,发某些数就停了
        MOV     P1,A      ;
        INC     A         ;实验发送0-255
        RET

RXD_INT:CLR     TI        ;
        JB      RI,RCV    ;
        RETI              ;
RCV:    CLR     RI        ;接收的数据从p1口显示
        MOV     P1,SBUF   ;p1口接8个LED
        RETI

发表时间:2003年2月22日13:59:00

  
回复该帖

本主题共有 13 帖,分页:>>>>>该主题的所有内容[13]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  19356.[详细]参考
摘要: A.你那里的延时程序会起干扰作用的(会打断正常的数据传送),解决方式: 1.不打开串口中断,往SBUF送数据以后,检测TI标志   例如:我刚才举的例子写法(只要设置好波特率,打开相应定时......(1417字)
- [tm1300][1180次] 2003年2月22日

  19357.[详细]说明
摘要:以串口发送一个字节为例:其实,串口通讯过程中,往SBUF送数据以后,数据按起始位,数 据位(高到低),校验位(如果有),停止位的方式,一位一位往外移,而且,每移一个 BIT的时间是固定的(通过波特率可以计算)的。如果,整......(186字)
- [tm1300][1163次] 2003年2月22日

  19368.[详细]re
摘要:经循环测试您的程序,没有发现停机问题,程序应该没有问题。 *注意* 如果使用串信接收,应将“REN”置“1”(SETB REN)。 ......(66字)
- [红心J][1080次] 2003年2月22日

[上一篇帖子]:谢谢各位,我把原程序贴在上面了
[下一篇帖子]:参考(收邮件)