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