⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi.asm

📁 利用汇编语言编写的SPI串行接口的DSP 实验程序。
💻 ASM
字号:
        .copy "240xA.h"
        .copy "240xAvector.h"
        .def _c_int0
        .text
_c_int0:
        LDP #0H
        SETC INTM            ;禁止中断
        LDP #00E0H
        SPLK #006FH,WDCR     ;禁止看门狗
        SPLK #0084H,SCSR1    ;使能ADC模块和EVA时钟
        LAR AR0,#00C7H       ;重复200次
        LAR AR1,#0800H       ;从通道5采集的200个值存放在以0800H开始的200
                             ;个数据单元中
        LAR AR2,#08C8H       ;从通道2采集的200个值存放在以08CAH开始的200
                             ;个数据单元中
        LAR AR3,#0990H       ;从通道3采集的200个值存放在以0990H开始的200
                             ;个数据单元中
        LAR AR4,#0A58H       ;从通道1采集的200个值存放在以0A58H开始的200
                             ;个数据单元中
        LAR AR5,#0B20H       ;从通道3采集的200个值存放在以0B20H开始的200
                             ;个数据单元中
        LAR AR6,#0BE8H       ;从通道4采集的200个值存放在以0BE8H开始的200
                             ;个数据单元中
        LAR AR7,#0CB0H       ;从通道6采集的200个值存放在以0CB0H开始的200
                            ;个数据单元中
         LDP   #00E1H
         SPLK #4000H,ADCCTRL1  ;复位ADC单元 
         NOP
         SPLK #0010H,ADCCTRL1    ;设置工作于级联和启动停止模式              
         SPLK #2H,MAXCONV         ;第一次转换通道数为3个
         SPLK #1325H,CHSELSEQ1   ;转换通道5,2,3,1
         SPLK #0643H,CHSELSEQ2   ;转换通道为3,4,6
         SPLK #4000H,ADCCTRL2    ;复位排序器,使其指向CONV00
         SPLK #0500H,ADCCTRL2    ;允许SEQ1被EVA的触发源启动
         LDP   #00E8H
         SPLK  #0480H,GPTCONA   ;允许T1下溢和T2周期触发AD转换
         SPLK  #1000H,T1CON     ;禁止T1
         SPLK  #1080H,T2CON     ;禁止T2
         SPLK  #0000H,T1CNT     ;设置T1的计数初值
         SPLK  #0000H,T2CNT     ;设置T2的计数初值
         SPLK  #03E8H,T1PR      ;设置T1的周期值
         SPLK  #07D0H,T2PR      ;设置T2的周期值
         SPLK  #1040H,T1CON     ;启动T1和T2,实现同步
         
         LDP   #0H
         SPLK  #0FFFFH,IFR      ;清中断标志
         SPLK  #0001H,IMR       ;允许INT1中断
         CLRC  INTM             ;开CPU中断
TEST:    NOP          
         B   TEST
GISR1:   LDP  #00E1H
         LACL  MAXCONV           ;根据MAXCONV判断是否后半部分
         XOR  #0003H
         BCND TWO,EQ 
ONE:     SPLK #0003H,MAXCONV    ;前半部分完成后的操作
         LACL RESULT5           ;读取转换结果并存入相应区域
         MAR  *,AR1
         SACL *+
         
         LACL RESULT2
         MAR  *,AR2
         SACL *+
         
         LACL RESULT3
         MAR  *,AR3
         SACL *+         
         B   GISR1_RET
TWO:    
         SPLK #0002H,MAXCONV   ;后半部分完成后的操作
         LACL ADCCTRL2         ;对排序器进行复位
         OR   #4000H       
         SACL ADCCTRL2         ;读取转换结果并存入相应区域
         LACL RESULT1
         MAR  *,AR4
         SACL *+
         LACL RESULT3
         MAR  *,AR5
         SACL *+
         LACL RESULT4
         MAR  *,AR6
         SACL *+
         LACL RESULT6
         MAR  *,AR7
         SACL *+
         MAR   *,AR0          ;判断是否已完成200次
         BANZ  GISR1_RET
         B    OKRET
GISR1_RET:LDP  #00E1H         ;清中断标志
         LACL ADCCTRL2
         OR   #0200H
         SACL ADCCTRL2
         LDP  #0H
         SPLK #0FFFFH,IFR
         CLRC INTM            ;开中断
OKRET:        RET
GISR2:   RET
GISR3:   RET
GISR4:   RET
GISR5:   RET
GISR6:   RET
PHANTOM: RET
         .END



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -