新人报道 呵呵 求罩
dsp吧
全部回复
仅看楼主
level 2
刚编写了一个2812的小程序,求指点
2013年10月30日 15点10分 1
level 2
.include "reg2812asm.h"
.include "PIEVECTOR.H"
; .include "codestart.asm"
.def _c_int00
STACK .usect".stack",400;定义堆栈
.text
;系统全局初始化
_c_int00
;ST0/ST1配置
SYSTEM_INIT:
C28OBJ ;OBJMODE位置1
CLRC C ;清除进位
CLRC OVM ;清除溢出位
SETCSXM ; 符号位扩展有效
SETC M0M1MAP ;C28X模式默认
SETCVMAP; CPU中断向量映射到存储器顶部
CLRCDBGM; 调试使能
SETCINTM; 全局中断屏蔽
;仿真读取使能位
;/////////////////////配置时钟、晶振、锁相环、看门狗等////////////////////////////
SET_SYSTEM:
EALLOW
MOVZ DP,#SCSR>>6
MOV @7022H,#0003H;允许用户改变看门狗控制寄存器(WDCR)的看门狗屏蔽位(WDDIS)
MOVZ DP,#WDKEY>>6
MOV @WDKEY,#0055H
MOV @WDKEY,#00AAH
MOVZ DP,#WDCR>>6;看门狗控制寄存器
MOV @7029H,#0068H;屏蔽看门狗模块
MOVZ DP,#PCLKCR>>6;
MOV @701CH,#0001H;使能EV-A外设内部的高速时钟(HSPCLK)
MOVZ DP,#PLLCR>>6
MOV @7021H,#000AH;PLL比例为x10/2
MOVZ DP,#HISPCP>>6
MOV @701AH,#0000H;高速时钟=SYSCLKOUT
MOVZ DP,#LOSPCP>>6
MOV @701BH,#0005H;低速时钟=SYSCLKOUT/10
EDIS
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;GPIO多路复用器配置
EALLOW
SET_GPIO: MOVZ DP,#GPAMUX>>6
MOV @70C0H,#0707H;配置GPBMUX的8-10位为捕捉端口,1、2、3位控制上桥臂并为
;PWM产生端口,3、4、5位控制下桥臂,作为普通I/O口
MOVZ DP,#GPADIR>>6
MOV @70C1H,#003FH;GPB的0-5设置为数字输出,其余为输入
MOVZ DP,#GPAQUAL>>6
MOV @70C2H,#00FFH;设定捕捉单元的采样周期为CLKOUT/510
MOVZ DP,#GPGUX>>6
MOV @70D8H,#0030H;GPGMU.4,GPGMU.5为通讯端口
MOVZ DP,#GPGDIR>>6
MOV @70D9H,#0010H;TX端口配置为数字输出,RX为数字输入
EDIS
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!I
2013年10月30日 15点10分 2
level 2
;///////////////////////////////////////////换相逻辑,使用查表法/////////////////////////////////////////////
DEAL_HALL:
MOVW DP,#DP_GPIO
MOVL ACC,@GPADAT;将GPIOA的端口信息送入累加器
AND ACC,#00000700H
LSR AL,7 ;提取位置信息
MOVL XAR2,#SWITCH_TABLE;指向表的首地址
MOVZ AR0,AL;将位置信息送入AR0
MOVL XAR7,*+XAR2[AR0]
LB *XAR7
SWITCHRETURN: ;清除捕捉中断标志位
MOVZ DP,#EVAIFRC>>6
MOV @7431H,#0007H;清除标志位,该寄存器写1时复位
MOVZ DP,#PIEACK>>6
MOV @0CE1H,#0FFFH;清除
OR IER,#0005H
AND IFR,#0FFFBH
MOVZ DP,#PIEIFR3>>6
MOV @0CE7H,#0000H;清除INT5所有标志位
MOVZ DP,#PIEIER3>>6
MOV @0CE6H,#0070H;CAPINT4/5/6使能
CLRC INTM;重新清零全局中断屏蔽位
EALLOW;
IRET;中断返回
;////////////////引脚分配/////////////////////////////////
;GPB.BIT5: VF6 ;
;GPB.BIT4: VF4 ;
;GPB.BIT3: VF2 ;
;GPB.BIT2: VF5 ;
;GPB.BIT1: VF3 ;
;GPB.BIT0: VF1 ;
;/////////////////////////////////////////////////////////
A_B:;101状态换相子程序,A+/B-,导通VF1/VF6
MOVZ DP,#ACTRA>>6
MOV @7413H,#003DH;导通VF1(低有效),关断VF3/VF5(强制低)
MOVZ DP,#GPASET>>6;------------------------------------GPXSET指令将某位置1
MOV @70E1H,#0018H;导通VF6
MOVZ DP,#GPACLEAR>>6 ;------------------------------------GPXCLEAR指令将某位清0
MOV @70E2H,#0020H;关闭下桥臂的VF4/VF2
LB SWITCHRETURN;长跳转返回
;------------------------------------------------------
A_C:;100状态换相子程序,A+/C-,导通VF1/VF2
MOVZ DP,#ACTRA>>6
MOV @7413H,#003DH;导通VF1,关断VF3/VF5,低有效
MOVZ DP,#GPASET>>6
MOV @70E1H,#0030H;导通VF2
MOVZ DP,#GPACLEAR>>6
MOV @70E2H,#0008H;关闭下桥臂的VF4/VF6
LB SWITCHRETURN;长跳转返回
;------------------------------------------------------
B_C:;110状态换相子程序,B+/C-,导通VF2/VF3
MOVZ DP,#ACTRA>>6
MOV @7413H,#0037H;导通VF3,关断VF1/VF5,低有效
MOVZ DP,#GPASET>>6
MOV @70E1H,#0030H;导通VF2
MOVZ DP,#GPACLEAR>>6
MOV @70E2H,#0008H;关闭下桥臂的VF4/VF6
LB SWITCHRETURN;长跳转返回
;------------------------------------------------------
B_A:;010状态换相子程序,B+/A-,导通VF3/VF4
MOVZ DP,#ACTRA>>6
MOV @7413H,#0037H;导通VF3,关断VF1/VF5,低有效
MOVZ DP,#GPASET>>6
MOV @70E1H,#0028H;导通VF4
MOVZ DP,#GPACLEAR>>6
MOV @70E2H,#0010H;关闭下桥臂的VF2/VF6
LB SWITCHRETURN;长跳转返回
;------------------------------------------------------
C_A:;011状态换相子程序,C+/A-,导通VF4/VF5
MOVZ DP,#ACTRB>>6
MOV @7413H,#001FH;导通VF3,关断VF1/VF5,低有效
MOVZ DP,#GPASET>>6
MOV @70E1H,#0028H;导通VF4
MOVZ DP,#GPACLEAR>>6
MOV @70E2H,#0010H;关闭下桥臂的VF2/VF6
LB SWITCHRETURN;长跳转返回
;------------------------------------------------------
C_B:;001状态换相子程序,C+/B-,导通VF5/VF6
MOVZ DP,#ACTRA>>6
MOV @7413H,#001FH;导通VF3,关断VF1/VF5,低有效
MOVZ DP,#GPASET>>6
MOV @70E1H,#0018H;导通VF6
MOVZ DP,#GPACLEAR>>6
MOV @70E2H,#0020H;关闭下桥臂的VF4/VF2
LB SWITCHRETURN;长跳转返回
;-------------------------------------------------------------------------------------------------------I
2013年10月30日 15点10分 4
level 2
PROTECT:NOP
B _END,UNC
;////////////////////////////////////////////////////////////////////////////////////////////////////////
;中断服务子程序
RSTISR:IRET
INTISR1: IRET
INTISR2: IRET
INTISR3: IRET
INTISR4:IRET
INTISR5:IRET
INTISR6:IRET
INTISR7: IRET
INTISR8: IRET
INTISR9: IRET
INTISR10: IRET
INTISR11:IRET
INTISR12: IRET
INTISR13: IRET
INTISR14:IRET
DTLOGISR:IRET
RTSISR: IRET
EMUISR:IRET
NMIISR:IRET
ILLISR:IRET
USRISR1: IRET
USRISR2: IRET
USRISR3: IRET
USRISR4: IRET
USRISR5: IRET
USRISR6: IRET
USRISR7: IRET
USRISR8: IRET
USRISR9: IRET
USRISR10: IRET
USRISR11: IRET
USRISR12: IRET
PDPAISR: IRET
PDPBISR: IRET
XINT1ISR: IRET
XINT2ISR: IRET
ADCISR: IRET
TINT0ISR: IRET
WAKEISR: IRET
CMP1ISR: IRET
CMP2ISR: IRET
CMP3ISR: IRET
T1PISR: IRET
T1CISR: IRET
T1UFISR: IRET
T1OFISR: IRET
T2PISR: IRET
T2CISR: IRET
T2UFISR: IRET
T2OFISR: IRET
CAPISR1:
MOVW DP,#DP_GPIO
MOVL ACC,@GPADAT;将GPIOA的端口信息送入累加器
AND ACC,#00000700H
LSR AL,7 ;提取位置信息
MOVL XAR2,#SWITCH_TABLE;指向表的首地址
MOVZ AR0,AL;将位置信息送入AR0
MOVL XAR7,*+XAR2[AR0]
LB *XAR7
;-------------------------------------
CAPISR2:
MOVW DP,#DP_GPIO
MOVL ACC,@GPADAT;将GPIOA的端口信息送入累加器
AND ACC,#00000700H
LSR AL,7 ;提取位置信息
MOVL XAR2,#SWITCH_TABLE;指向表的首地址
MOVZ AR0,AL;将位置信息送入AR0
MOVL XAR7,*+XAR2[AR0]
LB *XAR7
;-------------------------------------
CAPISR3:
MOVW DP,#DP_GPIO
MOVL ACC,@GPADAT;将GPIOA的端口信息送入累加器
AND ACC,#00000700H
LSR AL,7 ;提取位置信息
MOVL XAR2,#SWITCH_TABLE;指向表的首地址
MOVZ AR0,AL;将位置信息送入AR0
MOVL XAR7,*+XAR2[AR0]
LB *XAR7
CAPISR4: IRET
CAPISR5: IRET
CAPISR6: IRET
;----------------------------------------------------------------------------------------------------
;///////////////捕捉中断服务子程序---调用换相子程序换相////////////////////////
;----------------------------------------------------------------------------------------------------
CMP4ISR: IRET
CMP5ISR: IRET
CMP6ISR: IRET
T3PISR: IRET
T3CISR: IRET
T3UFISR: IRET
T3OFISR: IRET
T4PISR: IRET
T4CISR: IRET
T4UFISR: IRET
T4OFISR: IRET
;///调用端口读取子程序,----------中断入口在哪?
SPIRXISR: IRET
SPITXISR: IRET
MRISR: IRET
MXISR: IRET
SCIARXISR: IRET
SCIATXISR: IRET
SCIBRXISR: IRET
SCIBTXISR: IRET
ECAN0ISR: IRET
ECAN1ISR: IRET
;/////////////////////////////////////////////////////////////////////////////////////////////////////////////
_END: .ENDI
2013年10月30日 15点10分 5
level 2
求大神指点一二,这种编程风格有何不妥
2013年10月30日 15点10分 6
1