DSP課程設計(精)_第1頁
DSP課程設計(精)_第2頁
DSP課程設計(精)_第3頁
DSP課程設計(精)_第4頁
DSP課程設計(精)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于TMS320LF2407按鍵計數(shù)器設計說明在控制電路中,通常需要以按鍵來控制程序執(zhí)行流程或是輸入數(shù)據(jù)。在圖4.1 中,4 個按鍵 KIK4分別對應 TMS320LF2407 芯片的引腳 IOPF3IOPF4 作為 I/O 端口 的輸入,8 只發(fā)光二極管 LED1I LED8 通過 SW-DIP8 撥碼開關和 74HC273 鎖存器 芯片分別對應 TMS320LF2407 芯片的引腳 IOPF0IOPF7 作為 I/O 端口的輸出。本 設計僅使用一條 I/O 引腳,借助軟件查詢方法點亮 8 只發(fā)光二極管。本設計中的 K1 鍵對應的 TMS320LF2407 輸入 I/O 引腳為 IOPF3,

2、當按下 K1 鍵, 則將所對應的端口 F 數(shù)據(jù)和方向控制寄存器(PFDATDIR )的第 3 位為(IOPF3 引 腳)0,同時點亮發(fā)光二極管。二內容1 設計并調試用于 TMS320LF2407 芯片的計數(shù)程序,要求由按鍵 K1 作輸入并對 其進行計數(shù),計數(shù)的結果由 LED7LED0 發(fā)光二極管以二進制方式顯示。2對程序稍作改動,用 K4 按鍵完成上述功能。三硬件電路圖4.1 TMS320LF2407與鍵盤、LED接口電路四參考程序清單通過編程,設計一個按鍵計數(shù)器,要求剛接通電源時,8 只發(fā)光二極管都不亮,表示計數(shù)器的初始值為 0,即二進制數(shù)的 00000000B;當按下 K1 鍵時,計數(shù)器的

3、值 加 1,發(fā)光二極管 LED0 點亮,表示二進制數(shù)的 00000001B,然后松開按鍵;再次 按下 K1 鍵時,計數(shù)器的值又加 1,發(fā)光二極管 LED1 點亮,表示二進制數(shù)的 00000010B,然后再松開按鍵;依次類推。直到按動了255 次按鍵時,發(fā)光二極管LED7LED0 會全部點亮,其后的一次 K1 鍵按下時將使計數(shù)器回 0,就這樣循環(huán) 往復。C 語言程序(1)所需的復位和中斷向量定義文件vectors.asm同于前。在這以后的所有例程中,如果沒有特別說明,vectors.asm者B是相同的。(2主程序源程序代碼:#include register.hint m=0 x0001;ini

4、tial(asm( setc SXM;asm( clrc OVM;asm( clrc CNF;*SCSR1=0 x81FE;*WDCR=0 x0E8;*IMR=0 x0000;*IFR=0 x0FFFF;*MCRA=*MCRA&0 x0FF;*PFDATDIR=*PFDATDIR|0 x0400;*PBDATDIR=*PBDATDIR|0 x0FF00;*PFDATDIR=*PFDATDIR|0 x0404;*PFDATDIR=*PFDATDIR&0 xFFFB;void inline disable(asm( setc INTM;int keyscan(int k,j;k=*

5、PFDATDIR&0 x0008;if(k=0 x0008k=0;elsek=1;if(k=1for(j=30000;j0;j-j=j;k=*PFDATDIR&0 x0008; if(k=0 x0008k=0;elsek=1;return(k;int keyserve(int k;k=*PFDATDIR&0 x0008;if(k=0 x0000*PBDATDIR=(*PBDATDIR&0 xFF00+m+; else*PBDATDIR=*PBDATDIR;*PFDATDIR=*PFDATDIR|0 x0404;*PFDATDIR=*PFDATDIR&0

6、xFFFB;main(disable(;initial(;while(1int i;i=0;i=keyscan(;if(i=1keyserve(;void interrupt nothing(return;匯編程序;鍵盤與發(fā)光二極管配合使用程序st0_temp .usect .b20,1 ;60st1_temp .usect .b20,1 ;61context .usect .b20,7 ;62-68STACK .usect .stack,40IOSFT_REG .usect .data0,1 ;顯示數(shù)據(jù)移位寄存器IO_COUNT .usect .data0,1 ;延時計數(shù)寄存器IO_DATA

7、 .usect .data0,1 ;I/O臨時數(shù)據(jù)緩沖區(qū)LEDXS .usect .data0,1 ;LED顯示的數(shù)據(jù)LEDFLAG .usect .data0,1 ;LED顯示標志寄存器K1FLAG .usect .data0,1 ;K1標志寄存器KEYDATA .usect .data0,1 ;讀得鍵盤值存放寄存器DP_USER .set 5.include F2407REGS.H ;引用頭部文件.def _c_int0; J;(1)建立中斷向量表.sect .vectors ;定義主向量段RSVECT B _c_int0 ;PM 0 Reset Vector 1INT1 B PHANTO

8、M ;PM 2 Int level 1 4INT2 B GISR2 ;PM 4 Int level 2 5INT3 B PHANTOM ;PM 6 Int level 3 6INT4 B PHANTOM ;PM 8 Int level 4 7INT5 B PHANTOM ;PM A Int level 5 8 INT6 B PHANTOM ;PM C Int level 6 9 RESERVED B PHANTOM ;PM E (AnalysisInt 10 SW_INT8 B PHANTOM ;PM 10 User S/W intSW_INT9 B PHANTOM ; PM 12 User

9、S/W int - SW_INT10 BPHANTOM ; PM 14 User S/W int - SW_INT11 B PHANTOM ; PM 16 User S/W int - SW_INT12 B PHANTOM ; PM 18 UserS/W int - SW_INT13 B PHANTOM ; PM 1A User S/W int - SW_INT14 B PHANTOM ; PM 1C User S/W int - SW_INT15 BPHANTOM ; PM 1E User S/W int - SW_INT16 B PHANTOM ; PM 20 User S/W int -

10、 TRAP B PHANTOM ; PM 22 Trapvector - NMI B PHANTOM ; PM 24 Non maskable Int3 EMU_TRAP B PHANTOM ; PM 26 Emulator Trap2 SW_INT20 BPHANTOM ; PM 28 User S/W int - SW_INT21 B PHANTOM ; PM 2A User S/W int - SW_INT22 B PHANTOM ; PM 2C UserS/W int -SW_INT23 B PHANTOM ; PM 2E User S/W int -SW_INT24 B PHANTO

11、M ; PM 30 User S/W int -SW_INT25 B PHANTOM ; PM 32 User S/W int -SW_INT26 B PHANTOM ; PM 34 User S/W int -SW_INT27 B PHANTOM ; PM 36 User S/W int -SW_INT28 B PHANTOM ; PM 38 User S/W int -SW_INT29 B PHANTOM ; PM 3A User S/W int -SW_INT30 B PHANTOM ; PM 3C User S/W int -SW_INT31 B PHANTOM ;PM 3E User

12、 S/W int;中斷子向量入口定義pvecs.sect .pvecs ;定義子向量段PVECTORS B PHANTOM ;保留向量地址偏移量-0000hB PHANTOM ;保留向量地址偏移量-0001hB PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-05B PHANTOM ; SCI_RX_ISR;保留向量地址偏移量B PHANTOM ; SCI_TX_ISR ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTO

13、M ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-0AB PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-10B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-15B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移

14、量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-1AB PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-20B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-25B PHANTOM

15、;保留向量地址偏移量-0026hB T1GP_ISR ;保留向量地址偏移量-0027h T1PINT中斷B PHANTOM ;保留向量地址偏移量-0028hB PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-2AB PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;pvector addr offset 0 x02f - T3PINTB PHANTOM ;保留向量地址偏移量-30B PHANTOM ;保留向量地址偏移量B PHANTOM

16、;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-35B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-3AB PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-3FB PHANTOM ;CANMBX_ISR

17、 ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-0041h2)主程序.text_c_int0CALL SYSINIT ;調系統(tǒng)初始化程序CALL KEYLEDINIT ;調鍵盤和LED初始化程序LDP #DP_USER ;指向0280h0300h區(qū)SPLK #01H,IOSFT_REG ;寄存器和標志初始化SPLK #00H,IO_COUNTSPLK #001H,IO_DATASPLK #001H,LEDXSSPLK #00H,LEDFLAG ;LEDFLAG.0=1表示K1,K2,K3按下;LEDFLAG.0=0表示K4按下SPLK #01H,K1FLAGCLRC INTM

18、;開總中斷LOOP: CALL KEY ;調鍵盤程序,即掃描鍵盤LDP #DP_USERBIT LEDFLAG,15BCND LEDBD1,TCLACL IO_COUNTSUB #03E8HBCND WAIT,LEQ ;判10 s延時到否LEDBD1: SPLK #00H,IO_COUNTLDP #DP_PF2LACL PFDATDIROR #0404H ;IOPF2=1SACL PFDATDIR ;開74HC273片選信號LDP #DP_USERLACL LEDXSOR #0FF00H ;IOPB口為輸出方式LDP #DP_PF2SACL PBDATDIR ;送要顯示的數(shù)據(jù)到IOPB口LAC

19、L PFDATDIRAND #0FFFBH ;IOPF2=0SACL PFDATDIR ;關74HC273片選信號LDP #DP_USERBIT LEDFLAG,15BCND LEDBD2,TCLACL LEDXSSFLSACL LEDXSLACL IOSFT_REGSFLSACL IOSFT_REGBIT IOSFT_REG,BIT8 ;判是否循環(huán)完一次BCND LOOP1,TCB WAITLOOP1: LDP #DP_USERSPLK #01H,IOSFT_REG ;賦初值LEDBD2: LACL IO_DATASACL LEDXSWAIT: NOPB LOOP; J;(3)系統(tǒng)初始化程序

20、SYSINIT:SETC INTMCLRC SXMCLRC OVMCLRC CNF ;B0區(qū)被配置為數(shù)據(jù)空間LDP #OEOH ;指向7000h7080h區(qū)SPLK #81FEH,SCSR1 ;時鐘4倍頻,CLKIN=6 M,CLKOUT=24 MSPLK #0E8H,WDCR ;不使能WDTLDP #0SPLK #02H,IMR ;使能中斷優(yōu)先級INT2SPLK #0FFFFh,IFR ;清中斷標志LDP #DP_EVA ;指向7400h7480h區(qū)SPLK #80H,EVAIMRA ;使能T1PINT中斷SPLK #0FFFFh,EVAIFRA ;清EVA中斷標志SPLK #0,GPTCO

21、NASPLK #0EA6H,T1PR ;使定時器每10 ms產(chǎn)生一次中斷SPLK #0,T1CNTSPLK #0164CH,T1CON ;設置通用定時器1RET; ;(4)鍵盤和發(fā)光二極管初始化程序KEYLEDINIT:LDP #DP_PF2LACL MCRCAND #083FFH ;IOPF2,IOPF36配置為一般的I/O口SACL MCRCLACL MCRAAND #000FFH ;IOPB07配置為一般的I/O口SACL MCRALACL PFDATDIROR #0400H ;IOPF2為輸出方式AND #08787H ;IOPF36為輸入方式SACL PFDATDIRLACL PBD

22、ATDIROR #OFFOOH ;IOPB07為輸出方式SACL PBDATDIRRET; ;(5)鍵盤程序KEY:CALL READKEY ;調讀鍵程序LACL KEYDATABCND KEYRET,EQ ;ACC=O?CALL KEYDELAY材料:玉米粒 50 克,胡蘿卜 30 克,生菜 30 克,雞蛋 3 個,面粉 100 克椒粉各少許;做法:1. 先將雞蛋打散成蛋液,加入少許胡椒粉拌勻,胡蘿卜洗凈切瀝干切碎,蔥切 花;2. 將胡蘿卜粒和玉米粒放入沸水中煮熟后瀝干待用;3. 面粉中加入適量的鹽,再倒入雞蛋液,加入適量的水攪拌成4. 放入瀝干的胡蘿卜粒和玉米粒、生菜、蔥花,再加入少許芝;

23、再一次讀鍵值LACL KEYDATABCND KEYRET,EQLDP #DP_USER ;判斷按鍵情況BIT KEYDATA,15BCND KEYRET,NTCCALL K1 ; +鍵按下B KEYRETKEYRET: LACL KEYDATAAND #0FFF0H ;清讀取的鍵值寄存器SACL KEYDATARET; J;(6)讀鍵子程序READKEY:LDP #DP_PF2LACL PFDATDIR ;取出鍵值PFDATDIR.3PFDATDIR.6RPT #2SFR ;右移3位OR #0FFF0H ;屏蔽高4位(用到4個鍵)CMPLLDP #DP_USERSACL KEYDATA ;存放鍵值RET; ;(7)用軟件延時30mS消抖動KEYDELAY:LACC #6000KEYD1: SUB #1RPT #80NOPBCND KEYD1,NEQRET;(8)鍵子程序K1: ;+鍵子程序READK1: CALL KEYDELAYCALL READKEYLDP #D

溫馨提示

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

評論

0/150

提交評論