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

下載本文檔

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

文檔簡介

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

2、ATDIR )的第3位為(IOPF3引腳)0,同時點亮發 光二極管。二內容1 設計并調試用于TMS320LF2407芯片的計數程序,要求由按鍵 K1作輸入并對其進行計 數,計數的結果由LED7LED0發光二極管以二進制方式顯示。2 對程序稍作改動,用K4按鍵完成上述功能。三硬件電路圖4.1 TMS320LF2407與鍵盤、LED接口電路illf <-.JLLHI 4*»l»4>q-w.t 吋 Kwil四參考程序清單通過編程,設計一個按鍵計數器,要求剛接通電源時,8只發光二極管都不亮,表示計數器的初始值為0,即二進制數的00000000B;當按下K1鍵時,計數器的

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

4、l(asm(" setc SXM"asm(" clrc OVM"asm(" clrc CNF"*SCSR1=0x81FE;*WDCR=0x0E8;*IMR=0x0000;*IFR=0x0FFFF;*MCRA=*MCRA&0x0FF;*PFDATDIR=*PFDATDIR|0x0400;*PBDATDIR=*PBDATDIR|0x0FF00;*PFDATDIR=*PFDATDIR|0x0404;*PFDATDIR=*PFDATDIR&0xFFFB;void inline disable(asm(" setc I

5、NTM"int keyscan(int k,j;k=*PFDATDIR&0x0008;if(k=0x0008k=0;else k=1;if(k=1for(j=30000;j>0;j-j=j;k=*PFDATDIR&0x0008;if(k=0x0008k=0;elsek=1;return(k;int keyserve(int k;k=*PFDATDIR&0x0008;if(k=0x0000*PBDATDIR=(*PBDATDIR&0xFF00+m+; else*PBDATDIR=*PBDATDIR;*PFDATDIR=*PFDATDIR|0x040

6、4;*PFDATDIR=*PFDATDIR&0xFFFB;main(disable(;initial(;while(1int i;i=0; i=keyscan(;if(i=1keyserve(;void interrupt nothing(return;匯編程序;鍵盤與發光二極管配合使用程序st0_temp .usect ".b20",1 ;60st1_temp .usect ".b20",1 ;61context .usect ".b20",7 ;62-68STACK .usect ".stack",40

7、IOSFT_REG .usect ".data0",1 ; 顯示數據移位寄存器IO_COUNT .usect ".data0",1 ; 延時計數寄存器IO_DATA .usect ".data0",1 ;I/O 臨時數據緩沖區LEDXS .usect ".data0",1 ;LED 顯示的數據LEDFLAG .usect ".data0",1 ;LED 顯示標志寄存器K1FLAG .usect ".data0",1 ;K1 標志寄存器KEYDATA .usect "

8、.data0",1 ; 讀得鍵盤值存放寄存器DP_USER .set 5.include "F2407REGS.H" ; 引用頭部文件.def _c_int01)建立中斷向量表.sect ".vectors" ; 定義主向量段RSVECT B _c_int0 ;PM 0 Reset Vector 1INT1 B PHANTOM ;PM 2 Int level 1 4INT2 B GISR2 ;PM 4 Int level 2 5INT3 B PHANTOM ;PM 6 Int level 3 6 INT4 B PHANTOM ;PM 8 Int

9、 level 4 7 INT5 B PHANTOM ;PM A Int level 5 8 INT6 B PHANTOM ;PM C Int level 6 9 RESERVED B PHANTOM ;PM E (Analysis Int 10 SW_INT8 B PHANTOM ;PM 10 User S/W int SW_INT9 B PHANTOM ; PM 12 User S/W int - SW_INT10 B PHANTOM ; PM 14 User S/W int - SW_INT11 B PHANTOM ; PM 16 User S/W int - SW_INT12 B PHA

10、NTOM ; PM 18 User S/W int - SW_INT13 B PHANTOM ; PM 1A User S/W int - SW_INT14 B PHANTOM ; PM 1C User S/W int - SW_INT15 B PHANTOM ; PM 1E User S/W int - SW_INT16 B PHANTOM ; PM 20 User S/W int - TRAP B PHANTOM ; PM 22 Trap vector - NMI B PHANTOM ; PM 24 Non maskable Int3 EMU_TRAP B PHANTOM ; PM 26

11、Emulator Trap2 SW_INT20 B PHANTOM ; PM 28 User S/W int - SW_INT21 B PHANTOM ; PM 2A User S/W int - SW_INT22 B PHANTOM ; PM 2C User S/W int - SW_INT23 B PHANTOM ; PM 2E User S/W int - SW_INT24 B PHANTOM ; PM 30 User S/W int - SW_INT25 B PHANTOM ; PM 32 User S/W int - SW_INT26 B PHANTOM ; PM 34 User S

12、/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 S/W int ;中斷子向量入口定義 pvecs.sect ".pvecs" ;定義子向量段PVECTORS B PHANTOM ; 保留向量地址偏移量 -0000hB P

13、HANTOM ;保留向量地址偏移量 -0001hB PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量 -05B PHANTOM ; SCI_RX_ISR; 保留向量地址偏移量B PHANTOM ; SCI_TX_ISR ; 保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量 -0AB PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B

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

15、 ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-20B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-25B PHANTOM ;保留向量地址偏移量-0026hB T1GP_ISR ; 保留向量地址偏移量 -0027h T1PINT 中斷B PHANTOM ; 保留向量地址

16、偏移量 -0028hB PHANTOM ; 保留向量地址偏移量B PHANTOM ; 保留向量地址偏移量 -2AB PHANTOM ; 保留向量地址偏移量B PHANTOM ; 保留向量地址偏移量B PHANTOM ; 保留向量地址偏移量B PHANTOM ; 保留向量地址偏移量B PHANTOM ; pvector addr offset 0x02f - T3PINTB PHANTOM ; 保留向量地址偏移量 -30B PHANTOM ; 保留向量地址偏移量B PHANTOM ; 保留向量地址偏移量B PHANTOM ; 保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHAN

17、TOM ;保留向量地址偏移量-35B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-3AB PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-3FB PHANTOM ;CANMBX_ISR ; 保留向量地址偏移量B PHANTOM ;保留向量地址偏移量-0041h;(2)主程序.text_c_int

18、0CALL SYSINIT ; 調系統初始化程序CALL KEYLEDINIT ; 調鍵盤和 LED 初始化程序LDP #DP_USER ;指向 0280h0300h 區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 ; 開總中斷LOOP: CALL KEY ; 調鍵盤程序 ,即掃描鍵盤LDP #

19、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 ;送要顯示的數據到IOPB 口LACL PFDATDIRAND #0FFFBH ;IOPF2=0SA

20、CL PFDATDIR ;關74HC273 片選信號LDP #DP_USERBIT LEDFLAG,15BCND LEDBD2,TCLACL LEDXSSFLSACL LEDXSLACL IOSFT_REGSFLSACL IOSFT_REGBIT IOSFT_REG,BIT8 ; 判是否循環完一次BCND LOOP1,TCB WAITLOOP1: LDP #DP_USERSPLK #01H,IOSFT_REG ; 賦初值LEDBD2: LACL IO_DATASACL LEDXSWAIT: NOPB LOOP; J;(3)系統初始化程序SYSINIT:SETC INTMCLRC SXMCLRC

21、 OVMCLRC CNF ;B0 區被配置為數據空間LDP #OEOH ;指向 7000h7080h 區SPLK #81FEH,SCSR1 ;時鐘 4倍頻,CLKIN=6 M,CLKOUT=24 MSPLK #0E8H,WDCR ; 不使能 WDTLDP #0SPLK #02H,IMR ; 使能中斷優先級 INT2SPLK #0FFFFh,IFR ; 清中斷標志LDP #DP_EVA ;指向 7400h 7480h區SPLK #80H,EVAIMRA ;使能 T1PINT 中斷SPLK #0FFFFh,EVAIFRA ;清 EVA 中斷標志SPLK #0,GPTCONASPLK #0EA6H,

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

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

24、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.3 PFDATDIR.6RPT #2SFR ;右移 3位OR #0FFF0H ; 屏蔽高 4位(用到 4個鍵)CMPLLDP #DP_USERSACL KEYDATA ; 存放鍵值RET; J;(7)用軟件延時30mS消抖動KEYDELAY:LACC #6000KEYD1: SUB #1RPT #80NOPBCND KEYD1,NEQRET; ; ( 8)鍵子程序K1: ;"+" 鍵子程序READK1: CALL KEYDELAYCALL R

溫馨提示

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

評論

0/150

提交評論