这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » stc89c58rd 请问stc89c58rd+,串口调试问题

共3条 1/1 1 跳转至

stc89c58rd 请问stc89c58rd+,串口调试问题

院士
2006-09-17 18:14:16     打赏
stc89c58rd 请问stc89c58rd+,串口调试问题



关键词: stc89c58rd     请问     stc89c58rd+    

院士
2006-12-22 22:43:00     打赏
2楼
问 我用的是stc89c58rd+,调试串口时,参考姚工的程序,功能是单片机向串口发送0123456789 ,接收中断函数返回相同的数,

现在的问题是程序运行后,每隔 一段时间串口调试窗口中就会出现一串“0123456789” 而不是单片机发送完“0123456789”后就等待接收中断。就好像单片机每个一段时间就在复位一次似的。  不知道是怎么回事。大家有遇到这样情况的吗?

程序如下:

/*----------------------------------------------------------

此程序完全参考宏晶科技 姚永平 程序文件 ”定时器1作波特率发生器“
file:用汇编程序编写STC89c58RD+的串口调试程序
date:2006 07 07
created by:cyh

---------------------------------------------------------------*/

       RELOAD_COUNT  EQU   0FDH        ;  11.0592MHZ  12T   SMOD=0  9600BPS
       ;AUXR          EQU   8EH

       ORG    0000H
       AJMP   MAIN
       ORG    0023H
       AJMP   UART_Interrupt
       NOP
       NOP
;-------------------------------------------------------------
MAIN:
      MOV  SP, #7FH
      ACALL  Initial_UART
      MOV    R0, #30H
      MOV    R2,#10
LOOP:
      MOV    A,R0
      ACALL  Send_One_Byte
      INC    R0
      DJNZ   R2,LOOP
MAIN_WAIT:
     SJMP  MAIN_WAIT
;--------------------------------------------------------------
UART_Interrupt:
     JB   RI, Is_UART_Receive
     CLR  TI
     RETI
Is_UART_Receive:
     CLR  RI
     PUSH  ACC
     MOV   A, SBUF
     ACALL Send_One_Byte
     POP  ACC
     RETI

;--------------------------------------------------------------
Initial_UART:
;SCON  Bit  7     6     5      4     3     2     1    0
;         SM0/FE  SM1  SM2     REN   TB8  RB8   TI    RI

     MOV  SCON, #50H           
     MOV  TMOD, #21H
     MOV  TH1, #RELOAD_COUNT
     MOV  TL1, #RELOAD_COUNT

;-----------------------------------------------------------
    ;ANL   AUXR, #10111111B  ;12T MODE


;------------------------------------------------------------
    SETB  TR1
    SETB  ES
    SETB  EA
    RET

;-------------------------------------------------------------
Send_One_Byte:
    CLR  ES
    CLR  TI
    MOV  SBUF, A  ;A=要发送的字节

Wait_Send_Finish:
    JNB  TI, Wait_Send_Finish
    CLR  TI
    SETB ES
    RET


1: 俺知道了知道了,是看门狗给复位了。呵呵 2: 恭喜,您已解决

高工
2022-08-04 23:13:16     打赏
3楼

谢谢分享


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]