基于82C52功能仿真驗證的研究
5 82C52功能描述
(1)復位
上電后,復位輸人為高,82C52在兩個(gè)Ix時(shí)鐘周期內進(jìn)行初始化并進(jìn)入空閑模式直到程序寫(xiě)人。
復位輸人為高電平時(shí),復位內部波特率發(fā)生電路的時(shí)鐘計數器和位計數器。BRSR不受影響(第7位除外);清零USR(TC和TBRE除外);清零MCR;全部的離散信號、內存單元和各種邏輯寄存器位都被清零和關(guān)閉。接著(zhù)清除復位狀態(tài)(RST=0),82C52仍然保持空閑模式直到程序寫(xiě)人。
仿真時(shí),首先驗證Reset的正確性:
Hardware Reset:上電后,82C52的Reset輸人端必須保證至少兩個(gè)時(shí)鐘周期的高電平來(lái)初始化82C52使它進(jìn)人空閑模式。復位引起的操作有:
?、購臀粌炔坎ㄌ芈拾l(fā)生器的時(shí)鐘計數和位計數,將Band Rate Select Register(BRSR)的第七位復位為0。@USR中除了TC和TBRE兩位被置位其余位被清零,MCR被清零,其它相關(guān)的存儲器、寄存器等也都被清零或設為無(wú)效,但要注意復位不影響UCR。復位后空閑模式會(huì )一直保持直到對82C52編程改變它的這種模式。此種復位不影響B(tài)RSR、UCR。
Software Reset:首先讀出USR、RBR中的數據來(lái)清除殘余的數據和狀態(tài),以免造成并發(fā)或重復控制,然后通過(guò)設置UCR、BRSR、MCR三個(gè)寄存器的值,使82C52恢復到空閑狀態(tài)。
(2)編程
編程前需要設置的寄存器有BRSR、MCR和UCR來(lái)初始化82C52,但要注意MCR要最后設置。
UCR:設置幀格式,DO位設置停止位的位數,當DO=0時(shí),停止位是1位,當DO=1時(shí),如果數據是8位的,停止位是1.5位,數據位是5位,停止位是1位,數據位是6、7位,停止位是2位。D3、D2、D1位設置奇偶校驗位。D5、D4為設置數據位數,00=5bits,01=6bits,10:7bits,11=8bits。最高兩位為保留位設置為0。
BRSR:設置波特率,D1、Do兩位控制第一次分頻,00=/1,01=/3,10=/4,11=/5,D6到D2位控制第二次分頻有18種,所以一共有72種分頻方法,經(jīng)兩次分頻后的頻率為82C52最后用的頻率的16倍。
MCR:可以選擇82C52的工作模式、中斷控制、接收發(fā)送申請等命令。DO為請求發(fā)送控制位,低有效。Dl為終端準備好控制位低有效。D2為允許中斷控制位,l為允許中斷。D5為允許接收控制位,1為允許接收,software Reset時(shí)此位設無(wú)效(0)。D6為允許終端中斷控制位,1允許中斷。D7必須設置為0保證82C52被正常設置。D3、D2為模式選擇控制位,00=Normal,01=Transmit Break,10=Echo mode。
到這里,82C52編程前的設置工作就完成了,并且這些設置都是通過(guò)匯編指令完成的。與接收和發(fā)送有關(guān)的寄存器有RBR和TBR,它們從DO 位到D7位依次為bitO到bit7,數據位數少于8時(shí),RBR中有效數據外的其它高位被置成0,TBR中則被忽略。
SDI的數據串行進(jìn)入接收寄存器然后并行進(jìn)入接收緩沖寄存器,然后DR輸出端和USR中的標志位DR都被置位。TRB的狀態(tài)由TBRE輸出端和USR中的flag TBRE標志,TRB和TC都是空時(shí)由USR中的TC flag標志。
USR:UART狀態(tài)寄存器,這個(gè)寄存器中的數據可以通過(guò)CPU讀取來(lái)清空并保持直到狀態(tài)再次發(fā)生改變。
MSR:終端狀態(tài)寄存器。
編程結束,82C52將準備執行通信功能。
評論