|
|||||||||||
| 技術(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 欄目:單片機 |
我用的是中斷方式,這個程序不能收,也不能發(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 于 2003/6/4 17:36:00 發(fā)布:
初始化不對 TL16C550 TL16C552 TL16C554 無論那種通信片子 初始化第一句必須寫#80 給lcr 然后 寫波特率 不信試一試: > |
|
| 3樓: | >>參與討論 |
| 作者: eixin 于 2003/6/5 10:25:00 發(fā)布:
我的程序是用的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 于 2005/8/12 14:25:00 發(fā)布:
不知是否已經(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é)后就中斷, 我也正在接觸該片子,歡迎探討! |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號 |