找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 4959|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

[求助][原創(chuàng)]求助:tl16c554串口擴(kuò)展發(fā)送程序糾錯(cuò)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:23292 發(fā)表于 2010-4-23 00:05 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

本人用tl16c554給at89s52擴(kuò)展四個(gè)串口,在編寫(xiě)簡(jiǎn)單的單片機(jī)發(fā)送程序的時(shí),遇到麻煩困擾了好久,還希望那位大俠指點(diǎn)一下:

以下是我的源程序:欲實(shí)現(xiàn)發(fā)送10個(gè)ASCII碼

 

 CSA    EQU      0000H
 CSB EQU      2000H
 CSC EQU      4000H
 CSD EQU      6000H
 ORG    0000H
 LJMP MAIN
 MAIN: 
   LCALL  INITIAL
   LJMP  SEND
   LJMP  QUIT
 INITIAL:
   LCALL  TL16C554
     RET
 

 TL16C554:
     MOV  DPTR,#CSA ; UARTA 
     LCALL  INITIAL1
    MOV  DPTR,#CSB
    LCALL  INITIAL1
    MOV  DPTR,#CSC
     LCALL  INITIAL1
    RET
 
 INITIAL1:
    MOV  DPL,#03H   ;DPTR指向LCR 
    MOV  A,#0BH           ;
    MOVX  @DPTR,A ; (LCR0,LCR1)=(1,1),8data bits, LCR2=0,1 stop bit,LCR3=1,Parity Enabled

,LCR4=0, Odd Parity    
                        ;LCR5=0,Stick parity disabled,LCR6=0,Break disabled,LCR7=0,Access Receiver

Buffer    
    MOV  DPL,#02H;DPTR指向 FCR 
    MOV  A,#87H
    MOVX  @DPTR,A;FCR0=1,使能FIFO的發(fā)送和接收 ,F(xiàn)CR1=1清除接收器FIFO,F(xiàn)CR2=1 清除發(fā)送器,   (

bit6,bit7) =(0,1) 觸發(fā)能級(jí)為8個(gè)字節(jié)    
    MOV  DPL,#03H ;指向LCR  
    MOV  A,#8BH ; LCR7=1         

   
    MOVX  @DPTR,A;DALB=1允許寫(xiě)入波特率因子   
    MOV  DPL,#00H  ;指向DLL
    MOV  A,#1AH
    MOVX  @DPTR,A
    MOV  DPL,#01H  ;指向DLM
    MOV  A,#00H
    MOVX  @DPTR,A  ;撥特率為19200   
    MOV  DPL,#03H;指向LCR         

    
    MOV  A,#0BH   ;DALB =0 ;
    MOVX  @DPTR,A;允許訪問(wèn)其他寄存器  
    MOV  DPL,#04H;指向MCR
    MOV  A,#08H
    MOVX  @DPTR,A;MCR3=1外部串行中斷使能  
    MOV  DPL,#01H;指向IER
    MOV  A,#00H
    MOVX  @DPTR,A;中斷使能
    ;RET
SEND:
      MOV  R0,#65H; 發(fā)送的第一個(gè)ASCII碼,對(duì)應(yīng)數(shù)字0
    MOV  R7,#08H;總共發(fā)送8個(gè)ASCII碼
    MOV  DPTR,#CSA;選通A通道         
SEND1: 
    MOV   DPL,#05H;讀線路狀態(tài)寄存器LSR
    MOVX  A,@DPTR
          ANL  A,#60H;提出LSR5,LSR6位
    CJNE  A,#60H,SEND1;若FIFO和TSR都為空則順序執(zhí)行,否則繼續(xù)讀LSR狀態(tài)
    MOV  DPL,#00H
    MOV       A,R0;將字節(jié)寫(xiě)入THR
    MOVX  @DPTR,A 
    ;NOP
    INC  R0
    DJNZ  R7,SEND1 
    MOV  DPTR,#CSB;S
   ; JMP  $      ;不加這條指令時(shí),不斷發(fā)送數(shù)據(jù),加上時(shí)接受到的是亂碼,糾結(jié)中啊

QUIT:  
    END   
;==========================================================================================================

不加jmp $時(shí),如附件中圖一所示:不段重復(fù)發(fā)送數(shù)據(jù)

加上時(shí),如圖二所示,接受到亂碼。

 

懇求哪位大俠指點(diǎn)一下啊

 

郵箱:yuguolincsu@126.com

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表