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

📄 boot.asm

📁 硬件平台DM642
💻 ASM
字号:
            .title  "Flash bootup utility for DM642 EVM"
            .option D,T
            .length 102
            .width  140
;          .sect ".boot_load"
            .global _boot
eprh      .equ 0x01a0ff9c 
ciprh     .equ 0x01a0ffa4  
cierh     .equ 0x01a0ffa8  
ccerh     .equ 0x01a0ffac   
erh       .equ 0x01a0ffb0   
eerh      .equ 0x01a0ffb4   
ecrh      .equ 0x01a0ffb8   
pcfglock  .equ 0x01b3f018
percfg    .equ 0x01b3f000
I2COAR0   .equ 0x01b40000
i2cier0   .equ 0x01b40004
i2cstr0   .equ 0x01b40008
i2cclkl0  .equ 0x01b4000c
i2cclkh0  .equ 0x01b40010
i2ccnt0   .equ 0x01b40014
i2cdrr0   .equ 0x01b40018
i2csar0   .equ 0x01b4001c
i2cdxr0   .equ 0x01b40020
i2cmdr0   .equ 0x01b40024
i2cisrc0  .equ 0x01b40028
reserved  .equ 0x01b4002c
i2cpsc0   .equ 0x01b40030
i2cpid10  .equ 0x01b40034
i2cpid20  .equ 0x01b40038
LEDCTLR   .equ 0x01b00000
LEDCTLR1  .equ 0x01b00004
LEDCTLR2  .equ 0x01b00008

loog      .equ 0x10c0010c ;定时时间长度
          .def _main
          .def loop
          .def loop1
          .def loop2
_main: 
;;;;;;;;;i0口程序
       mvkl   LEDCTLR,a1;中断子程序
       mvkh   LEDCTLR,a1
       mvkl   0ffffh,b1 ;控制通用IO口的工作
       mvkh   0h,b1
       stw    b1,*a1
       mvkl   LEDCTLR1,a1
       mvkh   LEDCTLR1,a1
       mvkl   0ffffh,b1
       mvkh   00h,b1
       stw    b1,*a1
       mvkl   LEDCTLR2,a1
       mvkh   LEDCTLR2,a1
       mvkl   0ffffh,b1
       mvkh   00h,b1
       stw    b1,*a1;GP0=1 select IIC_set b2
       mvkl   10000,a0
       bdec   $,a0;等待128时钟访问外设
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;;;;开锁程序      
       mvkl   pcfglock,a1
       mvkh   pcfglock,a1;dsp 的端口锁
       ldw    *a1,a2
       mvkl   loog,b1
       mvkh   loog,b1       
       stw    b1,*a1
       nop    ;开锁写一次pcfglock开锁再写关锁
            
       mvkl   percfg,a1
       mvkh   percfg,a1;使能外设端口
       ldw    *a1,a2
       mvkl   8h,b1
       mvkh   0,b1       
       or     b1,a2,a2
       stw    a2,*a1;
       nop  
  ;     ldw    *a1,a7
       ;nop    6
       
       mvkl   128,a0
       bdec   $,a0;等待128时钟访问外设
;;;;;;;;;;;; 开外设I2C ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
;;;;;;;;----------初始化i2c外设
       mvkl   1ah,b2
       mvkh   0h,b2 
       nop 
       mvkl   I2COAR0,a2
       mvkh   I2COAR0,a2;设定主机地址
       stw    b2,*a2
       nop
        
       mvkl   i2cier0,a1
       mvkh   i2cier0,a1;设定i2c中断
       mvkl   0h,b1;0禁止1使能
       mvkh   0h,b1
       stw    b1,*a1
       nop
      ;;;;;;;;;;;;; 确定scl上的时钟;;;;;;;;;;;
       mvkl   i2cclkh0,a1
       mvkh   i2cclkh0,a1;设定分频系数2H
       mvkl   1bh,b1
       mvkh   0h,b1
       stw    b1,*a1
       nop
                                                                                                                                                                            
       mvkl   1bh,b2
       mvkh   0h,b2 
       nop
       mvkl   i2cclkl0,a2
       mvkh   i2cclkl0,a2;设定分频系数2L
       stw    b2,*a2
       nop         
       mvkl   45h,b2
       mvkh   0h,b2 
       nop
       mvkl   i2cpsc0,a2
       mvkh   i2cpsc0,a2;设定分频系数1
       stw    b2,*a2
       nop
      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
      
 ;      mvkl   i2ccnt0,a2
 ;      mvkh   i2ccnt0,a2;设定计数器当rm=0
  ;     ldw    *a2,a0
 ;      mvkl   4h,b2
  ;     mvkh   0h,b2 
 ;      stw    b2,*a2
 ;      nop
       
       mvkl   i2csar0,a1
       mvkh   i2csar0,a1;设定从机地址57h 
       mvkl   57h,b1
       mvkh   0h,b1
       stw    b1,*a1
       nop
       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;--------------------------------------       
       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
loop1: mvkl   i2cstr0,a1
       mvkh   i2cstr0,a1;bb=0?
       ldw    *a1,b2
       nop    
       mvkl   1000h,a0 
       mvkh   0h,a0
       and    a0,b2,a0
 [a0]  b      loop1
       nop    5
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;判断总线忙不忙
       mvkl   66a0h,b2
       mvkh   0h,b2 
       nop
       mvkl   i2cmdr0,a2
       mvkh   i2cmdr0,a2;设定工作模式
       stw    b2,*a2
       nop    9
       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;开始传输数据
       mvk    0h,a8
       mvk    10h,b8;设定数据量 
       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
loop2: mvkl   i2cstr0,a1
       mvkh   i2cstr0,a1;nack=0?
       ldw    *a1,a2
       mvkl   2h,a0 
       mvkh   0h,a0
       and    a0,a2,a0
 [a0]  b      loop2
       nop    5 
       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;察看是否有总线响应
       mvkl   i2cstr0,a1
       mvkh   i2cstr0,a1;请求发送数据
       ldw    *a1,b1
       mvkl   10h,a0 
       mvkh   0h,a0
       and    a0,b1,a0
       nop    9
 [!a0] b      loop2 
       nop    9 
       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;察看缓冲器里的数据是否准备好
       cmpeq  a8,b8,a0
 [a0]  b      loop      
       add    1,a8,a8          
       mvkl   i2cdxr0,a1
       mvkh   i2cdxr0,a1;发送数据的值 
       mvkl    55,b1
       mvkh   0h,b1
       stw    b1,*a1
       nop    9      
       mvkl   1000,a10
       bdec   $,a10 
       nop    5
       b      loop2 
       nop    5
       ;;;;;;;;;;;;;;;;;;;;;; 发送数据
loop:  mvkl   i2cstr0,a1
       mvkh   i2cstr0,a1;ardy=0
       ldw    *a1,a2
       mvkl   4h,a0 
       mvkh   0h,a0
       and    a0,a2,a0 
 [!a0] b      loop  
       nop    5  
       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;察看是否成功访问
       mvkl   i2cmdr0,a1
       mvkh   i2cmdr0,a1
       ldw    *a1,b1     
       mvkl   0dfffh,a2
       mvkh   0ffffh,a2                                                                                                                                                                                                                                     
       and    a2,b1,a0
       stw    a0,*a1
       nop    5
       ;;;;;;;;;;;;;;;;;;;;;
       mvkl   i2cmdr0,a1
       mvkh   i2cmdr0,a1
       ldw    *a1,b1   
       mvkl   0800h,a0 
       mvkh   0h,a0
       or     a0,b1,a0
       stw    a0,*a1
       nop    5
       ;;;;;;;;;;;;;;;;;;;;;;;;;发送停止
       mvkl   i2cstr0,a1
       mvkh   i2cstr0,a1;bb=1?
       ldw    *a1,b2
       nop    
       mvkl   1000h,a0 
       mvkh   0h,a0
       and    a0,b2,a0
       stw    a0,*a1
       nop    5
       ;;;;;;;;;;;;;;;;;;;;;;;
       mvkl   0ffffh,b0
       mvkh   0h,b0    
       nop    5
       nop
       bdec   $,a0
       nop    5
       b      _main
       nop
       nop
       nop
        
        

   

⌨️ 快捷键说明

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