第6章字輸入輸出_第1頁
第6章字輸入輸出_第2頁
第6章字輸入輸出_第3頁
第6章字輸入輸出_第4頁
第6章字輸入輸出_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1第第6 6章章 數(shù)字輸入輸出數(shù)字輸入輸出i/oi/o 4141只只i/oi/o引腳,大部分是復(fù)用的。引腳,大部分是復(fù)用的。dspdsp復(fù)位時(shí)復(fù)位時(shí), ,大部分大部分i/oi/o引腳會(huì)被上拉為引腳會(huì)被上拉為數(shù)字輸入數(shù)字輸入的模式。的模式。數(shù)字?jǐn)?shù)字i/oi/o腳有腳有專用專用和和復(fù)用復(fù)用之分。其功能可通過之分。其功能可通過9 9個(gè)個(gè)1616位位控控制寄存器制寄存器來控制。來控制??刂萍拇嫫鞣譃閮深悾嚎刂萍拇嫫鞣譃閮深悾海? 1)i/oi/o復(fù)用控制復(fù)用控制寄存器(寄存器(mcrx)mcrx),用來選擇,用來選擇i/oi/o腳是腳是片片 內(nèi)外設(shè)功能內(nèi)外設(shè)功能還是還是通用通用i/oi/o功能功能;(

2、2 2)數(shù)據(jù)方向控制數(shù)據(jù)方向控制寄存器(寄存器(pxdatdir)pxdatdir):用來控制雙向:用來控制雙向2i/oi/o腳的數(shù)據(jù)傳送方向。腳的數(shù)據(jù)傳送方向。注意:注意:上述數(shù)字上述數(shù)字i/oi/o腳是通過控制寄存器(映射在數(shù)腳是通過控制寄存器(映射在數(shù)據(jù)存儲(chǔ)器空間)來控制的,據(jù)存儲(chǔ)器空間)來控制的,與器件的與器件的i/oi/o空間無任何空間無任何關(guān)系關(guān)系。i/oi/o復(fù)用引腳的結(jié)構(gòu)見復(fù)用引腳的結(jié)構(gòu)見圖圖6-16-1。由圖可看出復(fù)用。由圖可看出復(fù)用i/oi/o引腳引腳 如何實(shí)現(xiàn)來如何實(shí)現(xiàn)來引腳功能選擇引腳功能選擇和和數(shù)據(jù)數(shù)據(jù) 傳送方向傳送方向選擇的。選擇的。6.1 6.1 數(shù)字?jǐn)?shù)字i/oi

3、/o寄存器簡介寄存器簡介34表表6-16-1(p65p65)列出了與)列出了與i/oi/o模塊有關(guān)的寄存器,地址為:模塊有關(guān)的寄存器,地址為:7090h-709fh7090h-709fh(映射在數(shù)據(jù)存儲(chǔ)器間映射在數(shù)據(jù)存儲(chǔ)器間) 表表6-1 lf240 x/240 xa 6-1 lf240 x/240 xa 的數(shù)字的數(shù)字i/oi/o控制寄存器控制寄存器 地址地址 寄存器寄存器 功能功能 7090h mcra i/o7090h mcra i/o復(fù)用控制復(fù)用控制寄存器寄存器a a 7092h mcrb i/o 7092h mcrb i/o復(fù)用控制復(fù)用控制寄存器寄存器b b5地址地址 寄存器寄存器 功

4、能功能7094h mcrc i/o復(fù)用控制復(fù)用控制寄存器寄存器c7098h padatdir i/o端口端口a數(shù)據(jù)和方向寄存器數(shù)據(jù)和方向寄存器709ah pbdatdir i/o端口端口b數(shù)據(jù)和方向寄存器數(shù)據(jù)和方向寄存器709ch pcdatdir i/o端口端口c數(shù)據(jù)和方向寄存器數(shù)據(jù)和方向寄存器709eh pddatdir i/o端口端口d數(shù)據(jù)和方向寄存器數(shù)據(jù)和方向寄存器7095h pedatdir i/o端口端口e數(shù)據(jù)和方向寄存器數(shù)據(jù)和方向寄存器7096h pfdatdir i/o端口端口f數(shù)據(jù)和方向寄存器數(shù)據(jù)和方向寄存器6 保留位保留位是不可操作的,讀出為是不可操作的,讀出為0 0,寫入

5、對(duì)它無影響。,寫入對(duì)它無影響。注意注意:當(dāng)復(fù)用:當(dāng)復(fù)用i/oi/o腳腳無論無論是被配置為外設(shè)功能還是為是被配置為外設(shè)功能還是為通用通用i/oi/o時(shí),時(shí),引腳的狀態(tài)引腳的狀態(tài)都可通過讀都可通過讀i/oi/o數(shù)據(jù)寄存器來數(shù)據(jù)寄存器來獲取。獲取。7(2 2) i/oi/o端口復(fù)用控制寄存器端口復(fù)用控制寄存器b b,映射地址:,映射地址:7092h7092h, 其配置見表其配置見表 6-36-3(p66p66)。(3 3) i/oi/o端口復(fù)用控制寄存器端口復(fù)用控制寄存器c(mcrc)c(mcrc),映射地址:,映射地址: 7094h7094h,其配置見表其配置見表 6-46-4(p67p67)。6

6、.2 i/o 6.2 i/o 端口復(fù)用控制寄存器端口復(fù)用控制寄存器lf240 x/240 xalf240 x/240 xa具有具有3 3個(gè)個(gè)i/oi/o端口復(fù)用控制寄存器端口復(fù)用控制寄存器: mcramcra、mcrbmcrb、mcrcmcrc。(1 1) i/oi/o端口復(fù)用控制寄存器端口復(fù)用控制寄存器a (mcra)a (mcra),映射址:,映射址: 7090h7090h,其配置見表,其配置見表 6-26-2(p65p65)。8lf2407/2407alf2407/2407a有有6 6個(gè)個(gè)數(shù)據(jù)和方向控制寄存器數(shù)據(jù)和方向控制寄存器(pxdatdirpxdatdir), ), 這些數(shù)據(jù)和方向

7、控制寄存器包含控制這些數(shù)據(jù)和方向控制寄存器包含控制引腳的兩個(gè)功能位。引腳的兩個(gè)功能位。 i/o i/o方向位方向位 如果引腳被選擇如果引腳被選擇通用通用i/oi/o,方向位決定了該引腳,方向位決定了該引腳是輸入(是輸入(0 0)還是輸出()還是輸出(1 1)。)。 i/o i/o數(shù)據(jù)位數(shù)據(jù)位 如果引腳被選擇了如果引腳被選擇了通用通用i/oi/o,當(dāng)方向選為輸入,當(dāng)方向選為輸入,則可從該位上讀取數(shù)據(jù),當(dāng)方向選為輸出,則可向該則可從該位上讀取數(shù)據(jù),當(dāng)方向選為輸出,則可向該位寫入數(shù)據(jù)位寫入數(shù)據(jù) 。6.3 6.3 數(shù)據(jù)和方向控制寄存器數(shù)據(jù)和方向控制寄存器9當(dāng)當(dāng)i/oi/o端口被端口被選擇選擇作作通用通

8、用i/oi/o引腳引腳,數(shù)據(jù)和方向控制寄,數(shù)據(jù)和方向控制寄 存器可以控制數(shù)據(jù)和存器可以控制數(shù)據(jù)和i/oi/o引腳的數(shù)據(jù)方向。引腳的數(shù)據(jù)方向。如果如果i/oi/o端口被端口被選擇選擇作作外設(shè)外設(shè)功能時(shí),功能時(shí),數(shù)據(jù)和方向控制寄數(shù)據(jù)和方向控制寄 存器的設(shè)置對(duì)相應(yīng)的引腳無影響存器的設(shè)置對(duì)相應(yīng)的引腳無影響。下面詳細(xì)介紹數(shù)。下面詳細(xì)介紹數(shù) 據(jù)和方向控制寄存器。據(jù)和方向控制寄存器。(1 1)i/oi/o端口端口a a數(shù)據(jù)和方向控制寄存器(數(shù)據(jù)和方向控制寄存器(padatdir)padatdir),映射地址:映射地址:7098h,7098h,格式如下。格式如下。位位15-815-8:andir andir

9、pa7-pa0pa7-pa0的數(shù)據(jù)方向的數(shù)據(jù)方向 0 0相應(yīng)引腳配置為輸入相應(yīng)引腳配置為輸入 1 1相應(yīng)引腳配置為輸出相應(yīng)引腳配置為輸出10位位7-07-0:iopaniopan如果如果andir=0andir=0,引腳配置為輸入,引腳配置為輸入: : 0 0相應(yīng)引腳的電平讀為低電平相應(yīng)引腳的電平讀為低電平 1 1相應(yīng)引腳的電平讀為高電平相應(yīng)引腳的電平讀為高電平如果如果andir=1andir=1,引腳配置為輸出,引腳配置為輸出: : 0 0設(shè)置相應(yīng)引腳,使其輸出信號(hào)為低電平設(shè)置相應(yīng)引腳,使其輸出信號(hào)為低電平 1 1設(shè)置相應(yīng)引腳,使其輸出信號(hào)為高電平設(shè)置相應(yīng)引腳,使其輸出信號(hào)為高電平當(dāng)引腳選擇

10、為通用當(dāng)引腳選擇為通用i/oi/o功能時(shí),那么功能時(shí),那么i/oi/o端口端口a a數(shù)數(shù)據(jù)和方向控制寄存器(據(jù)和方向控制寄存器(padatdir)padatdir)的數(shù)據(jù)位與對(duì)的數(shù)據(jù)位與對(duì)應(yīng)的應(yīng)的i/oi/o引腳如表引腳如表6.56.5(p69p69)所示。所示。11表表6.5 6.5 寄存器寄存器padatdirpadatdir的數(shù)據(jù)位與對(duì)應(yīng)的的數(shù)據(jù)位與對(duì)應(yīng)的i/oi/o引腳引腳 如果如果i/oi/o端口端口用作通用用作通用i/oi/o,則必須對(duì)數(shù)據(jù)和方向則必須對(duì)數(shù)據(jù)和方向寄存器進(jìn)行初始化設(shè)置寄存器進(jìn)行初始化設(shè)置,規(guī)定其為輸入端口還是輸出,規(guī)定其為輸入端口還是輸出端口。端口。12(2 2)

11、i/oi/o端口端口b b數(shù)據(jù)和方向控制寄存器(數(shù)據(jù)和方向控制寄存器(pbdatdir)pbdatdir),映射地址:映射地址:709ah709ahi/oi/o端口端口b b數(shù)據(jù)和方向控制寄存器的格式如下。數(shù)據(jù)和方向控制寄存器的格式如下。 位位15-815-8:bndir pb7-pb0bndir pb7-pb0的數(shù)據(jù)方向的數(shù)據(jù)方向 0 0相應(yīng)引腳配置為輸入相應(yīng)引腳配置為輸入 1 1相應(yīng)引腳配置為輸出相應(yīng)引腳配置為輸出 位位7-07-0:iopbniopbn 如果如果bndir=0bndir=0,引腳配置為輸入方式。,引腳配置為輸入方式。 0 0相應(yīng)引腳的電平讀為低電平相應(yīng)引腳的電平讀為低電平

12、 1 1相應(yīng)引腳的電平讀為高電平相應(yīng)引腳的電平讀為高電平13 如果如果bndir=1bndir=1,引腳配置為輸出,引腳配置為輸出 0 0設(shè)置相應(yīng)引腳,使其輸出信號(hào)為低電平時(shí)有設(shè)置相應(yīng)引腳,使其輸出信號(hào)為低電平時(shí)有 效效 1 1設(shè)置相應(yīng)引腳,使其輸出信號(hào)為高電平時(shí)有設(shè)置相應(yīng)引腳,使其輸出信號(hào)為高電平時(shí)有 效效當(dāng)引腳選擇為通用當(dāng)引腳選擇為通用i/oi/o功能時(shí),那么功能時(shí),那么i/oi/o端口端口b b數(shù)據(jù)和方數(shù)據(jù)和方 向控制寄存器(向控制寄存器(pbdatdir)pbdatdir)的數(shù)據(jù)位與對(duì)應(yīng)的的數(shù)據(jù)位與對(duì)應(yīng)的i/oi/o引引 腳如腳如表表6.66.6所示。所示。14(3 3) i/oi/o

13、端口端口c c數(shù)據(jù)和方向控制寄存器數(shù)據(jù)和方向控制寄存器(pcdatdir)pcdatdir), 映射地址:映射地址:709ch709ch i/o i/o端口端口c c數(shù)據(jù)和方向控制寄存器的格式如下:數(shù)據(jù)和方向控制寄存器的格式如下:位位15-815-8:cndir pc7-pc0cndir pc7-pc0的數(shù)據(jù)方向的數(shù)據(jù)方向 0 0相應(yīng)引腳配置為輸入相應(yīng)引腳配置為輸入 1 1相應(yīng)引腳配置為輸出相應(yīng)引腳配置為輸出位位7-07-0:iopc7-iopc0iopc7-iopc0 如果如果cndir=0cndir=0,引腳配置為輸入。,引腳配置為輸入。 0 0相應(yīng)引腳的電平讀為低電平相應(yīng)引腳的電平讀為低

14、電平 1 1相應(yīng)引腳的電平讀為高電平相應(yīng)引腳的電平讀為高電平15如果如果bndir=1bndir=1,引腳配置為輸出,引腳配置為輸出 0 0設(shè)置相應(yīng)引腳,使其輸出信號(hào)為低電平設(shè)置相應(yīng)引腳,使其輸出信號(hào)為低電平 1 1設(shè)置相應(yīng)引腳,使其輸出信號(hào)為高電平設(shè)置相應(yīng)引腳,使其輸出信號(hào)為高電平當(dāng)引腳選擇為通用當(dāng)引腳選擇為通用i/oi/o功能時(shí),那么功能時(shí),那么i/oi/o端口端口c c數(shù)據(jù)和方數(shù)據(jù)和方 向控制寄存器(向控制寄存器(pcdatdir)pcdatdir)的數(shù)據(jù)位與對(duì)應(yīng)的的數(shù)據(jù)位與對(duì)應(yīng)的i/oi/o引引 腳如表腳如表6.76.7所示。所示。(4 4) i/oi/o端口端口d d數(shù)據(jù)和方向控制寄

15、存器(數(shù)據(jù)和方向控制寄存器(pddatdir)pddatdir), 映射地址:映射地址:709eh709ehi/oi/o端口端口d d數(shù)據(jù)和方向控制寄存器的格式如下。數(shù)據(jù)和方向控制寄存器的格式如下。只有一位只有一位16位位15-915-9:保留位:保留位位位8 8: d0dir d0dir 0 0相應(yīng)引腳配置為輸入相應(yīng)引腳配置為輸入 1 1相應(yīng)引腳配置為輸出相應(yīng)引腳配置為輸出位位7-17-1:保留:保留位位0 0: iopd0iopd0 如果如果d0dir=0d0dir=0,引腳配置為輸入。,引腳配置為輸入。 0 0相應(yīng)引腳的電平讀為低電平相應(yīng)引腳的電平讀為低電平 1相應(yīng)引腳的電平讀為高電平相

16、應(yīng)引腳的電平讀為高電平17如果如果d0dir=1d0dir=1,引腳配置為輸出,引腳配置為輸出 0 0設(shè)置相應(yīng)引腳,使其輸出信號(hào)為低電平時(shí)有效設(shè)置相應(yīng)引腳,使其輸出信號(hào)為低電平時(shí)有效 1 1設(shè)置相應(yīng)引腳,使其輸出信號(hào)為高電平時(shí)有效設(shè)置相應(yīng)引腳,使其輸出信號(hào)為高電平時(shí)有效當(dāng)引腳選擇為通用當(dāng)引腳選擇為通用i/oi/o功能時(shí),那么功能時(shí),那么i/oi/o端口端口d d數(shù)據(jù)和方數(shù)據(jù)和方 向控制寄存器(向控制寄存器(pddatdir)pddatdir)的數(shù)據(jù)位與對(duì)應(yīng)的的數(shù)據(jù)位與對(duì)應(yīng)的i/oi/o引引 腳如表腳如表6.86.8所示。所示。(5 5) i/oi/o端口端口e e數(shù)據(jù)和方向控制寄存器數(shù)據(jù)和方向

17、控制寄存器(pedatdir)pedatdir), 地址:地址:7095h7095h i/o i/o端口端口e e數(shù)據(jù)和方向控制寄存器的格式如下:數(shù)據(jù)和方向控制寄存器的格式如下:18位位15-815-8:endirendir 0 0相應(yīng)引腳配置為輸入相應(yīng)引腳配置為輸入 1 1相應(yīng)引腳配置為輸出相應(yīng)引腳配置為輸出位位7-07-0:iopeniopen 如果如果endir=0endir=0,引腳配置為輸入。,引腳配置為輸入。 0 0相應(yīng)引腳的電平讀為低電平相應(yīng)引腳的電平讀為低電平 1 1相應(yīng)引腳的電平讀為高電平相應(yīng)引腳的電平讀為高電平如果如果endir=1endir=1,引腳配置為輸出,引腳配置為

18、輸出 0 0設(shè)置相應(yīng)引腳,使其輸出信號(hào)為低電平設(shè)置相應(yīng)引腳,使其輸出信號(hào)為低電平 時(shí)有效時(shí)有效191 1設(shè)置相應(yīng)引腳,使其輸出信號(hào)為高電平時(shí)有效設(shè)置相應(yīng)引腳,使其輸出信號(hào)為高電平時(shí)有效當(dāng)引腳選擇為通用當(dāng)引腳選擇為通用i/oi/o功能時(shí),那么功能時(shí),那么i/oi/o端口端口e e數(shù)據(jù)和方數(shù)據(jù)和方向控制寄存器(向控制寄存器(pedatdir)pedatdir)的數(shù)據(jù)位與對(duì)應(yīng)的的數(shù)據(jù)位與對(duì)應(yīng)的i/oi/o引引腳如表腳如表6.96.9所示。所示。(6 6) i/oi/o端口端口f f數(shù)據(jù)和方向控制寄存器(數(shù)據(jù)和方向控制寄存器(pfdatdir)pfdatdir), 映射地址:映射地址:7096h709

19、6hi/oi/o端口端口e e數(shù)據(jù)和方向控制寄存器的格式如下。數(shù)據(jù)和方向控制寄存器的格式如下。 位位1515: :保留位保留位 位位14-814-8:endirendir 0 0相應(yīng)引腳配置為輸入相應(yīng)引腳配置為輸入 1 1相應(yīng)引腳配置為輸出相應(yīng)引腳配置為輸出包含包含7位位20位位7-07-0:iopfniopfn 如果如果fndir=0fndir=0,引腳配置為輸入。,引腳配置為輸入。 0 0相應(yīng)引腳的電平讀為低電平相應(yīng)引腳的電平讀為低電平 1 1相應(yīng)引腳的電平讀為高電平相應(yīng)引腳的電平讀為高電平 如果如果fndir=1fndir=1,引腳配置為輸出,引腳配置為輸出 0 0設(shè)置相應(yīng)引腳,使輸出為

20、低電平有效設(shè)置相應(yīng)引腳,使輸出為低電平有效 1 1設(shè)置相應(yīng)引腳,使輸出為高電平有效設(shè)置相應(yīng)引腳,使輸出為高電平有效當(dāng)引腳選擇為通用當(dāng)引腳選擇為通用i/oi/o功能時(shí),那么功能時(shí),那么i/oi/o端口端口e e數(shù)據(jù)和方數(shù)據(jù)和方 向控制向控制21寄存器(寄存器(pfdatdir)pfdatdir)的數(shù)據(jù)位與對(duì)應(yīng)的的數(shù)據(jù)位與對(duì)應(yīng)的i/oi/o引腳如表引腳如表 6.106.10 所示。所示。 在使用數(shù)字在使用數(shù)字i/oi/o之前,之前,需用軟件對(duì)數(shù)字需用軟件對(duì)數(shù)字i/oi/o進(jìn)行配進(jìn)行配置,置,選擇選擇i/oi/o引腳的功能,且設(shè)置引腳的功能,且設(shè)置i/oi/o引腳的數(shù)據(jù)方向,引腳的數(shù)據(jù)方向,然后才可

21、以讀取數(shù)據(jù)或輸出數(shù)據(jù)。然后才可以讀取數(shù)據(jù)或輸出數(shù)據(jù)。 下面為下面為一個(gè)基本的數(shù)字一個(gè)基本的數(shù)字i/oi/o配置實(shí)例配置實(shí)例的匯編源程的匯編源程序。讀者可參照此程序,來配置其它的任何數(shù)目的數(shù)序。讀者可參照此程序,來配置其它的任何數(shù)目的數(shù)字字i/oi/o。6.4 6.4 數(shù)字?jǐn)?shù)字i/oi/o端口配置實(shí)例端口配置實(shí)例22mcra .set7090h mcra .set7090h ; ;可將這些映射語句放于可將這些映射語句放于240 x.h240 x.h文件文件中中padatdir .set7098h padatdir .set7098h ; ;可將這些映射語句放于可將這些映射語句放于240 x.h2

22、40 x.h文件文件中中pbdatdir .set709ahpbdatdir .set709ah; ;可將這些映射語句放于可將這些映射語句放于240 x.h240 x.h文件文件中中l(wèi)dp #0e1hldp #0e1h ; ;指向相應(yīng)的數(shù)據(jù)頁面指向相應(yīng)的數(shù)據(jù)頁面lacc #0hlacc #0h ; ;設(shè)置設(shè)置mcramcra所有位均為所有位均為0 0sacl mcra sacl mcra ; ;將引腳將引腳iopa0-7iopa0-7和和iopb0-7iopb0-7配置為配置為i/oi/o引腳引腳sacl padatdir sacl padatdir ; ;引腳引腳iopa0-7iopa0-7

23、配置為輸入,低電平有效配置為輸入,低電平有效lacc #0f00hlacc #0f00h ; ;引腳引腳iopb7-iopb4iopb7-iopb4配置為輸入配置為輸入sacl pbdatdirsacl pbdatdir ; ;引腳引腳iopb3-iopb0iopb3-iopb0配置為輸出配置為輸出lacc pbdatdirlacc pbdatdir ; ;讀取引腳讀取引腳iopb7-iopb4iopb7-iopb4的輸入狀態(tài)的輸入狀態(tài)and #00f0hand #00f0h ;a ;a為輸入狀態(tài)為輸入狀態(tài)23上面為一個(gè)數(shù)字上面為一個(gè)數(shù)字i/oi/o的實(shí)際配置程序,對(duì)于每個(gè)寄存器的實(shí)際配置程序

24、,對(duì)于每個(gè)寄存器 的定義可以參考前面的介紹,為了讀者使用方便,的定義可以參考前面的介紹,為了讀者使用方便, 表表6.11(p74)6.11(p74)列出了所有數(shù)字列出了所有數(shù)字i/oi/o定義的參考表。定義的參考表。通??梢耘渲脭?shù)字通??梢耘渲脭?shù)字i/oi/o為輸入或輸出,以便于與外設(shè)進(jìn)為輸入或輸出,以便于與外設(shè)進(jìn) 行信息交換。行信息交換。本例本例為為使用數(shù)字使用數(shù)字i/oi/o端口來查詢外界信端口來查詢外界信 號(hào)輸入情況號(hào)輸入情況,硬件接口電路如圖,硬件接口電路如圖6.116.11所示:所示:6.5.1 6.5.1 使用數(shù)字使用數(shù)字i/oi/o查詢輸入信號(hào)查詢輸入信號(hào)6.5 6.5 數(shù)字?jǐn)?shù)字

25、i/oi/o的應(yīng)用實(shí)例的應(yīng)用實(shí)例2425為抗干擾,外界輸入信號(hào)需要加光耦隔離,以便獲得為抗干擾,外界輸入信號(hào)需要加光耦隔離,以便獲得 符合符合lf2407/2407alf2407/2407a要求的信號(hào)。本例使用要求的信號(hào)。本例使用 pwm3/iopb0pwm3/iopb0、pwm4/iopb1pwm4/iopb1、pwm5/iopb2pwm5/iopb2和和 pwm6/iopb3pwm6/iopb3。i/oi/o初始化初始化需設(shè)置引腳為需設(shè)置引腳為i/oi/o功能,且需要選擇信號(hào)方功能,且需要選擇信號(hào)方 向。下面為向。下面為讀取輸入信號(hào)讀取輸入信號(hào)的的例程例程。* * 文件名:文件名:inpu

26、t.asm input.asm * *.includ “240 xa.h” ;.includ “240 xa.h” ;變量和寄存器定義變量和寄存器定義.includ “vector.h” ;.includ “vector.h” ;中斷向量表定義,請(qǐng)參考中斷向量表定義,請(qǐng)參考4.94.9節(jié)節(jié)26;b2b2塊的變量定義塊的變量定義; . .bss indata,1bss indata,1 ;i/o ;i/o輸入值判斷變量輸入值判斷變量 .bss gpr0,1.bss gpr0,1 ; ;通用目標(biāo)寄存器通用目標(biāo)寄存器;主代碼主代碼;.text.text nop nopstart:start: spl

27、k #000eh,imr splk #000eh,imr ; ;屏蔽除屏蔽除int2-4int2-4以外的其它中斷以外的其它中斷 lacc ifrlacc ifr ; ;讀中斷標(biāo)志讀中斷標(biāo)志 sacl ifrsacl ifr ; ;清除中斷標(biāo)志清除中斷標(biāo)志27clrc cnfclrc cnf ; ;配置塊配置塊b0b0到數(shù)據(jù)存儲(chǔ)空間到數(shù)據(jù)存儲(chǔ)空間ldp #00e0hldp #00e0h ; ;數(shù)據(jù)頁指向數(shù)據(jù)頁指向7000h7000h707fh707fhsplk #06fh,wdcrsplk #06fh,wdcr ; ;如如vccpvccp5v,5v,則禁止看門狗則禁止看門狗ldp #scsr1

28、7ldp #scsr17splk #0000,scsr1splk #0000,scsr1 ; ;ldp #00e1h ldp #00e1h ; ;數(shù)據(jù)頁指向數(shù)據(jù)頁指向7080h7080h70ffh70ffhsplk #0f00h,mcrasplk #0f00h,mcra ; ;配置配置i/o,i/o,選擇選擇iopb0iopb0iopb3iopb3splk #0000h,pbdatdirsplk #0000h,pbdatdir ; ;配置為輸入模式配置為輸入模式ldp #0ldp #0splk #0,gpr0splk #0,gpr0 ; ;為程序存儲(chǔ)器空間設(shè)置為程序存儲(chǔ)器空間設(shè)置 ; 0; 0

29、7 7個(gè)等待狀態(tài)個(gè)等待狀態(tài)out gpr0,wsgrout gpr0,wsgr28 kick_dog kick_dog ; ;復(fù)位看門狗復(fù)位看門狗 clrc intmclrc intm ; ;使能使能dspdsp中斷中斷st_loop1st_loop1 ldp #00e1h ldp #00e1h lacc pbdatdir lacc pbdatdir ldp #indata ldp #indata sacl indata sacl indata bit indata,bit0 bit indata,bit0 ; ; 判斷判斷iopb0iopb0是否有輸入信號(hào)如是否有輸入信號(hào)如 ; ; 有則跳到

30、有則跳到st_loop2st_loop2 bcnd st_loop2,tc bcnd st_loop2,tc b st_loop1 b st_loop1st_loop2st_loop2 ldp #00e1h ldp #00e1h lacc pbdatdir lacc pbdatdir29ldp #indataldp #indatasacl indatasacl indatabit indata,bit1 bit indata,bit1 ; ; 判斷判斷iopb1iopb1是否有輸入信號(hào),如有是否有輸入信號(hào),如有 ; ;則跳到則跳到 st_loop3st_loop3bcnd st_loop3,t

31、cbcnd st_loop3,tcb st_loop2b st_loop2st_loop3st_loop3ldp #00e1hldp #00e1hlacc pbdatdirlacc pbdatdirldp #indataldp #indatasacl indatasacl indata30bit indata,bit2bit indata,bit2 ; ;判判iopb2iopb2是否有輸入信號(hào),如有則是否有輸入信號(hào),如有則 ; ;跳到跳到st_loop4st_loop4bcnd st_loop4,tcbcnd st_loop4,tcb st_loop3b st_loop3st_loop4st_

32、loop4ldp #00e1hldp #00e1hlacc pbdatdirlacc pbdatdirldp #indataldp #indatasacl indatasacl indatabit indata,bit3bit indata,bit3 ; ;判斷判斷iopb3iopb3是否有輸入信號(hào),如有是否有輸入信號(hào),如有 ; ;則跳到則跳到mainmain31 bcnd main,tcbcnd main,tc b st_loop4 b st_loop4main:main: nop nop b main b main.end.end6.5.2 6.5.2 使用數(shù)字使用數(shù)字i/oi/o輸出信號(hào)

33、輸出信號(hào) 使用使用i/oi/o端口輸出端口輸出4 4個(gè)信號(hào),這個(gè)信號(hào),這4 4個(gè)信號(hào)分別連接個(gè)信號(hào)分別連接到到4 4個(gè)個(gè)ledled,硬件接口電路如圖,硬件接口電路如圖6.12(p78)6.12(p78)所示。輸出所示。輸出引腳與引腳與ledled之間接一觸發(fā)器之間接一觸發(fā)器sn74hct273,sn74hct273,來實(shí)現(xiàn)對(duì)來實(shí)現(xiàn)對(duì)ledled的驅(qū)動(dòng)。在此使用的驅(qū)動(dòng)。在此使用 pwm3/iopb0pwm3/iopb0、pwm4/iopb1pwm4/iopb1、32pwm5/iopb2 pwm5/iopb2 和和 pwm6/iopb3 pwm6/iopb3 作為輸出信號(hào)作為輸出信號(hào) ,而,而p

34、wm7/iope1pwm7/iope1作為作為選通選通sn74hct273sn74hct273的輸出信號(hào)的輸出信號(hào)。下面。下面的實(shí)例程序?qū)崿F(xiàn)的實(shí)例程序?qū)崿F(xiàn)對(duì)對(duì)4 4個(gè)個(gè)ledled的循環(huán)驅(qū)動(dòng)的循環(huán)驅(qū)動(dòng),即,即ledled循環(huán)循環(huán)發(fā)光發(fā)光,即,即ds0ds1ds2ds3ds0ds0ds1ds2ds3ds0。3334;* * 文件名:文件名:output.asmoutput.asm* *. .include “240 xa.h”include “240 xa.h” ; ;變量和寄存器定義變量和寄存器定義.include “vector.h” ;.include “vector.h” ;中斷向量表定

35、義,請(qǐng)參考中斷向量表定義,請(qǐng)參考4.94.9節(jié)節(jié);b2b2塊的變量定義塊的變量定義. .bss outdata,1bss outdata,1 ;i/o ;i/o輸出值輸出值.bss grp0,1.bss grp0,1 ; ;通用目標(biāo)寄存器通用目標(biāo)寄存器;主代碼;主代碼;35.text.text nop nopstart:start: splk #000eh,imr splk #000eh,imr ; ;屏蔽除屏蔽除int2int2、int3int3和和int4int4 ; ;以外的其它中斷以外的其它中斷 lacc ifrlacc ifr ; ;讀中斷標(biāo)志讀中斷標(biāo)志 sacl ifrsacl i

36、fr ; ;清除中斷標(biāo)志清除中斷標(biāo)志 clrc cnfclrc cnf ; ;配置塊配置塊b0b0到數(shù)據(jù)存儲(chǔ)空間到數(shù)據(jù)存儲(chǔ)空間 ldp #00e0h ldp #00e0h ; ;數(shù)據(jù)頁指向數(shù)據(jù)頁指向7000h7000h707fh707fh splk #06fh,wdcr splk #06fh,wdcr ; ;如果如果vccpvccp5v,5v,則禁止看門狗則禁止看門狗 ldp #scsr17ldp #scsr17 splk #0000,scsr1 splk #0000,scsr136ldp #00e1hldp #00e1h ; ;數(shù)據(jù)頁指向數(shù)據(jù)頁指向7080h7080h70ffh70ffhsplk #0f00

溫馨提示

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

評(píng)論

0/150

提交評(píng)論