正文 第二章 64180的硬件配置(六)(2 / 3)

▲接收——查詢方式(1)查詢CNTR寄存器的RE位,直到RE位=0為止。(2)把CNTR寄存器的RE位置為1。(3)查詢CNTR寄存器的RE位,直到RE位=0為止。(4)從TRDR寄存器讀出接收來的數據。(5)每接收1個字節數據,重複進行2—4的操作。

▲接收——中斷方式(1)查詢CNTR寄存器的RE位,直到RE位=0為止。(2)把CNTR寄存器的RE位和EIE位置為1。(3)當發生中斷,進入接收中斷服務程序時,從TRDR寄存器讀出接收來的數據(4)把CNTR寄存器RE位置為1。(5)每接收1字節數據,複進行3—4的操作。

2.11.5CSI/O操作時序注釋(1)注意,在內部討衝與外部對鍾方式時,是有區別的。表示CSI/O發送/接收的時序。(2)正在進行初始化或改變波特率時,發送器和接收器都波關閉(TE位和RE位均為0)。

2.11.6CSI/O操作注意事項

(1)在初始化或改變波特率之前,要關閉發送器和接送器(TE位和RE位當發梁或接收完成之後,要改變波特率時,要求至少有相當於發送或接收1位數據所花瓰時_致後,才開始減特率的更改。

(2)當用軟件把RE位清0後,就立刻終止接收操作;同樣,用軟件把TE位清後,也立刻終止發送操作。(3)對於同一個CSI/O來說,正常狀態下,發送和接收不可能同時進行。因此RE將不會同時為1。

2.11.7CSI/O和RESET

RESET期間,CNTR控製寄存器中的每一位,都按前麵對CNTR控製寄存器所敘述的要求進行初始化。

RESET時,正在進行的發送或接收操作均被夭折。但是,TRDR發送接收數據寄存器的內容不會被改變。

2.12可編程定時器(PRT)(Pr0grammableRel0adTimer)

64180芯片內有一個兩通道的16位可編程重複裝入的定時器PRT。每一個PRT通道包括一個16位的減1計數器(16—bitd0wnc0untcr)和一個16位的自動重複裝入時間常數寄存器[16—bitrel0adregister]。可以直接對減計數器寫入和讀出。可以用編程來開放或禁止減1計數器減到0(溢出)時發出中斷請求。PRT通道1較通道0多一個T0UT鞭出引腳[引腳。T0UT和地址線Al8合用一根引腳,這根引腳輸出的信號,能夠編程設置為高電平、低電平或脈衝輸出。因此,能夠產生可編程的輸出波形。

兩個通道分別有減1計數器和重複裝入的時間常數寄存器,兩個通道有一公用的狀態/控製寄存器。PRT兩個通道的輸入時鍾頻率都等於係統時鍾的20分頻。

2.12.2PRT寄存器介紹

▲減1計數器——定時器數據寄存器TMDR(TimerDataRegister)(I/O地址:通道0=0DH、0CH,通道l=15H、14H)

PRT0和PRT1各自有一個16位的減1計數器(定時器數據寄存器TMDR)。訪問TMDR0和TMDR1,是采用分別訪問低字節寄存器和髙字節寄存器的方法(TMDR0L、TMDR0H和TMDR1L、TMDR1H)pRESET時,TMDfl0和TMDR1寄存器都被置為FFFFH。

每經20個係統時鍾4,使TMDR減1。當TMDR減1計數到0時,用重複裝入時間常數寄存器RLDR(Rel0adRegister)的內容自動裝入。

按照下述步驟操作,能夠用軟件對TMDR寄存器讀出或寫入。為了準確讀取數據,在讀出過程中使用了一個PRT的內部暫存器。讀出過程中不要求定時器停止工作,但寫入過程中要求定時器停止工作。

對TMDR寄存器的讀出(這時定時器不停止工作),必須按先讀低字節後讀高字節的順序(TMDRnL,TMDRnH)。在讀出低字節(TMDRnL)時,髙字節(TMDRnH)的值將暫存於內部暫存寄存器中}接著讀出高字節(TMDRnH)時,自動去訪問這個內部暫存器。按照這個順序去讀取,就能保證讀出數據的準確性從16位定時器讀出的現行值,不會因為每次隻讀8位而潛在時間差所造成的誤差,特別要指出,若以先讀髙字節後讀低字節的順序去讀TMDR寄存器,結果就可能是無效的數據。無論讀低字節和高字節,或隻讀低字節,或讀高字節,都動用TMDR內部暫存器。通常所有對TMDR的讀操作程序,將按順序既訪問低字節,也訪問髙字節。

對於寫入,必須用TCR定時器控製寄存器的TDE位(定時器減1計數允許位)來禁止TMDR減1計數。在禁止減1計數後,可以按隨意的順序寫入(或讀出)TMDR。即可以寫低字節,或隻寫高字節,或既寫高字節又寫低字節,寫入的先後順序可以是任意的。

RESET時,TCR寄存器的各位按前麵所敘述的規約被初始化:減1計數的操作被停業,TMDR和RLDR寄存器被置入初始值FFFFH,A1E/T0UT引腳被設定為地址線的功能。