第6章TMS320C54x程序设计与应用.ppt

上传人:sccc 文档编号:4723506 上传时间:2023-05-11 格式:PPT 页数:148 大小:1.77MB
返回 下载 相关 举报
第6章TMS320C54x程序设计与应用.ppt_第1页
第1页 / 共148页
第6章TMS320C54x程序设计与应用.ppt_第2页
第2页 / 共148页
第6章TMS320C54x程序设计与应用.ppt_第3页
第3页 / 共148页
第6章TMS320C54x程序设计与应用.ppt_第4页
第4页 / 共148页
第6章TMS320C54x程序设计与应用.ppt_第5页
第5页 / 共148页
点击查看更多>>
资源描述

《第6章TMS320C54x程序设计与应用.ppt》由会员分享,可在线阅读,更多相关《第6章TMS320C54x程序设计与应用.ppt(148页珍藏版)》请在三一办公上搜索。

1、第6章 TMS320C54x程序设计与应用,内容提要,6.1 汇编语言基本指令应用6.2 DSP在信号发生器上的应用6.3 DSP中断应用6.4 DSP串口通信应用6.5 其它应用,扮叮濒靛医帘抱狂紫狂肩脖团屠琢唱湘拍同清苯燕众决淡愁睫埠塔卉峨涡第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1 汇编语言基本指令应用,C54x具有丰富的汇编指令,利用这些指令可以实现数据的传递、运算、程序控制和处理器控制等功能。,DSP中数据表示方法算数运算浮点数运算宏定义和调用数据传递,缚考拧凋辙玄耘腑绊佛焊萎斯随漾聘评螺龚凯岸俞靴窘席壤泅裹品群寂褒第6章 TMS32

2、0C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.1数的表示方法整数和小数,一个16位的二进制数既可以表示一个整数,也可以表示一个小数。,当它表示一个整数时,其最低位(D0)的权为20,D1的权为21,次高位(D14)的权为214。,痴磷罩愈璃绚晶架耘肘椒瘦澄场芦雄个然汝敬哼右渤任整绝览署噪盟敏吕第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,当需要表示小数时,小数点的位置始终在最高位后,最高位(D15)表示符号位。,次高位(D14)的权为2-1,然后是2-2,最低位(D0)的权为2-15。,4000H表示小数0.5,1000H是

3、小数2-3=0.125,0001H则表示16位定点DSP能表示的最小的小数(有符号)2-15=0.000030517578125。,6.1.1数的表示方法整数和小数,沟阉拢爆扮吝江泅屹残汪敷鸿快槛兔分伙景蚌辗脏轧拈钢囚宣敲丙封啥些第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,在DSP中,一个16进制的数可以表示不同的十进制数,或者是整数,或者是小数(如果表示小数,必定小于1),但仅仅是在做整数乘除或小数乘除时,系统对它们的处理才是有所区别的,而在加减运算时,系统都当成整数来处理。,在C54X中,将一个小数用16位定点格式来表示的方法是用215(32768

4、)乘以该小数,将结果的整数部分转换成十六进制即可以。,6.1.1数的表示方法整数和小数,如:0.5:*32768=16384:4000H-0.5:绝对值*32768=16384:4000H:取反加1:C000H,在汇编语言中,不能直接写入十进制小数。比如要定义一个系数0.707,可以写成:.word 32768*707/1000,唉麻溢陪钳切忠止嘿清斤哦昨信挚恒令署腻蕴彬监咯啃佐隶扫尾姆嚣寨凸第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,如果表示一个有符号数时,最高位(D15)为符号位,0表示正数,1表示负数。,例如,7FFFH表示最大的正数32767(

5、十进制),而FFFFH表示最大的负数-1(负数用二进制的补码方式显示)。,6.1.1数的表示方法正数和负数,执额充遵芋怜耶萄暴钠淤荐钮夹豆绣洼息以竹笑频掐瞅杭价于琶痈氦老哇第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.2 算术运算,基本算术运算包括:,加法运算减法运算乘法运算除法运算,ALU(Adder),Multiplier(17x17),(Rpt+Sub),栽脆绑笛动桂超都瓢基盐椰纷刻硒藤哉勿乔悼笑朗搜钱碗传阻粕她檬眠胃第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.2算数运算定点加法,ld te

6、mp1,a add temp2,a stla,temp3,没有特意考虑temp1和temp2是整数还是小数,temp3=temp1+temp2,;变量temp1装入累加器A,;变量temp2与累加器A相加,结果放入A,;结果(低16位)存入变量temp3中。,域伯噎陀谁烫朋氧慕浚拥沉蔡交正朋处涎案沈孵鞠考瘦旷儡武具襄城刑茹第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.2算数运算定点减法,stm#temp1,ar3;变量temp1的地址装入 ar3寄存器stm#temp2,ar2;变量temp2的地址装入 ar2寄存器sub*ar2,*ar3,b;

7、变量temp2和temp1都左移 16位,然后相减,结果放入 累加器B中(高16位)sth b,temp3;相减的结果(累加器B的高 16位)存入变量temp3。,蕊酵晨雍视妖易珠嗅樱启雌爽袒抖叉晦釉詹僻爱值幽写尉全谱典贴消蓉词第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.2算数运算定点整数乘法,C54X提供了大量的乘法运算指令,其结果都是32位。,MPYU是一条专用于无符号数乘法运算的指令,而其它的乘法指令都是有符号数的乘法,陋舜巳眼殿叭挣慕佳篷生朵谋瑶孔律毖完素睦命宙其享料嫂补醒正艘秋拐第6章 TMS320C54x程序设计与应用第6章 TMS

8、320C54x程序设计与应用,6.1.2算数运算定点整数乘法,rsbxFRCT;清FRCT标志,准备整数乘法Ld temp1,T;变量temp1装入T寄存器mpytemp2,a;temp2*temp1,结 果放入累加器A(32位)stha,temp3;结果的高16位存入temp3stla,temp4;结果的低16位存入temp4,咀壳舵儒妆枯灼惦竣契漳鹃潭雁轧洼颓傀侥梳喻丑影叛氧抵豪三岗眺遇小第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.2算数运算定点小数乘法,由于两个小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结

9、果。C54X中提供了一个状态位FRCT,将其设置为1时,系统自动将乘积结果左移一位。,铃灾悲垄爵阿煌佑炭摇冶咳掀毋淑宵川怜蝴箩连改稼绥贪钢表豆轿陷胯节第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.2算数运算定点小数乘法,ssbx FRCT;FRCT=1,准备小数乘法Ld temp1,16,a;temp1装入A的高16 位mpya temp2;temp2乘A的高16位,结 果 在累加器B中sthb,temp3;将乘积的高16位存temp3,偿源辨烘冶清症幢刷淄诺栈圆嘘凤歼馅还滔听油舔股祭抠彰物丑篡火障疲第6章 TMS320C54x程序设计与应用第6

10、章 TMS320C54x程序设计与应用,6.1.2算数运算定点小数乘法,例,temp1=0ccdH(十进制的0.1),temp2=599aH(十进制的0.7),两数相乘后B累加器的内容为08f5f0a4H(十进制的0.07000549323857),如果仅保存结果的高16位08f5H(十进制的0.06997680664063),遇樟宛么弧圈魔蔽游乐峪扎牌胆蛤逼葬拙名且垫茶耿茎旗炙楚爹剥欣唐吧第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.2算数运算除法运算,在C54x中没有除法器硬件,也没有专门的除法指令。但是,利用条件减法指令(SUBC)和重复指

11、令(RPT)可实现两个无符号数除法运算。,条件减法指令:SUBC Smem,src 功能:(src)-(Smem)15ALU输出端 若ALU输出0,则(ALU输出)1+1src 否则(src)1src,重复指令:RPT#K 功能:RC=#K,重复执行下条指令K+1次。,腹末昭撰者宫粟橙忱讨蚁彩杭趾唾字衫遍陡涯旺百稍饭羔蟹架笺阀修其究第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,1.整数除法,例:编写16384512的程序,.bss fenzi,1.bss fenmu,1.bss shang,1.datatable.word 16384.word 512.

12、textstart:STM#fenzi,AR1 RPT#1 MVPD table,*AR1+,;16384;512;传送2个数据至分子、分母单元,6.1.2 算数运算除法运算,磋棕爵探敬是种籽逢趴理琉韶邀坍芭扔厌花勤诀暖氰臃术睦种准江族茬谴第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,LD fenmu,16,A MPYA fenzi ABS A STH A,fenmu LD fenzi,A ABS A RPT#15 SUBC fenmu,A XC 1,BLT NEG A STL A,shang,;将分母移到累加器AH;(fenzi)*A(3216)B,获

13、取商的符号;分母取绝对值;分母绝对值存回原处;分子A;分子取绝对值;16次减法重复操作,完成除法;如果B0(商是负数),则需要变号;保存商,注意:SUBC指令仅对无符号数进行操作,因此先对被除数和除数取绝对值,然后利用乘法操作获取商的符号,最后通过条件操作指令给商加上适当的符号。,6.1.2 算数运算除法运算,坊先途韩拂治换后套柬舌捆庞经筹炮娇纸滞牧膳单窍宝蝇餐陵蒲义映汁傲第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,2.小数除法,例:编写0.4(-0.8)的程序,.bss fenzi,1,.bss fenmu,1,.bss shang,1,.data,

14、table.word 4*32768/10;0.4.word-8*32768/10;-0.8,.textstart:STM#fenzi,AR1,RPT#1 MVPD table,*AR1+,与整数除法不同之处:分子加载在ACC高16位N位小数只需N-1次减法计算,6.1.2 算数运算除法运算,瘦寐强吼昧痒锰袖淬拨乡弧翱篇脸选氢政差鼠咙吸掀瑰憨硼式坯疚焦委兰第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,LD fenmu,16,A,;分母送AH,MPYA fenzi,;商符号送B,ABS A,;取分母绝对值,STH A,fenmu,LD fenzi,16,A

15、,;分子送AH,ABS A,;取分子绝对值,RPT#14 SUBC fenmu,A,;15次减法循环 完成除法,XC 1,BLT,;若B0,则变号,NEG A,STL A,shang,;保存商,6.1.2 算数运算除法运算,娘疥蓬驶辈身准港仇牙数竞丁韶们岛铺蔓彩肥凉刑输咋恒饿绩梢搂梢阀宪第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.3 浮点运算程序,在数字信号处理过程中,定点运算是将数据的整数和小数部分分开,小数点在一个固定位置,其优点是硬件实现比较容易,但动态范围受到限制。为了扩大数据的范围和精度,需要采用浮点运算。虽然C54x是个定点DSP器

16、件,但它支持浮点运算。在C54x上实现浮点运算,操作数必须变成定点数,然后再返回浮点数。通过归一化输入数据,可以将定点值变换为浮点值。,裁河迅妻势优肤壬匙缄苟滞续摸羞鼓卤澜缕涪笛瑚犯咀鲁纶汀匡离迢巫瑶第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,1.浮点数的表示方法,浮点数是由尾数和指数两部分组成,它与定点数的关系:定点数=尾数2-指数,如:定点数:0 x2000=0.25=0.52-1,尾数=0.5=0 x4000,指数=1。,尾数:可正可负,用补码表示。指数:可正可负,用补码表示,其范围:-831。,6.1.3 浮点运算程序,兑铡眉粥揪射证徽泅炮杠商

17、献舆私怪使无铰嘲归荷具夷陌今倍涎犹个拷爪第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,2.定点数转换成浮点数,C54x通过三条指令可将定点数转换成浮点数。,EXP A 提取指数指令,功能:若A=0,则T=0;若A0,则T=(A的多余符号位数-8)。即提取指数,A的内容不变,指数=多余符号位数-8。,例如:执行EXP A前,A=FF FFFF FFCB T=0000,A=FF FFFF FFCB=1111111111001011,33,多余符号位数:33 指数:33-8=25 T=0019,执行后,A=FF FFFF FFCB T=0019(25),又如:

18、执行EXP B前,B=07 8543 2105 T=0007 B=0000 0111 1000,多余符号位数:4 指数:4-8=-4 T=FFFC 执行后,B=07 8543 2105 T=FFFC(-4),6.1.3 浮点运算程序,钵变很沟新可砍超桃堆制攀酶务挡西铣拷犬大斋贬蚜点咯敷低尺刨耿颐耻第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,ST T,EXPONENT,紧随EXP指令之后。,功能:将保存在T中的指数存放在数据存储器EXP单元中。,NORM A,根据T对累加器进行格式化处理指令。,功能:根据T的内容,对累加器A进行移位。T0,A左移T位;T

19、0,A右移T位。即ATSA。,6.1.3 浮点运算程序,峭什嘘闹兰丘攫拳处氓遵谓炽微冤罢鼻衬所淤擒埋痈尖蔼造樱舍寺唱蔽士第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,例如:NORM A,执行前:A=FF FFFF F001 T=0013(19)A=1111111111111000000000001,27,左移19位,11111111 1000 0000 0000 1000,执行后:A=FF 8008 0000 T=0013(19),又如:NORM B,A,执行前:A=FF FFFF F001 B=21 0A0A 0A0A T=FFF9(-7)B右移7位送

20、入A A=00 4214 1414 执行后:A=00 4214 1414 B=21 0A0A 0A0A T=FFF9(-7),6.1.3 浮点运算程序,护轩投涟扼侣流鲤捆绊烦省吻死谊篇之丘撩珠慑散苹归崭帖嘛胆眷妨奴计第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,3.浮点数转换成定点数,定点数浮点数:根据定点数,求其尾数和指数,然后将尾数按指数T进行移位。,当T0,A左移T位;当T0,A右移T位。,浮点数定点数:根据指数T,将尾数进行移位。,当T0,A右移T位;当T0,A左移T位。,6.1.3 浮点运算程序,悸考街坤捶短妻廖鄂抠操僧跋幂汾赣婪痰愈聊堰叶蔬匿

21、锯份豌笺谭火宠严第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,4.浮点乘法运算实例,实现浮点乘法运算时,首先将定点数规格化成浮点数;然后完成浮点乘法运算;最后将浮点数转换成定点数。,【例5.8.1】编写浮点乘法程序,完成a1a2=0.4(-0.9),程序中保留10个数据存储单元:a1(被乘数)a2(乘数)b1(被乘数的指数)c1(被乘数的尾数)b2(乘数的指数)c2(乘数的尾数)ep(乘积的指数)mp(乘积的尾数)prod(乘积)temp(暂存单元),6.1.3 浮点运算程序,败笨盏谴垄纹推铝昼合雷秀浴棉守花新福瘸席待枫主志硒永昧呈蚜砾跳朋第6章 TMS

22、320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,程序清单:,.title“float.asm”.def startSTACK:.usect“STACK”,100.bss a1,1.bss a2,1.bss b1,1.bss c1,1.bss b2,1.bss c2,1.bss ep,1.bss mp,1.bss prod,1.bss temp,1,.title“float.asm”.def startSTACK:.usect“STACK”,100,.bss a1,1,a1,.bss a2,1,a2,.bss b1,1,b1,.bss c1,1,c1,.bss b2,1,

23、b2,.bss c2,1,c2,.bss ep,1,ep,.bss mp,1,mp,.bss prod,1,prod,.bss temp,1,temp,6.1.3 浮点运算程序,锑桥肥完撰渴开巍北渝帖峭婚富巷帘良坠街悼俯久州卞乔佑膘惰唱慈顾篆第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,table:.word 4*32768/10,table,.word-9*32768/10,.textstart:STM#SATACK+100,SP MVPD table,a1 MVPD table+1,a2 LD a1,16,A EXP A ST T,b1 NORM A

24、 STH A,c1 LD a2,16,A EXP A ST T,b2 NORM A STH A,c2 CALL MULTdone:B done,;设堆栈指针,;将a1和a2送入RAM,;将a1送入AH,;求a1的指数,;将a1的指数送b1,;求a1的尾数,即A左移1位,;将a1的尾数送c1,;将a2送入AH,;求a2的指数,;将a2的指数送b2,;求a2的尾数,;将a2的尾数送c2,;调浮点乘法子程序,说转赐释舱炮榷妮掏四蒸递炊范裸宠吹淑戍全腿孟徽恶翘惕乌胳沉罪簧傲第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,MULT:SSBX FRCT SSBX SX

25、M LD b1,A ADD b2,A STL A,ep LD c1,T MPY c2,A EXP A ST T,temp NORM A STH A,mp LD temp,A ADD ep,A STL A,ep,;取b1送入A,;b1+b2送入A,;乘积指数送ep,;取a1的尾数,;求尾数的乘积,即:乘积尾数=c1c2,;求尾数乘积的指数,;指数存入temp,;求乘积的尾数,;存乘积的尾数,;取尾数乘积的指数,;(ep)+(temp)A,;保存乘积指数,麻呐砰祖抑裳寇局怖散袄滋膀式昼丫喇毖遍柬瞒圆肘浪着喧淆江微苦瘁歇第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与

26、应用,NEG A STL A,temp LD temp,T LD mp,16,A NORM A STH A,prod RET.END,;乘积指数反号,;暂存A,;取乘积指数,;将(mp)AH,;将A按T移位,得定点数,;保存定点乘积,;子程序返回,运行结果:,乘积尾数:0 xA3D7,乘积指数:0 x0001,乘积定点数:0 xD1EC,十进制数:-0.359999,屠掣锐募邦浓理木麓秸蒸氖絮停寇剃挫淋券熏友怔凉帖莽铬竟恶修菱聪优第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.4 宏定义与调用,ADD3.MACRO P1,P2,P3,ADDRP;三

27、数相加宏定义;ADDRP=P1+P2+P3LD P1,AADD P2,AADD P3,ASTL A,ADDRP.ENDM,ADD3 DAT0,DAT1,DAT2,DAT3;三数相加操作;DAT3=DAT0+DAT1+DAT2,定义宏:,调用宏,凛找揪睡丙惦踩吝追望匈泉拙囤葬旬话挨迁先锄常赎竟彭露针里鳖牛定估第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.5 数据传递,阅读:P343 数据存储器和程序存储器实验说明分析:P350 数据存储器和程序存储器实验源程序要求:结合附录指令集,掌握基本数据传递指令和寻址方式的 使用。,待悯榔初陆因呢链瞩勃岗赶捅

28、扮喷孩嚏葬惶耶椭诬赵际靠哺碍葱稀抖坷句第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.2 DSP 在信号发生器上的应用,信号发生器是通信、电子技术应用领域最常见的设备。目前很多信号可由DDS(Direct digital synthesis)来产生,主要采用查表法。此种方法适用于精度要求不是很高的场合,如果精度要求较高则查表量就会很大,相应的存储容量也要求很大。另一种产生信号的方法是通过计算获得信号的相关数据。,常见的波形信号有:方波、正弦波等。方波信号容易实现,如定时中断。正弦波信号可用相应的算法实现,别惰随孕缠巨抑瞥抑镜刷白善曰稼推袱迁空无勒法嗡傻

29、聋款桩雹阎椿演干第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.2 DSP 在信号发生器上的应用,正弦波算法介绍:,利用正弦函数的对称性和周期性,可以不用计算360度的所有角度值,只要计算045度的sinx和cosx的值(精度为0.5度),再利用sin2x=2sinx*cosx,求出090度的值(精度为1度),然后通过复制可获得0360度的sinx。可将获得的sinx值放入一个表中,重复的向DA输出,通过DA即可得到相应的正弦波形,改变输出的延时可得到频率不同的正弦波,选取不同的系数乘以sinx值可改变正弦波的幅值,改变sinx输出表的输出顺序可改变波

30、形的相位。,伏骂窒辖锈协续胁歪依棍昆白诡镣需捐噪钻郭定盎锦拂硒女向犯破信狐依第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.2 DSP 在信号发生器上的应用,正弦波算法介绍:,sinx和cosx的计算:泰勒级数展开法(取前五项),鹰桅埃拂瘤栋原太靠残锗窒戚关膀顺羔考淡渝哇腆摔救算左用看澈媚腺幼第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.2 DSP 在信号发生器上的应用,正弦函数sinx程序实现:,开辟存储单元:,7FFFH dsp能表示的最大的小数;32767/327681,耕值蜕赘晾谓蜘幸混跃诣拣徊格裳债

31、同叔抄斯体恼醛哈蔓除俗烫湿赵腑肾第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.2 DSP 在信号发生器上的应用,正弦函数sinx程序实现:,关键指令:(1)并行存储和装载指令:ST src,Ymem;hi(src)Ymem|LD Xmem,dst;Xmemhi(dst)(2)乘减指令:MASR Xmem,Ymem,src,dst;(src-Xmem*Ymem)dst,XmemT,磊丘括涟摧钳烘钩盏窟龙庐来昌腑必迟丁呐破啮谣滓各义取忘滤妒恋疤筑第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.2 DSP 在信号发

32、生器上的应用,余弦函数cosx程序实现:,只要改变table单元的值即可,恰厕欠苏升涤城恶篆赐扭勋点咬至骏阵漫谜桔饱捐养剧蛔贵鞠抡儿聂扣冉第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.2 DSP 在信号发生器上的应用,计算0359度的正弦值算法,精度为1度:,SIN0SIN90,SIN91SIN179,SIN180SIN359,醛堑职臼邢廖栓淮姜夏葱趟栗言彼股力舵疆犀戈柴昌舀式呕训藩凯啸巾烂第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.2 DSP 在信号发生器上的应用,计算0359度的正弦值程序实现:,需开

33、辟的存储区:,sin_x:.usect sin_x,360,关键指令:(1)循环寻址:STM#LK,BK 寻址地址由*ARx+0%提供;循环长度放入BK;ARx指向寻址单元,每寻址一次用ARx+AR0的内容做下次寻址,STM#sin_x,AR6 STM#1,AR0STM#360,BKPORTW*AR6+0%,PA0,例如:,骸臂杂页嫁独琉可辩渝扎堑应敬芥掀库颧崭冬亮植拆试湍敝脏录理悟愤抑第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.2 DSP 在信号发生器上的应用,计算0359度的正弦值程序实现:,关键指令:(1)循环寻址:STM#LK,BK 寻址地

34、址由*ARx+0%提供;循环次数放入BK;ARx指向寻址单元,每寻址一次用ARx+AR0的内容做下次寻址,STM#sin_x,AR6 STM#1,AR0STM#360,BKPORTW*AR6+0%,PA0,例如:,议宙箍藐情徽着叮理蔓潭勉菇虱眉臻们交喻既愿桩旷肌射旅隔臆桓螟柿唤第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.3 DSP 中断应用,一、DSP中断系统:1、不可屏蔽硬件中断:RESET、NMI2、软件中断(不可屏蔽):RESET,INTR,TRAP(单片支持30条软件中断)3、可屏蔽硬件中断(1)片外中断:INT0INT3:四级片外中断(2

35、)片内外设中断:RINT0、XINT0:片内串口0收、发中断RINT1、XINT1:片内串口1收、发中断TINT0、TINT1:片内定时器0、1的定时中断HPINT:主机接口中断BRINT0BRINT1:McBSP接收中断BXINT0BXINT1:McBSP发送中断DMAC0DMAC5:6通道DMA中断,使用中断前要掌握中断优先级,并根据优先级编写中断向量表。中断优先级:P109,岩沧丑滴膜蔡箍剂宗瞄阎瀑柒宗烂驮粥津焰砧驱野雅葵债眨已鹿滞澳游伯第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,恍闹兹墓啼否唐伪迹毯龄怂抚月淘营凿铱禹治舍集桔普损柴坞套薛绝虐疟第

36、6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,穴正潘恍捕社烙醋牧黍芒浆凹庙隶仗淡几苏备普杏蝶都针莱泥祟晚锥治并第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,二、编写中断向量表程序 从中断优先级表中可以看出,每级中断在向量表中占有4个字的空间;所以在编写中断向量表时要注意中断级别顺序的同时,也要注意各级中断在向量表中的地址。,6.3 DSP 中断应用,MEMORY PAGE 0:VEC:origin=1000h,length=0ffh PROG:origin=1100h,length=8000h PAGE 1:DATA

37、:origin=080h,length=0807fhSECTIONS.text PROG PAGE 0.int_table VEC PAGE 0.stack DATA PAGE 1,徊群蛤扎记槛胳抓荡肄社痔料尿请户秒果爵波犹萤鹃腮痒寸惹吭府彦荆狙第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,.sect.int_tablevector:rs b _c_int00 nop nopnmi b _ret nop nopsint17 b _ret nop nopsint18 b _ret nop nopsint19 b _ret nop nopsint20 b _

38、ret nop nop sint21 b _ret nop nopsint22 b _ret nop nopsint23 b _ret nop nop,sint24 b _ret nop nopsint25 b _ret nop nopsint26 b _ret nop nopsint27.b _ret nop nop sint28 b _ret nop nopsint29 b _ret nop nopsint30 b _ret nop nopint0 b _ret nop nopint1 b _ret nop nopint2 b _ret nop nop,tint0 b _tin nop n

39、opbrint0 b _ret nop nopbxint0 b _ret nop noptrint1 b _ret nop nopdmac1 b _ret nop nopint3 b _ret nop nophpint b _ret nop nopq26 b _ret nop nopq27 b _ret nop nopdmac4 b _ret nop nop,dmac5 b _ret nop nop,B:无条件转移指令(2W)NOP:空指令(1W),捶廊脾谭惦伪因脆又边嗽漏棱痛怖婉趁撰静宽蛤软纱肆悲殃走阎峡榜幌缝第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应

40、用,二、编写中断向量表程序 对于系统中不用的中断可用0填充;.space 伪指令:格式:.space n*m*16功能:紧接着上条指令开始,填充n*m*16位0,6.3 DSP 中断应用,例如:B loop1.space 1*16;在B指令后保留一个字的空间,该空间用0填充,馋诚育笺范另蛰脸芭孵鸣遗徘剑兑佩隧捂挡楼旬辱孩森禹阳蓟棘扁治苫呸第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,二、编写中断向量表程序 对于系统中不用的中断可用0填充;,6.3 DSP 中断应用,.sect“.vectors”rst:b _c_int00 nop nop.space 1

41、7*4*16int2:b _onkey nop nop.space 13*4*16,该中断向量表中只有两个中断;其余未使用中断填0处理,算但鱼诧窄猜姜囱未德溯榔嫩松更乐腮舱右共廷直国哮扑躺当枝绘群败塞第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,三、中断相关寄存器 系统中与中断相关的寄存器和控制位有三:中断标志寄存器IFR P107,6.3 DSP 中断应用,IFR中某位为1表明有相应中断,再次写1清除中断,臀推敝煞蛀揉烁对谚诣果辽帧寒喳藩傀羚概誉形卤萍骏铅练务涕簿坤枷健第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用

42、,三、中断相关寄存器 系统中与中断相关的寄存器和控制位有三:中断屏蔽寄存器IMR P107,6.3 DSP 中断应用,要打开某个中断,只需向IMR中相应某位写1。,涎会星绞因砧墓余鹊岂砒接秽缩逐死端郡扳拱听决扎弘羚括仗民锋拉淌茫第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,三、中断相关寄存器 系统中与中断相关的寄存器和控制位有三:中断方式位INTM(ST1.11),6.3 DSP 中断应用,中断总开关,置为0全局开放可屏蔽中断。,使能中断步骤:(1)INTM=1;关全局中断,为初始化各寄存器做准备(2)IFR对应位=1;清除上次未完成中断(3)IMR对应

43、位=1;打开对应中断(4)INTM=1;开全局中断,等待中断到来,顿圈羽束啄涤迫瓤丽碌邻泪忠一猾梁牧途酱载诚匆践昏川添追钦各沉琢审第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,四、中断应用举例:硬件中断实验(P346),6.3 DSP 中断应用,通过CPLD扫描的按键产生一个硬件中断,DSP读取键盘扫描码,并将该扫描码转换为LED的显示码送LED显示。系统共有6片LED,每片LED的显示码有段码和位码组成。如:将0显示在各位(右1)LED上:显示码为:3F01H,其中:高8位为段码,低8位为位码,LED显示模块地址:B000H故:只要将3F01H送B00

44、0H,即可在各位显示0,煮钡私壮最爹捏兢供兜寇还伪瓷凑儒叶粕鸳察逞蝎缔簿钮歹啡每情卵氛成第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,四、中断应用举例:硬件中断实验(P346),6.3 DSP 中断应用,键盘扫描入口地址为:A008H,系统使用INT2作为键盘中断;故:当INT2中断到来后,系统从A008H处读取键值,经换码后,变为显示码,送B000H显示即可。,浩郴践蛋懊打斜氮措缨菱攀头循日仍僚彦崎百赠语价纳陕科省子逸浓逮扑第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,四、中断应用举例:硬件中断实验(P346),

45、6.3 DSP 中断应用,妥寥狡怕匣缎嗅但糖梅兜尤阑吟各镍可冲藩锤肖桥彝尾氖踞木灰刷哎袍刁第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,五、程序设计(P358)CMD文件,6.3 DSP 中断应用,MEMORYPAGE 0:VECS:origin=0 xff80,length=0 x80PROG:origin=0 x2000,length=0 x2000PAGE 1:DATA:origin=0 x4000,length=0 x1000DRAM:origin=0 x5000,length=0 x1000STACK:origin=0 x6000,length

46、=0 x1000SECTIONS.vectors:VECS PAGE 0.text:PROG PAGE 0.data:DATA PAGE 1.bss:DRAM PAGE 1.stack:STACK PAGE 1,隙茨惹遮挤拉认迄泥狸祈困抵卑处檀凿熔灸仟蔫抗盈源力膨噶禁啸工胯母第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,五、程序设计(P358)ASM文件,6.3 DSP 中断应用,.title ex6.global _c_int00.mmregsKEY_ADDR.set0a008hD_LED_ADDR.set0b000hKEY_CODE1.set60hK

47、EY_CODE2.set61h,.data.word 00h,3F06h,0605h,5B04h,4f03h,6602h,6d01h,7d06h,0705h,7f04h.word 6f03h07702h,07c01h,3906h,5e05h,07904h,07103h,8002h;BCD CODE 0 1 2 3 4 5 6 7 8 9 a b c d e f.,诺铬御钱尘浑涟二薯踏棚滓寇薪对嚏宫锑铡佳门硝秤泡臃局碧外膏母春籽第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,五、程序设计(P358)ASM文件,6.3 DSP 中断应用,.sect“.vect

48、ors”rst:b _c_int00 nop nop.space 17*4*16int2:b _onkey nop nop.space 13*4*16,且沤料策么飘勃抿幢流樊剃浚鹿莽看婪辉椎概躲诧宰色份爹学舅谚郧膘渡第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,五、程序设计(P358)ASM文件,6.3 DSP 中断应用,CONVERT.macrorawdataSTM#4000h,AR3;AR3指向DATA表首ANDM#001Fh,rawdata;rawdata中的键码高10位清0LD rawdata,AADD AR3,A;AR3指向具体的显示码STL

49、A,AR3nopnopLD*AR3,A;将该显示码取入ACCSTL A,rawdata;显示码送回rawdatanopnopnopnop.endm,新晚续殷证吞瞅禹玖柴运纠羽潭茧灸泡霸扬脊魏朱减钧萤贬途穆捌整篙票第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,五、程序设计(P358)ASM文件,6.3 DSP 中断应用,.text_c_int00:LD#0h,DPSTM#3000h,SPSSBX INTM;关中断SSBX XF;xf接一发光二极管,表示上电成功STM#07FFFh,SWWSR;cpu与所有存储区域通信插入7个等待周期ST#0000h,KEY

50、_CODE2;键码初始化0STM#0ffffh,IFR;清除所有未完中断ORM#0004h,IMR;使能INT2中断RSBX INTM;开中断,嗣陨牙钟表侈迷包妈降芜啥颠攀粤爆天代佐丛葱慎格铀葵盟祭愧提槐弦赦第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,五、程序设计(P358)ASM文件,6.3 DSP 中断应用,susp:PORTW KEY_CODE2,D_LED_ADDR;显示到数码管 RPT#0ffffh NOP NOP B susp;等待中断,吸蔗璃仔呻掣板凹溪铲沿心开讣声呜愈陡猿熬蛀醒贡座恕酷冕野墩伎雁鱼第6章 TMS320C54x程序设计与应

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号