最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

急!幫我看一下!謝謝!

作者:eixin 欄目:單片機
請幫我看一下這個程序SST89C54擴展兩個串口:TL16C552
我用的是中斷方式,這個程序不能收,也不能發(fā),我查了兩天找不出原因,它
根本不能產(chǎn)生中斷,我的數(shù)據(jù)已到了引腳上,是不是初始化問題,我沒法查出
原因。謝謝!
程序功能:接收到一個數(shù)據(jù)產(chǎn)生中斷后保存在REC_BUFF中,然后發(fā)送這個數(shù)據(jù)

REC_BUFF  EQU   030H

RBR       DATA     8000H           ;TL16C552FN 接收緩存器
THR       DATA     8000H           ;發(fā)送保存寄存器        
DLL       DATA     8000H           ;波特率低位寄存器      
DLM       DATA     8001H           ;波特率高位寄存器      
IER       DATA     8001H           ;中斷允許寄存器
IIR       DATA     8002H           ;中斷標(biāo)志寄存器
FCR       DATA     8002H           ;FIFO控制寄存器
LCR       DATA     8003H           ;線性控制寄存器
LSR       DATA     8005H           ;線性狀態(tài)寄存器

CS1       DATA     2000H           ;對擴展串口1進行片選
CS2       DATA     4000H           ;對擴展串口2進行片選

DE1       BIT     P1.5             ;TL16C552通訊口1(RS485)使能
DE2       BIT     P1.5             ;TL16C552通訊口2(RS485)使能
RST       BIT     P1.7             ;TL16C552復(fù)位信號

;----------------------------------------------------------------
          ORG   0000H
          LJMP  MAIN             ;主程序

          ORG   0003H
          LJMP  IT0_INIT         ;外部中斷0服務(wù)子程序 (擴展串口1)

          ORG   0013H
          LJMP  IT1_INIT         ;外部中斷1服務(wù)子程序 (擴展串口2)
        
;--------------------------------------------------------------

          ORG   0030H
MAIN:
          ......
          LCALL SYS_INST              ;系統(tǒng)初始化
          ......
            

SYS_INST:
          CLR   TR0
          CLR   TR1
          MOV   A,#83H                ;訪問波特率產(chǎn)生器的除數(shù)鎖存器,對7位置1,數(shù)據(jù)長8B
          MOV   DPTR,#LCR             ;LCR
          MOVX  @DPTR,A
          MOV   A,#34H
          MOV   DPTR,#DLL             ;DLL
          MOVX  @DPTR,A
          MOV   A,#00H                ;波特率=9600bps  8M/(16*9600) = 52 (34H)
          MOV   DPTR,#DLM             ;DLM
          MOVX  @DPTR,A
          MOV   A,#03H                ;訪問接收器緩存器,THR,IER,對7位清0,數(shù)據(jù)長8B
          MOV   DPTR,#LCR             ;LCR
          MOVX  @DPTR,A
          MOV   A,#0C7H               ;清收、發(fā)FIFO所有字節(jié)并清計數(shù)器
          MOV   DPTR,#FCR             ;FCR
          MOVX  @DPTR,A
          MOV   A,#0C1H               ;禁止清0收、發(fā)FIFO、計數(shù)器
          MOV   DPTR,#FCR             ;FCR
          MOVX  @DPTR,A


          MOV   IP,#01H               ;外部中斷0-高
          MOV   IE,#0B5H              ;ES ET1 ET0   中斷允許
          MOV   TMOD,#88H             ;定時器1:自動重裝定時,定時器0:16位定時器
          MOV   TCON,#05H             ;定時器控制清0,外部中斷為低電平觸發(fā)
         ; MOV   SCON,#50H             ;8位異步接收/發(fā)送器,允許接收<
2樓: >>參與討論
cx_78
初始化不對      TL16C550 TL16C552 TL16C554 無論那種通信片子  初始化第一句必須寫#80 給lcr 然后 寫波特率                   不信試一試: >


3樓: >>參與討論
eixin
我的程序是用的FCR=83H,這應(yīng)該和FCR=80H效果一樣吧?
能否幫我看看其它有沒問題?主要是數(shù)據(jù)已到了引腳上,但就是不能產(chǎn)生中斷信號?發(fā)送數(shù)據(jù)也是一樣,不能產(chǎn)生中斷信號。還有就是我發(fā)現(xiàn)我的片選信號不能通過DPTR命令來片選,我用設(shè)置I/O口試過也不能產(chǎn)生中斷,那么有什么其它辦法來設(shè)置自選信號嗎?
謝謝!


「該帖子被 eixin 在 2003-6-5 10:30:09 編輯過」
4樓: >>參與討論
HDDZLGQ
不知是否已經(jīng)解決?
首先你如果用P1口的某位做片選,則在讀寫數(shù)據(jù)前應(yīng)將其置0,然后操作,操作完后再置回1
另外,你的定時器設(shè)置不對,應(yīng)設(shè)置為TMOD=21H,這樣TO工作為16位,T1為波特率發(fā)生器
還有你設(shè)置的FCR=C7可能應(yīng)該為FCR=7,這樣才能在收到一個字節(jié)后就中斷,
我也正在接觸該片子,歡迎探討!
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
[下載]最新版!
用c語言怎么讀外部XRAM里的數(shù)據(jù)???
需要下載資料的進(西門子、三菱、歐姆龍等)
51的浮點算法請教。
ATMEL推出增強型的51單片機——AT89LP2052/4052 ,進來...
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號