義隆單片機(jī)EM78P153使用_第1頁
義隆單片機(jī)EM78P153使用_第2頁
義隆單片機(jī)EM78P153使用_第3頁
義隆單片機(jī)EM78P153使用_第4頁
義隆單片機(jī)EM78P153使用_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于EM78P153S勺應(yīng)用設(shè)計(V1.0)第一章EM78P153S的初識11.1 EM78P152/3S 特性11.2 EM78P152/3S 引腳 21.3功能寄存器21.3.1累加器與端口控制寄存器 21.3.2中斷狀態(tài)寄存器與中斷使能寄存器 31.3.3操作寄存器 41.3.4特殊功能寄存器61.4數(shù)據(jù)存儲器的配置 71.5休眠與喚醒71.6分頻器91.7定時器/計數(shù)器TCC 9第二章EM78系列單片機(jī)應(yīng)用軟件的編輯與仿真 112.1 Simulator的下載與安裝 112.2 Simulator的使用方法112.3 Simulator系統(tǒng)常用命令匯總 142.4 Simulator仿

2、真中的常見問題 15第三章EM78系列單片機(jī)的匯編指令 173.1 尋址方式173.2 偽指令183.3 指令速查表18第四章EM78P153S應(yīng)用軟件設(shè)計204.1 外部中斷程序204.2 花樣燈程序 224.2.1 設(shè)計需求224.2.2 軟件設(shè)計 234.2.3 硬件設(shè)計374.2.4 元器件明侖田表 38第五章EM78系列單片機(jī)應(yīng)用程序的燒錄 395.1 程序的轉(zhuǎn)換過程395.2 燒錄器與燒錄軟件 405.3 燒錄步驟41IEM78P153S使用總結(jié)第一章EM78P153S的初識EM78P152/3S是采用低功耗高速 CMOS工藝設(shè)計開發(fā)的8位微控制器,它的內(nèi)部有一 個1024X 13

3、位一次性可編程只讀存儲器(OTP_ROM),可見1k的只讀存儲器(ROM)決 定了應(yīng)用程序不能夠太多,否則應(yīng)用程序機(jī)器碼將無法燒錄到芯片中。硬件設(shè)計中,EM78P152/3S可以通過設(shè)置代碼選項(xiàng)寄存器使微處理器工作在內(nèi)部RC振蕩模式(IRC)下,此模式下采用上電復(fù)位模式而不需要外接時鐘電路;同時利用上電 自動復(fù)位而不需要外接復(fù)位電路,P63復(fù)位引腳可以直接作為輸入腳使用,充分提高了微 處理器端口的利用率,這樣硬件應(yīng)用電路極為簡化,節(jié)省了硬件成本。此外,EM78P153S單片機(jī)具有休眠模式,在一些不需要微處理器實(shí)時工作的應(yīng)用場合, 可以節(jié)省用電量,特別是在使用電池供電時,應(yīng)用此模式可以延長電池的

4、使用時間;另外 在休眠模式下避免了微處理器在運(yùn)行時受到來自外在雜波信號的干擾而導(dǎo)致程序跑飛。1.1 EM78P152/3S 特性EM78P152/3 S的性能如表1.1所示。表 1.1 EM78P152/3S 特性產(chǎn)品特性備注CPU配置? 1K X儉片內(nèi)ROM? 32 X僥片內(nèi)寄存器? 5級堆棧用于子程序嵌套外于 1.5 mA 5V/4MHz?木眠模式下的典型值為 1 mA。I/O端口配置? 2組雙向I/O端口: P5, P6? 11個I/O引腳狽醒端口: P6? 6個可編程下拉I/O引腳? 7個可編程上拉I/O引腳? 7個可編程漏極開路I/O引腳?外部中斷:P60工作電壓范圍? OTP版本;

5、工作電壓范圍:2.3V5.5V工作頻率范圍? IRC 模式;振蕩模式:4MHz , 8MHz , 1MHz , 455KHz外設(shè)配置? 8位實(shí)時時鐘/計數(shù)器,可編程選擇其信號源、觸發(fā)邊沿,溢出產(chǎn)生中斷三種中斷源? TCC溢出中斷?俞入端口狀態(tài)改變中斷(可使微控制器從休眠模式喚醒)?外部中斷專有特性詁電模式(休眠模式)? 可選振蕩模式封裝類型? 14引腳 DIP : EM78P153SP/S/J? 14引腳 SOP: EM78P153SN/S/J? 10弓|腳 SSOP: EM78P152SN/S/J其它?具備一個保護(hù)寄存器以防止 OTP ROM中的程序代碼被竊取1.2 EM78P152/3S

6、引腳EM78P152/3S的引腳圖如圖1.1,引腳功能如表1.2所示P50P67P66VddPC5/OSCIP64/OSCOP63/RSTP51P52P53VssP6O/7INTP61P62/TCCEM78P153SP/N/S/JP60/INTVssP67P66VddP61P62TTCGP63/RSTFWOSG。P65/OSCIEM78P152SP/N/S/J圖 1.1 EM78P152/3S 引腳圖表1.2 EM78P152/3 S引腳功能表引腳名稱序號類型功能備注P50P531、12、13、14i/o n*通用的I/O引腳P60P62P64P672、3、56、8、9、10I/O*通用的I/

7、O引腳*引腳狀態(tài)發(fā)生改變時,從休眠模式喚醒*可以設(shè)置為上拉P60/INT10I/O*下降沿觸發(fā)的外部中斷引腳P62/TCC8_i/o n*外部定時/計數(shù)器信號輸入引腳P63/RESET7i*若設(shè)置/RESET引腳并使其保持邏輯低,器件將產(chǎn)生復(fù)位*引腳狀態(tài)改變時,從休眠模式喚醒* P63僅用作輸入引腳P64、 P655、6I/O*外部時鐘信號輸入*晶體振蕩器的輸入引腳VDD4*電源正極VSS11_*電源地1.3功能寄存器期望微處理器按預(yù)期的性能工作,就需要對功能寄存器進(jìn)行有效的定義,這也是匯編 編程初始化的基本任務(wù)。針對EM78P153單片機(jī),在匯編程序編寫中,使用頻率相對較高的寄存器有累加器A

8、、I/O端口控制寄存器IOC5IOC6、中斷狀態(tài)寄存器(RF)、中斷使能寄存器(IQCF)o1.3.1累加器與端口控制寄存器示例1端口數(shù)值的傳送(讀取一個端口的值送給另一個端口)。源程序如下:.*;.DIP輸入,LED輸出*dip=5 ; dip5led=6 ;定義顯示端口的地址為6org0x00;定義程序存放區(qū)的起始地址jmpmain;跳轉(zhuǎn)到主程序org0x50;聲明主程序開始地址main:mov a, 0x00;iowled;設(shè)定顯示端口引腳全部輸出mov a, 0xff;iowdip;設(shè)定dip端口全部為輸入loopcoma dip;讀取dip狀態(tài)并取反送 amov led , a ;傳

9、送到端口 6上面顯示jmploop;循環(huán)回去;* end;告知匯編器源程序結(jié)束1、累加器A累加器A用丁內(nèi)部數(shù)據(jù)傳送或指令操作數(shù)暫存,它不可被尋址。寄存器之間的數(shù)據(jù)傳 遞需要通過累加器A來過渡,即寄存器先傳送給 A再由A傳送給另一個寄存器。2、I/O 端口控制寄存器IOC5 IOC6I/O端口控制寄存器IOC5 IOC6:為“1”時,相關(guān)I/O引腳置為高阻態(tài)(輸入);為 “0”時,相關(guān)I/O引腳置為輸出。IOC5寄存器僅低4位可被有效定義,IOC5和IOC6 均為可讀/寫寄存器。1.3.2中斷狀態(tài)寄存器與中斷使能寄存器示例2將寄存器0x20當(dāng)做計數(shù)器,每當(dāng)外部中斷產(chǎn)生,就自動加 1。源程序如下:

10、* ;P60/INT 外部中斷 ;將寄存器0x20當(dāng)做計數(shù)器,每當(dāng)外部中斷產(chǎn)生,就自動加 1 .*ORG0x000x20EXT_PRO;0x08;定義程序存放區(qū)的起始地址;清除計數(shù)器跳轉(zhuǎn)到主程序中斷的入口地址CLRJMPORGINT_EXT:DISI0x0F;使能中斷CLR;清除中斷狀態(tài)寄存器的標(biāo)志位INC0x20;計數(shù)器加1RETI;返回主程序ORG0x50;主程序的開始地址EXT_PRO: CLR0x0F;清除標(biāo)志位MOVA, 0x04;使能外部中斷信號產(chǎn)生IOW0x0F;把A的內(nèi)容送給0x0FMOVA, 0x40;定義P60為外部中斷引腳IOW0x0EENIEXT_WAIT: NOP N

11、OP;開總中斷JMPEXT_WAIT;循環(huán)等待外部中斷* ;END;匯編器源程序結(jié)束1、中斷狀態(tài)寄存器(RF)中斷狀態(tài)寄存器(RF)地址0x0F,它反映三種中斷標(biāo)志情形,硬件自動置 1,均需要通過軟件的方式活0,以活除中斷標(biāo)志。RF各位的含義如表1.3所示。表1.3 中斷狀態(tài)寄存器 RF地址BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT00x0FEXIFICIF二 TCIF其中:Bit 2(EXIF):外部中斷標(biāo)志位,/INT管腳輸入下降沿時置“ 1”,由軟件活“0”; Bit 1(ICIF):端口 6輸入狀態(tài)改變標(biāo)志位,輸入狀態(tài)改變時置“1”,由軟件活“0”; Bit 0(T

12、CIF) : TCC溢出中斷標(biāo)志位,TCC溢出時置“ 1”,由軟件活“0”。2、中斷使能寄存器(IOCF)中斷使能寄存器(IOCF)地址0x0F,與中斷狀態(tài)寄存器共用一個地址,它反映三種中 斷的開啟與關(guān)閉,在程序運(yùn)行每個指令周期中,硬件自身判斷中斷使能位,當(dāng)中斷使能位 為1時響應(yīng)相應(yīng)中斷,同時在中斷服務(wù)程序中務(wù)必活中斷狀態(tài)寄存器的相應(yīng)標(biāo)志位為00IOCF各位的含義如表1.4所示。表1.4 中斷使能寄存器地址BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT00x0FEXIEICIETCIE功能0:禁止EXIF中斷1 :使能EXIF中斷0:禁止ICIF中斷1 :使能ICIF中斷0:禁

13、止TCIF中斷1:使能TCIF中斷其中:Bit 2 (EXIE)是外部中斷EXIF使能位;Bit 1 (ICIE)是端口 6輸入狀態(tài)改變引發(fā) 中斷ICIF使能位;Bit 0 (TCIE)是定時溢出中斷TCIF使能位。1.3.3操作寄存器1、間接尋址寄存器R0R0并非實(shí)際存在的寄存器,它的主要功能是作為間接尋址指針,任何以R0為指針的指 令,實(shí)際上是對RAM選擇寄存器R4所指向地址的數(shù)據(jù)內(nèi)容進(jìn)行操作。2、定時/計數(shù)器R1(1) TCC引腳的外部信號邊沿或內(nèi)部指令周期時鐘觸發(fā) (由CONT寄存器的TE位設(shè) 定),會使TCC寄存器加1;(2) 像其它寄存器一樣可讀/寫;(3) 通過復(fù)位PAB位(CO

14、NT-3)設(shè)定;(4) 如果PAB bit (CONT-3)被復(fù)位,預(yù)分頻器分配給 TCC;(5) 寫入一個值到TCC寄存器后,TCC計數(shù)器的內(nèi)容會被刷新。3、程序計數(shù)器R2&堆棧復(fù)位時,程序計數(shù)器R2所有位均活0,它提供了程序指令代碼的片內(nèi) OTP_ROM地址c 一個程序貞為1024字長。在程序編譯調(diào)試時,可以通過查看 R2的值,判斷程序是否跳轉(zhuǎn) 正常,或者通過對比某個程序的入口判斷是否進(jìn)入某個函數(shù)?!癑MP”指令直接加載程序計數(shù)器的低10位,因此,“JMP”允許PC跳轉(zhuǎn)到一個程序 貞的任何位置。“CALL ”指令首先加載PC的低10位,然后將PC+1推入堆棧,因此,子 程序的入口地

15、址可位丁一個程序貞的任何位置。正常情況下,所有指令均是單指令周期(一個指令周期包含2個振蕩周期),但改變程 序計數(shù)器(R2寄存器)內(nèi)容的指令,均為2個指令周期。EM78P153S有五級堆棧,這就決定了在程序編寫的時候,子程序的嵌套調(diào)用不能夠超 過5次,否則編譯會出錯。4、狀態(tài)寄存器R3(程序)狀態(tài)寄存器R3的地址為0x03,如表1.5所示。表1.5 狀態(tài)寄存器R3地址0x03BIT7RST0代表其它復(fù)位類型引發(fā)喚醒復(fù)位方式;1代表引腳狀態(tài)改變引發(fā)控制器從休眠模式喚醒方式BIT6GP1通用讀/寫位BIT5GP0BIT4T時間溢出標(biāo)志位,執(zhí)行“ SLEP”和“WDTC ”指令或上電時置“ 1 ”,

16、WDT溢出時復(fù)位為“ 0”BIT3P省電標(biāo)志位,上電或執(zhí)行"WDTC”指令時置“ 1”,執(zhí)行“ SLEP”指令時復(fù)位為“ 0”BIT2Z零標(biāo)志位,當(dāng)算術(shù)或邏輯運(yùn)算的結(jié)果為 0時置“ 1 ”BIT1DC輔助進(jìn)位標(biāo)志位BIT0C進(jìn)位標(biāo)志位在程序編譯調(diào)試時,可以通過查看 R3的值,了解程序的工作過程。5、RAM選擇寄存器R4: I/O寄存器,僅低4位可用。6、端口 5寄存器R5: I/O寄存器,引腳都為I/O 口。7、端口 6寄存器R6: I/O寄存器,除P63僅用作輸入引腳外,其它引腳都為I/O 口8、 R10-R2F:所有這些寄存器均為8位通用寄存器。表1.6 控制寄存器CONTBIT

17、7BIT6INT中斷使能標(biāo)志位:0代表被DISI或硬件中斷屏蔽;1代表被ENI/RETI指令使能BIT5TSTCC信號源選擇位:0代表內(nèi)部指令周期時鐘,P62為雙向I/O引腳;1代表TCC引腳的跳變信號BIT4TETCC信號邊沿選擇位:0代表TCC引腳信號由低變到高時 TCC計數(shù)器加1; 1代表TCC引腳信號由高變 到低時TCC計數(shù)器加1BIT3PAB預(yù)分頻器分配位:0代表TCC ; 1代表WDTBIT2PSR2TCC/WDT預(yù)分頻比選擇位PSR200001111BIT1PSR1PSR100110011PSR001010101BIT0PSR0TCC預(yù)分頻比;1:21:41:81:16;1:32

18、1:641:1281:256WDT預(yù)分頻比1:11:21:41:81:161:321:641:1281.3.4特殊功能寄存器1、控制寄存器CONT控制寄存器CONT各位定義如表1.6所示2、下拉控制寄存器IOCB、漏極開路控制寄存器IOCC、上拉控制寄存器IOCD下拉控制寄存器IOCB各位定義如表1.7所示表1.7 下拉控制寄存器IOCBBIT7BIT6/PD6P62引腳下拉功能使能控制位;0代表使能內(nèi)部下拉功能;1代表禁止內(nèi)部下拉功能BIT5/PD5P61引腳下拉功能使能控制位;0代表使能內(nèi)部下拉功能;1代表禁止內(nèi)部下拉功能BIT4/PD4P60引腳下拉功能使能控制位;0代表使能內(nèi)部下拉功能

19、;1代表禁止內(nèi)部下拉功能BIT3BIT2/PD2P52引腳下拉功能使能控制位;0代表使能內(nèi)部下拉功能;1代表禁止內(nèi)部下拉功能BIT1/PD1P51引腳下拉功能使能控制位;0代表使能內(nèi)部下拉功能;1代表禁止內(nèi)部下拉功能BIT0/PD0P50引腳下拉功能使能控制位;0代表使能內(nèi)部下拉功能;1代表禁止內(nèi)部下拉功能漏極開路控制寄存器IOCC各位定義如表1.8所示表1.8 漏極開路控制寄存器IOCCBIT7OD7P67引腳漏極開路功能使能控制位;0代表禁止漏極開路輸出;1代表使能漏極開路輸出BIT6OD6P66引腳漏極開路功能使能控制位;0代表禁止漏極開路輸出;1代表使能漏極開路輸出BIT5OD5P65

20、引腳漏極開路功能使能控制位;0代表禁止漏極開路輸出;1代表使能漏極開路輸出BIT4OD4P64引腳漏極開路功能使能控制位;0代表禁止漏極開路輸出;1代表使能漏極開路輸出BIT3BIT2OD2P62引腳漏極開路功能使能控制位;0代表禁止漏極開路輸出;1代表使能漏極開路輸出BIT1OD1P61引腳漏極開路功能使能控制位;0代表禁止漏極開路輸出;1代表使能漏極開路輸出BIT0OD0P60引腳漏極開路功能使能控制位;0代表禁止漏極開路輸出;1代表使能漏極開路輸出上拉控制寄存器IOCD各位定義如表1.9所示表1.9 上拉控制寄存器IOCDBIT7/PH7P67引腳上拉功能使能控制位;0代表使能內(nèi)部上拉功

21、能;1代表禁止內(nèi)部上拉功能BIT6/PH6P66引腳上拉功能使能控制位;0代表使能內(nèi)部上拉功能;1代表禁止內(nèi)部上拉功能BIT5/PH5P65引腳上拉功能使能控制位;0代表使能內(nèi)部上拉功能;1代表禁止內(nèi)部上拉功能BIT4/PH4P64引腳上拉功能使能控制位;0代表使能內(nèi)部上拉功能;1代表禁止內(nèi)部上拉功能BIT3BIT2/PH2P62引腳上拉功能使能控制位;0代表使能內(nèi)部上拉功能;1代表禁止內(nèi)部上拉功能BIT1/PH1P61引腳上拉功能使能控制位;0代表使能內(nèi)部上拉功能;1代表禁止內(nèi)部上拉功能BIT0/PH0P60引腳上拉功能使能控制位;0代表使能內(nèi)部上拉功能;1代表禁止內(nèi)部上拉功能通過操作IOC

22、B、IOCC、IOCD寄存器可以設(shè)置端口的輸入輸出方式。 當(dāng)某端口作為輸 入口使用時,只需要考慮是否上拉或者下拉;當(dāng)某端口作為輸出口使用時,則考慮是否開 漏極輸出。端口采用內(nèi)部上拉,可以減少外部對引腳電平的干擾,如果要實(shí)現(xiàn)檢測某端口是否為 低電平的功能,則必須設(shè)置為內(nèi)部上拉,若該端口沒有上拉功能,則需要外部加上拉電阻。端口采用內(nèi)部下拉,理論上可以減少外部對引腳電平的干擾,但是實(shí)際的測試效果不 明顯,和沒有設(shè)置下拉的效果一樣。所以如果端口設(shè)置為內(nèi)部下拉,該端口只可以用丁檢 測高電平,但是在沒有輸入的情況下,該引腳的電平并沒有變?yōu)?V以下,不能看作真正的低電平。端口采用內(nèi)部開漏極輸出,適用丁微處理

23、器工作電壓與外圍器件工作電壓不相同的場 合,輸出的高電平將達(dá)不到 VDD電壓值。5、看門狗定時器控制寄存器IOCE看門狗定時器控制寄存器IOCE各位定義如表1.10所示。表1.10 看門狗定時器控制寄存器 IOCE地址BIT7WDTE看門狗定時器使能控制位:0代表禁止 WDT; 1代表使能 WDTBIT6EIS定義P60(/INT)引腳功能的控制位:0定義P60為雙向I/O引腳;1定義為外部中斷輸 入引腳/INT,在此情況下,P60弓I腳的I/O控制位(IOC6的bit 0)必須置為“1”BIT5 01.4數(shù)據(jù)存儲器的配置通過了解數(shù)據(jù)存儲器的分布,可以在仿真時直接了解各個寄存器的狀態(tài)以及程序運(yùn)

24、行 情況,數(shù)據(jù)存儲器的配置如表1.11所示。表1.11數(shù)據(jù)存儲器配置地址R PAGE寄存器IOC PAGE寄存器00R0間接尋址寄存器保留01R1定時/計數(shù)器CONT控制寄存器02R2程序計數(shù)器保留03R3狀態(tài)寄存器保留04R4RAM選擇寄存器保留05R5Port5IOC5I/O端口控制寄存器06R6Port6IOC6I/O端口控制寄存器07保留保留08保留保留09保留保留0A保留保留0B保留IOCB下拉控制寄存器0C保留IOCC漏極開路控制寄存器0D保留IOCD上拉控制寄存器0E保留IOCE看門狗定時器控制寄存器0FRF中斷狀態(tài)寄存器IOCF中斷屏敝寄存器10 2F通用寄存器無1.5休眠與喚

25、醒EM78P152/3S微處理器可以在程序中執(zhí)行 SLEP指令將進(jìn)入休眠模式,微處理器可以 由以下事件喚醒:(1) /RESET引腳的外部復(fù)位信號輸入;(2) WDT溢出(若使能);(3) Port 6輸入狀態(tài)改變(若使能);“/RESET引腳的外部復(fù)位信號輸入”以及“ WDT溢出”都將使 EM78P152/3S復(fù)位, 可用R3寄存器的T和P標(biāo)志位來判斷復(fù)位源(喚醒源)。由丁采用上電復(fù)位的方式,P63 腳將作為輸入腳使用,而不用作復(fù)位腳,所以不存在復(fù)位腳;另外若 WDT的使用頻率不 高,可以設(shè)置為不使能(附:實(shí)際中可以不采取這兩種喚醒模式)。實(shí)際中更多考慮的則是“ Port 6輸入狀態(tài)改變”的

26、喚醒模式?!癙ort 6輸入狀態(tài)改變” 將綜合考慮后續(xù)程序的執(zhí)行和全局中斷(“ENI ”或“DISI”指令的執(zhí)行情況),來決定控 制器在喚醒后是否進(jìn)入中斷向量。如果在 SLEP指令前執(zhí)行了 ENI指令,喚醒后將從地址 為008H處開始執(zhí)行。如果在SLEP指令前執(zhí)行了 DISI指令,喚醒后將從SLEP指令的下 一條指令開始執(zhí)行。在SLEP指令之前Port6輸入狀態(tài)的改變中斷要使能,即中斷使能寄存器(IOCF)中 ICIE位要置“1”,同時必須通過軟件編程禁止 WDT,但代碼選項(xiàng)寄存器(Code Option) 的WDT位仍要保持使能。代碼選項(xiàng)寄存器將在介紹燒錄程序的章節(jié)詳細(xì)介紹。休眠與管腳喚醒的

27、使用步驟:(1) 喚醒端口設(shè)置為輸入口;(2) 使能喚醒端口內(nèi)部上拉;(3) 設(shè)置 WDT分頻比大丁 1:1,并禁止 WDT;(4) 活 TCC;(5) 讀 PORT6狀態(tài),即下 “ MOVPORT6,PORT6'指令;(6) 使能喚醒功能設(shè)置ICIE位為“1”;(7) 如需要中斷則使能總中斷下“ ENI ”指令;(8) 下 “SLEP” 指令;(9) 加三條“ NOP”指令延時;(10) 下 “WDTC” 指令;(11) 禁止 WDT;(12) 禁止管腳喚醒功能;在編程的時候,要注意執(zhí)行 SLEP指令之前,要按照上述步驟編寫, 在SLEP®令后面 要加上三條“ NOP指令,

28、這個不能夠缺少。在休眠模式下,若 WDT已使能,WDT也將 被活零,但WDT會繼續(xù)保持運(yùn)行狀態(tài)。在喚醒后,要間隔10ms左右就要執(zhí)行一次“WDTC” 指令,防止WDT溢出引起復(fù)位。此處設(shè)置預(yù)分頻的比例要大丁 1:1也是為防止WDT溢出 引起復(fù)位。1.6分頻器看門狗定時器 WDT與TCC共用一個分頻器,但某一時刻分頻器只能夠分配給二者之 一。與TCC配合使用時,它是以一個“預(yù)”分頻器的角色出現(xiàn)在TCC的輸入信號路徑中的;而與 WDT配合使用時,它是以一個“后”分頻器的角色出現(xiàn)在WDT的輸出信號路徑中的。分頻器實(shí)際上就是一個8位的累加計數(shù)器,不過不能夠像TCC那樣通過內(nèi)部數(shù)據(jù) 總線用軟件進(jìn)行讀寫操

29、作。分頻器的功能就是將進(jìn)入TCC的時鐘信號(或從 WDT出來的 序列脈沖信號)頻率除以一個指定的倍數(shù),這個倍數(shù)就是分頻比,由 CONT寄存器中的 PSR2PSR0® 決定。需要注意的是,當(dāng)分頻器分配給 TCC時,任何以TCC為目標(biāo)的寫操作指令(如 CLR TCC、MOV TCC, A)都會同時將分頻器活零。同理當(dāng)分頻器分配給 WDT時,一條活 WDT的指令(WDTC)將會同時將分頻器活零。這里說的只是分頻器活零,而分配比和分 配的對象不會改變??撮T狗定時器的時鐘源是一個自由運(yùn)行的片內(nèi)RC振蕩器。即使在其它的振蕩器關(guān)閉的時候(也就是休眠模式下),WDT仍然保持運(yùn)行。在正常模式下或休眠模

30、式下,WDT溢出(若 WDT使能)將會使器件產(chǎn)生復(fù)位。在正常模式下,可以通過軟件編程為禁止或 使能,不使用分頻器的時候, WDT的溢出周期約為18ms。所以通常從休眠模式下喚醒后 要間隔一段時間就要加一條活 WDT的指令,防止 WDT溢出產(chǎn)生復(fù)位。1.7定時器/計數(shù)器TCC與定時器/計數(shù)器TCC模塊相關(guān)的寄存器有4個,分別為R1(TCC寄存器)、RF(中斷狀 態(tài)寄存器)、CONT(控制寄存器)、IOCF(中斷屏蔽寄存器)。TCC具有兩種工作模式,一種 定時器模式,另一種是計數(shù)器模式。兩種模式之間的主要差異就是送入累加計數(shù)寄存器 TCC的“觸發(fā)信號”的來源不同而已。TCC的工作模式由CONT(控

31、制寄存器)的第5位TS 決定。(1)工作模式1、定時器模式當(dāng)TS為0時,TCC模塊工作在定時器模式,觸發(fā)信號源取自丁內(nèi)部的指令周期信號。 一旦往計數(shù)器中寫入初始值后,TCC便重新啟動累加計數(shù)。在沒有使用分頻器的情況下, TCC會在每個指令周期信號到來時自動加 1。在配置了分頻器的情況下,指令周期信號經(jīng) 過分頻器分頻后送給TCC,使TCC自動加1。2、計數(shù)器模式當(dāng)TS為1時,TCC模塊工作在計數(shù)器模式,觸發(fā)信號源取自芯片外部引腳TCC上面的輸入信號。可以通過 CONT(控制寄存器)的第4位TE設(shè)定外部時鐘信號的觸發(fā)邊沿, TE=1時下降沿觸發(fā);TE=0時上升沿觸發(fā)。處丁計數(shù)器模式下,一旦往計數(shù)寄

32、存器中寫入 初值后,TCC便立即開始新一輪的累加計數(shù)。值得注意的一點(diǎn):在一些沒有使用到 TCC的應(yīng)用項(xiàng)目中,如果TCC進(jìn)入定時器模式, 只要單片機(jī)處丁非睡眠狀態(tài),內(nèi)部時鐘就不會停止,以指令周期為觸發(fā)信號的TCC就不停 的自動累加。這不僅增加單片機(jī)額外的電能消耗,而且會個給片內(nèi)其他數(shù)字電路帶來不必 要的干擾。此時可以將 CONT(控制寄存器)的TS位設(shè)定為“1”,使TCC工作在計數(shù)器模 式;同時將外部觸發(fā)輸入引腳 TCC固定接到VDD或VSS,這樣可以使TCC永遠(yuǎn)處丁靜 止?fàn)顟B(tài)。(2) TCC的應(yīng)用使用步驟:1、給TCC寄存器賦初值;2、 設(shè)置CONT寄存器(選擇時鐘源并設(shè)置預(yù)分頻比,當(dāng)預(yù)分頻比

33、分配給 WDT時TCC 預(yù)分頻比為1:1);3、若需要執(zhí)行中斷功能,需設(shè)置IOCF寄存器中的TCIE位為“1”,并執(zhí)行“ENI”指 令。注意:每次計時溢出需給 TCC賦初值(初值為0除外)。計算公式T=(1/FOSC)*Prescaler*(256-TCCcnt)*2(CLK=2)T=(1/FOSC)*Prescaler*(256-TCCcnt)*4(CLK=4)FOSC: TCC 時鐘源頻率;Prescaler TCC 預(yù)分頻比;TCCcnt:TCC(R1)初始值。例如:FOSC=4MHz ; Prescaler=25目 TCCcnt=0; CLK=2 時,計算定時時間 TT=(1/4MHz

34、)*256*(256-0)*2(CLK=2)=32.768ms第二章EM78系列單片機(jī)應(yīng)用軟件的編輯與仿真EMC Simulator是一款開發(fā)軟件,也是一種非實(shí)時性、非在線的仿真工具,在某種程度 上可以代替價格較貴的硬件仿真器,它屆丁軟件模擬器的范疇,以純軟件的方式模擬仿真 EM78P153、EM78P156E、EEM78P447S這三種型號的單片機(jī)。通過軟件的手段來模擬單 片機(jī)的指令執(zhí)行過程和內(nèi)部硬件資源的操作方法,從而實(shí)現(xiàn)對用戶源程序的模擬運(yùn)行、功 能調(diào)試和(深層次)邏輯錯誤查找。EMC Simulator 的局限性:(1) 不能夠模擬單片機(jī)的片外電路;(2) 執(zhí)行速度慢,只適合調(diào)試實(shí)時性

35、要求不高的程序。2.1 Simulator的下載與安裝用戶可以通過訪問這個網(wǎng)站 EMC乏59 J巳卜 立一Hi丁45.! I. »«i.EHFWpar(|TT:g jraKEtW.£ J (S IlnIVK-ll U 廈徑 1nijrrak wiwir*riww*Jirfl 5"M 帆MJ>>>nrriSimulator仿真軟件,圖2.1所示的是打開網(wǎng)站后的頁面。>»0 !U£RimK- rJx:rtim ci圖2.1 網(wǎng)站頁面在技術(shù)支持的標(biāo)題下面就有一個 Simulator (義隆windows模擬仿真軟件)

36、的連接,點(diǎn) 擊之后便自動下載。在下載完之后,可以在下載的文件中,找“Setup.ex4的可執(zhí)行文件,雙擊該文件,即可以開始安裝了。安裝的位置可以自由設(shè)置,然后一直點(diǎn)擊Next,直到完成安裝??梢钥吹阶烂嫔蠈嗔艘粋€新的圖標(biāo),雙擊既可以運(yùn)行此軟件。2.2 Simulator的使用方法通過模擬仿真第一章中示例 2的程序,來介紹如何使用EMC Simulator軟件。(1) 如何建立一個新項(xiàng)目打開軟件后會出現(xiàn)如圖2.2所示的對話框,在下拉選項(xiàng)中可以設(shè)置要模擬的芯片型號,19選擇EM78P153點(diǎn)擊OK,便進(jìn)入了軟件的界面圖2.2型號選擇對話框圖2.3新建工程窗口圖2.4新建工程文件對話框序,也可以

37、直接將已經(jīng)寫好的程序粘貼進(jìn)來圖2.6寄存器和I/O窗口創(chuàng)建一個新項(xiàng)目的方法有兩種:方法一:選擇菜單命令:Project>New.,會出現(xiàn)一個如圖2.3所示的對話框,在其“Project Name”內(nèi)輸入自己的項(xiàng)目文件名(比如在此定義為jf002),系統(tǒng)會自動追加一個擴(kuò)展名.prj。方法二:選擇菜單命令 File>New.,會出現(xiàn)一個如圖2.4所示的對話框,在其中選擇 “Project”標(biāo)簽,并且在其“ Project Name:”條內(nèi)輸入自己的項(xiàng)目名稱。(2)如何在項(xiàng)目中添加文件選擇菜單命令File>New.,出現(xiàn)一個如圖2.4所示的對話框。在“File”標(biāo)簽下,其“File

38、 Name”條內(nèi)輸入自己的源程序文件名,左側(cè)窗口內(nèi)三個選項(xiàng)分別對應(yīng)三種不同拓展名的文 件:源程序文件(.dt或.asm)、頭文件(.h)、和文本文件(.txt)。點(diǎn)擊“OK”后,會出現(xiàn)如 圖2.5所示的空白源文件編輯窗口。在其中可以編輯源程L圖2.5源程序編輯窗口對丁文本編輯的幾點(diǎn)說明:1、支持漢字輸入和編輯功能 2、標(biāo)點(diǎn)符號的輸入要在半角的西文方式下輸入。3、通過選擇菜單命令Option>Font.來自由設(shè)置字體字號(3)如何調(diào)試程序在調(diào)試程序之前,要進(jìn)行程序的編譯工作,選擇菜單命令Project>Rebuild All,此后在輸出信息窗口可以看到匯編和鏈接的結(jié)果。沒有錯誤,沒有

39、警告,沒有提示信息,編譯完 成之后,進(jìn)行復(fù)位操作,復(fù)位之后的寄存器狀態(tài)如圖2.6所小。復(fù)位操作的具體方法有三種:(1) 選擇菜單命令Debug>Reset(2) 按一次鍵盤上F6鍵;(3) 點(diǎn)擊工具欄上面的G圖標(biāo)。軟件模擬器提供了多種運(yùn)行程序的方式或調(diào)試程序的 手段,比較常用的有以下幾種:設(shè)置寄存器觀察窗、復(fù)位、 連續(xù)運(yùn)行、單步運(yùn)行、自動單步運(yùn)行和連續(xù)單步運(yùn)行、設(shè) 置斷點(diǎn)運(yùn)行、自由運(yùn)行、運(yùn)行到光標(biāo)、從指定行開始運(yùn)行 等。其具體的用法和Keil中的調(diào)試類似。and 5m ynyU:血:im Ft E KEtrYOhiWI調(diào)SEl.ir_E:c:D1SI:失Kt中!WCLGOSOF.清障標(biāo)志

40、位誑0X20計低喜卻IEET1:迥tel主程序ORG0)(50.主理序的開餡虬此:Jtr.PRO:CLEMOP清除悸志趨她Vk40X04皿能州冊中斷宣號產(chǎn)生OSOF瀏A, SOS40走KP6D為炒郎中折引禪10VMOEEXI.開度/折河州:SOPEsr.nrr謔環(huán)等行件冊中昕圖2.7調(diào)試示意圖1此實(shí)例中采用單步運(yùn)行的方式來調(diào)試程序,這樣可以很直觀的看到每條語句執(zhí)行完后 寄存器的改變情況(每次寄存器的數(shù)值有修改都會將改動的地方變?yōu)榧t色,以示區(qū)別)通過單步操作,程序?qū)?EXI_WAIT子程序中循序執(zhí)行,等待外部中斷信號。如圖 2.7所示。此時通過修改寄存器的值,來模擬外部中斷信號的產(chǎn)生,進(jìn)而觀

41、察程序的運(yùn)行STand I/Os VindGTJ |回|X0UPPins StatusP5 601001111 ClocksA CO:4U CUMIIFFR 1 000 RO(AaU):O»tFFR1 169 R1/TCC:001412on H2/FCR 1300 R3 :600111aoAUi09765M3210141UH Ha:UUI9ClillllE»UR 1600 fi5 GF C5 0IFR1769 H6 :FE C6:FFI4 WUHR09Rift00141 EEm»R 1C00CB z FFR:1l»09CC : 0i0141 LUUDD

42、: FFR 1F09CE :J|0RF :G0 CF:W<I>圖2.8調(diào)試示意圖2圖2.9調(diào)試示意圖3情況具體方法:將光標(biāo)停留在P6端口的第1位上面,然后單擊鼠標(biāo)左鍵,此時第1位和第2位之間將會出現(xiàn)閃爍的光標(biāo)。通過輸入 0來模擬外部中斷的下降沿信號。每修改一個數(shù)字,系統(tǒng)均會立即更改“軟件模擬器”的緩沖存儲器。人工修改后的值自動以“藍(lán)色”顯示,以示區(qū)別。操作的示意圖如圖2.8。此時點(diǎn)擊單步運(yùn)行一次,就會看到PC指針已經(jīng)指向了地址0x08, 這是中斷的入口地址,操作示意圖如圖2.9。2.3 Simulator系統(tǒng)常用命令匯總(1)自定義寄存器變量的視窗Watch通過選擇View菜單命令

43、,選擇 Watch選項(xiàng),可以打開觀察窗(Watch Window)。剛打圖2.10 添加變量到觀察窗開時是一個空窗口,可以添加所需觀察的寄存器變量。 操作步驟如下:利用菜單命令 Project>Dump to ICE ,將目標(biāo)文件 裝載到模擬器的虛擬緩沖器內(nèi)。利用菜單命令 Debug>Add label to watch,即可打開 一個如圖2.10所示的對話框,在“ File”窗口顯示源程 序及其存放路徑。在“ Label”窗口中,選中其中的變 量,然后點(diǎn)擊“ Add to watch”按鈕,此時在該變量前 面就會出現(xiàn)一個“*”,表明該變量已經(jīng)比添加到了 Watch 窗口。(2)

44、Get 1FFF Code Space(獲取程序存儲器占用信息)獲取關(guān)丁程序存儲器各個頁面空閑情況的統(tǒng)計信息,并且顯示在輸出信息窗口中。例表 1 Output Vi Tidnv.回區(qū)1Code=lFFF, Pa睛=0.Start=0X00O2,Code=lFFF, Pa窿=。,Start-OXOOOC,End=0XO007,End=0XOO4F, Size-68圖2.11輸出視窗如在調(diào)試示例2的集成模擬環(huán) 境中,在Tool下拉菜單命令中 點(diǎn)擊此條內(nèi)容,則會顯示如下 如圖2.11里面的內(nèi)容。該內(nèi)容表示程序存儲的位置以及沒有使用的地址范圍,其中 Start與End表示沒有使用的起始地址與結(jié)束地址,

45、Size表示是沒有使用的地址的范圍。需要說圖2.12寄存器顯示格式對話框明的是,這里面說顯示的剩余空間是指在 0x50前面的地 址,而在其后面的地址是沒有給出的。 在0x50后面的地址 是存放主程序的。(3) Register view (寄存器視圖)設(shè)定部分常用寄存器的顯示格式,是以十六進(jìn)制還是 以二進(jìn)制格式顯示。方法是在Option選擇命令中選擇其選 項(xiàng)。在彈出的對話框中,把打算二進(jìn)制顯示的寄存器進(jìn)行 勾選,沒有勾選的默認(rèn)為以十六進(jìn)制顯示,如圖2.12所示。(4) Debug (調(diào)試類操作命令)在Debug下拉菜單如圖2.13所示,從上到下依次代表的含義是:1、Go:連續(xù)運(yùn)行2、Reset

46、系統(tǒng)復(fù)位BTBP1&3 caraiectedTool Optig Ki.nd.4iT H«lp如Into3、Step into:單步進(jìn)入4、Step over :單步跨越5、Go to Cursor:運(yùn)行到光標(biāo)處T# Cursor knim Run £rambdl lingT£gle Show all breakpointT Add m w-it ch Ktstt 虹0rmAndAlt*F5Clear all Clear watchTra.ceTra.cc For t!h圖2.13調(diào)試類操作命令6、Animation:自動單步運(yùn)行7、Run from se

47、lected line: 選定行作為運(yùn)行的起點(diǎn)8、Toggle Brakpoint :設(shè)置、刪除斷點(diǎn)9、Show all breakpint:顯示所有的斷點(diǎn)10、Add label to watch:添加標(biāo)號到觀察窗11、Reset and Free rurj位和自由運(yùn)行12、Reset and Go復(fù)位和連續(xù)運(yùn)行13、Clear all breakpoint游除所有的斷點(diǎn)14、Clear watch:活除觀察窗15、Trace back反向追蹤16、Track forth:正向追蹤2.4 Simulator仿真中的常見問題1、仿真時候出現(xiàn)執(zhí)行完一些語句后,但相應(yīng)的寄存器并沒有修改?【方法】一

48、般情況下是軟件自身問題,需要關(guān)閉軟件后再重新打開仿真。2、在程序中設(shè)置端口的值,執(zhí)行完相關(guān)語句后,端口的值并沒有改變?【方法】需要明確的是先設(shè)置的端口值還是先設(shè)置的端口輸入輸出狀態(tài),如果是先設(shè) 置的是端口值,那么要等設(shè)置完端口的輸入輸出狀態(tài)后,才會在寄存器窗口中顯示出來。 一般先設(shè)置端口的輸入輸出狀態(tài)再設(shè)置端口值,那么就不會出現(xiàn)這種情況了。3、編譯的時候提示找不到頭文件?【方法】把頭文件放到在工程文件的目錄下面,再次編譯既可以。4、編譯時出現(xiàn)地址超過多少范圍的提示?【方法】對丁 EM78P153地址最大可以到1FFH,而EM78P153S則可以到3FFH。仿 真軟件只能夠仿真EM78P153,

49、所以如果程序的存儲地址超過了 1FFH,就會出現(xiàn)錯誤提示。EM78P153S使用總結(jié) 如果需要仿真EM78P153S的程序,而且程序的存儲地址已經(jīng)超過了 1FFH,那么只能夠通 過硬件仿真器來實(shí)現(xiàn)了。5、頭文件的調(diào)用由丁仿真軟件只能夠仿真型號為 EM78P153的芯片,而不能夠仿真EM78P153S芯片, 所以仿真時在調(diào)用頭文件的時候,要注意調(diào)用的是EM78P153.INC頭文件,而不是EM78P153S.INC頭文件。這兩個頭文件只是里面的定義方式有不同,在程序調(diào)用中,不存在差別。當(dāng)要燒錄EM78P153S芯片程序的時候,只要在另一款義隆單片機(jī)的編譯軟件(Wice Plus)中,新建一個工程

50、并且將之前仿真時候建立的以“ .DT”為后綴的文件添加進(jìn)來,然 后將頭文件改為EM78P153S.INC,編譯通過之后就可以通過燒錄軟件給芯片燒錄程序了, 具體的過程燒錄程序章節(jié)介紹。6、在調(diào)試程序時,若采取程序延時且延時時間比較長就會出現(xiàn)程序亂跑的情形?【方法】將延時函數(shù)循環(huán)變量的值設(shè)小些,再次調(diào)試,如果不行,就需要設(shè)置更小。 一般調(diào)試的時候是設(shè)置為1,便丁程序的調(diào)試。出現(xiàn)這種問題的原因可能是軟件自身的缺 陷所致。所以,一旦程序中需要延時功能,盡可能采取硬件定時手段(定時器)。20EM78P153S使用總結(jié)第三章EM78系列單片機(jī)的匯編指令EM78系列單片機(jī)共有指令 47條(EM78P447

51、、EM78P 451、EM78P 458各有48條), 指令碼寬度為13位。一條指令的指令碼一般可以分成兩部分:第一部分為操作碼,代表 指令的功能;第二部分為操作數(shù),表示指令操作的對象,或運(yùn)算時所需要的參數(shù)。3.1 尋址方式指令是CPU執(zhí)行特殊運(yùn)算的代碼,它是程序語句的核心,一般在程序語句中還包含有 操作數(shù),對操作數(shù)的操作就需要明確操作數(shù)的屆性,即究竟是源操作數(shù)還是目的操作數(shù)? 究竟是參與運(yùn)算的數(shù)據(jù)還是數(shù)據(jù)所在的存放地址?總體而言就是需要對操作數(shù)尋址。尋址就是尋找操作數(shù)的存放地址,尋址方式就是尋找操作數(shù)或者操作數(shù)所在地址的方 法或形式。根據(jù)操作數(shù)來源的不同,有 5種尋址方式。(1) 立即數(shù)尋址:操作數(shù)為立即數(shù),直接從指令中獲取。例MOV A , 0x16;將常數(shù)0x16送給寄存器A(2) 直接尋址:若是要存取寄存器的內(nèi)容,需要通過累加器A來過渡。例將寄存器0x20的內(nèi)容,復(fù)制到寄存器0x21中。MOVA, 0x20MOV0x21, A(3) 間接尋址:通過寄存器R4來實(shí)現(xiàn),R4的bit0-5是用來選擇寄存器(地址:00-06, 0F

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論