我把CH432配套的例程下載到51單片機中調(diào)試,發(fā)送數(shù)據(jù)正常,卻無法通過中斷來接收數(shù)據(jù),我用模擬低電平的方法來觸發(fā)51單片機的外部中斷,發(fā)現(xiàn)單片機可以正確地讀出CH432串口所接收到的數(shù)據(jù),證明單片機的外部中斷是正常的,那么只能是CH432的中斷有問題了。我試過換一塊芯片,但結(jié)果還是一樣,請問是為什么?
CH432芯片共有3個中斷請求輸出引腳:INT0 引腳是串口 0 的中斷請求,由串口 0 的MCR 寄存器 的OUT2控制其三態(tài)輸出,當OUT2 為1時輸出允許;INT1引腳是串口 1 的中斷請求,由串口 1的 MCR 寄存器的OUT2控制其三態(tài)輸出,當OUT2 為 1 時輸出允許;INT#引腳是低電平有效的開漏輸出引腳, 連接單片機時可能需要外加上拉電阻,在邏輯功能上是 INT0 和 INT1 的“或非” ,當 INT0 或者 INT1 其中一個有效時(三態(tài)輸出允許且輸出高電平),INT#引腳輸出低電平,否則 INT#引腳不輸出。 如果只連接 INT#引腳,即兩個串口合用一個中斷請求,那么單片機在進入中斷服務程序后,首 先應該分析出是哪個串口的中斷請求。 當進入中斷服務程序后, 單片機首先讀取串口0 的 IIR寄存器, 有中斷則處理并退出, 無中斷則讀取串口 1 的IIR 寄存器,有中斷則處理并退出,無中斷則直接退出。 當確認是某個串口的中斷后,如果有必要還可以進一步分析 LSR 寄存器,分析中斷原因并處理。 如果連接了INT0 和INT1 引腳,那么單片機就能夠直接判斷出是哪個串口的中斷請求,可以直接 讀取其 IIR 寄存器分析并處理中斷。INT0 和 INT1 在三態(tài)輸出禁止時(MCR 寄存器的 OUT2 為 0),內(nèi) 置的弱上拉電阻會使其輸出微弱的高電平,通過外接10KΩ~100KΩ的下拉電阻可使其默認為低電平。 如果串口工作于中斷方式,那么需要設置 IER 寄存器以允許相應的中斷請求,并設置MCR 寄存器 中的OUT2以允許中斷輸出。 如果串口工作于查詢方式,那么無需設置 IER和 MCR的 OUT2,只需查詢LSR 寄存器并分析處理。
CH432T只有一個中斷請求輸出引腳,那就是INT#