ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:28.99KB ,
资源ID:4435895      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4435895.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DSP课程设计精.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DSP课程设计精.docx

1、DSP课程设计精基于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数据和方向控制寄存器(

2、PFDATDIR)的第3位为(IOPF3引脚)0,同时点亮发光二极管。二内容1设计并调试用于TMS320LF2407芯片的计数程序,要求由按键K1作输入并对其进行计数,计数的结果由LED7LED0发光二极管以二进制方式显示。2对程序稍作改动,用K4按键完成上述功能。三硬件电路图4.1 TMS320LF2407与键盘、LED接口电路四参考程序清单通过编程,设计一个按键计数器,要求刚接通电源时,8只发光二极管都不亮,表示计数器的初始值为0,即二进制数的00000000B;当按下K1键时,计数器的值加1,发光二极管LED0点亮,表示二进制数的00000001B,然后松开按键;再次按下K1键时,计数器

3、的值又加1,发光二极管LED1点亮,表示二进制数的00000010B,然后再松开按键;依次类推。直到按动了255次按键时,发光二极管LED7LED0会全部点亮,其后的一次K1键按下时将使计数器回0,就这样循环往复。C语言程序(1) 所需的复位和中断向量定义文件“vectors.asm”同于前。在这以后的所有例程中,如果没有特别说明,vectors.asm都是相同的。(2 主程序源程序代码:#include register.hint m=0x0001; initial(asm( setc SXM;asm( clrc OVM;asm( clrc CNF;*SCSR1=0x81FE;*WDCR=0

4、x0E8;*IMR=0x0000;*IFR=0x0FFFF;*MCRA=*MCRA&0x0FF;*PFDATDIR=*PFDATDIR|0x0400;*PBDATDIR=*PBDATDIR|0x0FF00;*PFDATDIR=*PFDATDIR|0x0404;*PFDATDIR=*PFDATDIR&0xFFFB;void inline disable( asm( setc INTM;int keyscan( int k,j;k=*PFDATDIR&0x0008; if(k=0x0008 k=0;elsek=1;if(k=1for(j=30000;j0;j-j=j;k=*PFDATDIR&0x0

5、008; if(k=0x0008 k=0;elsek=1;return(k;int keyserve(int k;k=*PFDATDIR&0x0008; if(k=0x0000*PBDATDIR=(*PBDATDIR&0xFF00+m+;else*PBDATDIR=*PBDATDIR;*PFDATDIR=*PFDATDIR|0x0404;*PFDATDIR=*PFDATDIR&0xFFFB; main(disable(;initial(;while(1int i;i=0;i=keyscan(;if(i=1keyserve(;void interrupt nothing(return;汇编程序;

6、键盘与发光二极管配合使用程序st0_temp .usect .b20,1 ;60st1_temp .usect .b20,1 ;61context .usect .b20,7 ;62-68STACK .usect .stack,40IOSFT_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

7、 .data0,1 ;K1 标志寄存器KEYDATA .usect .data0,1 ;读得键盘值存放寄存器DP_USER .set 5.include F2407REGS.H ;引用头部文件.def _c_int0; ;(1)建立中断向量表.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 6INT4 B PHANTOM ;PM 8

8、 Int level 4 7INT5 B PHANTOM ;PM A Int level 5 8INT6 B PHANTOM ;PM C Int level 6 9RESERVED B PHANTOM ;PM E (Analysis Int 10SW_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 PHANTO

9、M ; 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 Int3EMU_TRAP B PHANTOM ; PM 26 Emulator T

10、rap2SW_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/W int -SW_INT27

11、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 ;保留向量地址偏移量-0000h B PHANTOM ;保留向量地址偏移量-0001hB PHANTOM

12、 ; 保留向量地址偏移量B PHANTOM ; 保留向量地址偏移量 B PHANTOM ; 保留向量地址偏移量B PHANTOM ; 保留向量地址偏移量B PHANTOM ; 保留向量地址偏移量-05B PHANTOM ; SCI_RX_ISR; 保留向量地址偏移量B PHANTOM ; SCI_TX_ISR ; 保留向量地址偏移量B PHANTOM ; 保留向量地址偏移量B PHANTOM ; 保留向量地址偏移量B PHANTOM ; 保留向量地址偏移量-0A B PHANTOM ; 保留向量地址偏移量B PHANTOM ; 保留向量地址偏移量 B PHANTOM ; 保留向量地址偏移量B

13、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 ; 保留向量地址

14、偏移量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 ; 保留向量

15、地址偏移量-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 PHA

16、NTOM ; 保留向量地址偏移量-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 ; ;(

17、2)主程序.text_c_int0 CALL 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 ;调键盘程序,即扫描键盘

18、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 ;送要显示的数据到IOPB口LACL PFDATDIRAND #0FFFBH ;IOPF2=0SA

19、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 ; ;(3)系统初始化程序SYSINIT:SETC INTMCLRC SXMCLRC OV

20、MCLRC CNF ;B0区被配置为数据空间LDP #0E0H ;指向7000h7080h区SPLK #81FEH,SCSR1 ;时钟4倍频,CLKIN=6 M,CLKOUT=24 MSPLK #0E8H,WDCR ;不使能WDTLDP #0SPLK #02H,IMR ;使能中断优先级INT2SPLK #0FFFFh,IFR ;清中断标志LDP #DP_EVA ;指向7400h7480h区SPLK #80H,EVAIMRA ;使能T1PINT 中断SPLK #0FFFFh,EVAIFRA ;清EVA中断标志SPLK #0,GPTCONASPLK #0EA6H,T1PR ;使定时器每10 ms产

21、生一次中断SPLK #0,T1CNTSPLK #0164CH,T1CON ;设置通用定时器1RET; ;(4)键盘和发光二极管初始化程序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 PBDATDIROR #0FF00H ;IOPB07 为输出方

22、式SACL PBDATDIRRET; ;(5)键盘程序KEY:CALL READKEY ;调读键程序LACL KEYDATABCND KEYRET,EQ ;ACC=0?CALL KEYDELAY 材料:玉米粒50克, 胡萝卜30克, 生菜30克, 鸡蛋3个,面粉100克椒粉各少许;做法:1. 先将鸡蛋打散成蛋液,加入少许胡椒粉拌匀,胡萝卜洗净切沥干切碎,葱切花;2. 将胡萝卜粒和玉米粒放入沸水中煮熟后沥干待用;3. 面粉中加入适量的盐,再倒入鸡蛋液,加入适量的水搅拌成4. 放入沥干的胡萝卜粒和玉米粒、生菜、葱花,再加入少许芝; 再一次读键值 LACL KEYDATABCND KEYRET,EQ

23、LDP #DP_USER ;判断按键情况BIT KEYDATA,15 BCND KEYRET,NTC CALL K1 ; +键按下B KEYRETKEYRET: LACL KEYDATAAND #0FFF0H ;清读取的键值寄存器SACL KEYDATARET; ;(6)读键子程序READKEY:LDP #DP_PF2LACL PFDATDIR ;取出键值PFDATDIR.3PFDATDIR.6RPT #2SFR ;右移3位OR #0FFF0H ;屏蔽高4位(用到4个键)CMPLLDP #DP_USERSACL KEYDATA ;存放键值RET ; ;(7)用软件延时30mS消抖动KEYDEL

24、AY: LACC #6000KEYD1: SUB #1RPT #80NOPBCND KEYD1,NEQRET; ;(8)键子程序K1: ;+键子程序READK1: CALL KEYDELAYCALL READKEYLDP #DP_USER ;判断按键 K1 是否松开BIT KEYDATA,15BCND READK1,TCSPLK #01,LEDFLAG ;关闭LED左移标志,即LED对同一个数不刷新LACL IO_DATAADD #1SACL IO_DATARET; ;(9)中断程序GISR2: ;优先级INT2中断人口; 保护现场 LDP #0 ; 保存机器上下文SST #0, st0_te

25、mp ; 使用自动寻址DP-0 SST #1, st1_temp ; 保存状态寄存器到B2 DARAM.SACL context ; 保存ACC的低16位SACH context+1 ; 保存ACC的高16位SAR AR1,context+2SAR AR2,context+3SAR AR3,context+4SAR AR4,context+5 SAR AR5,context+6LDP #0E0HLACC PIVR,1 ;读取外设中断向量寄存器(PIVR),并左移一位ADD #PVECTORS ;加上外设中断入口地址BACC ;跳到相应的中断服务子程序T1GP_ISR: ;通用定时器1中断入口L

26、DP #DP_USERLACL IO_COUNTADD #1SACL IO_COUNT;恢复现场 LDP #DP_EVASPLK #0FFFFH,EVAIFRALDP #0LAR AR5,context+6 LAR AR4,context+5 LAR AR3,context+4 LAR AR2,context+3 LAR AR1,context+2LACC context+1,16ADDS contextLST #1, st1_tempLST #0, st0_tempCLRC INTM ;开总中断,因为一进中断就自动关闭总中断RET; ;(10)假中断程序PHANTOM KICK_DOG ;复位看门狗RETEND

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1