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

📄 system.asm

📁 基于SPMC75的NNAD_Flash K9F1208的驱动程式序,对一些需要存海量数据的单片机应用场合有用.
💻 ASM
字号:
.INCLUDE spce.inc
.DEFINE  P_WatchDog_Clear    0x7012
.DEFINE  Fosc                0x0000
.DEFINE  Fosc_Div2           0x0001
.DEFINE  Fosc_Div4           0x0002
.DEFINE  Fosc_Div8           0x0003
.DEFINE  Fosc_Div16          0x0004
.DEFINE  Fosc_Div32          0x0005
.DEFINE  Fosc_Div64          0x0006
.DEFINE  Sleep               0x0007
.DEFINE  F_24576             0x0000
.DEFINE  F_20480             0x0020
.DEFINE  F_32768             0x0040
.DEFINE  F_40960             0x0060
.DEFINE  F_49452             0x0080
.DEFINE  OSC_Q               0x0008

.DEFINE  FIQ_F1024           0x8000
.DEFINE  IRQ0_F1024          0x4000
.DEFINE  FIQ_TMA             0x2000
.DEFINE  IRQ1_TMA            0x1000
.DEFINE  FIQ_TMB             0x0800
.DEFINE  IRQ2_TMA            0x0400
.DEFINE  IRQ3_EX2            0x0200
.DEFINE  IRQ3_EX1            0x0100
.DEFINE  IRQ3_Key            0x0080
.DEFINE  IRQ4_4KHz           0x0040
.DEFINE  IRQ4_2KHz           0x0020
.DEFINE  IRQ4_1KHz           0x0010
.DEFINE  IRQ5_4Hz            0x0008
.DEFINE  IRQ5_2Hz            0x0004
.DEFINE  IRQ6_TMB1           0x0002
.DEFINE  IRQ6_TMB2           0x0001
.RAM
.VAR BIN_BCD_Temp1
.CODE

.PUBLIC _System_Init
_System_Init:push r1,r1 to [sp]            
            r1 = F_49452+Fosc+OSC_Q            //系统时钟初始化
            [P_SystemClock] = r1
            pop r1,r1 from [sp]
            retf
//****************************************************************************************************
// 系统初始化程序  System_Init()
// 设计者: 牟联树
// 描  述: 系统初始化,根据需要更改,主要是时钟和I/O的初始化,还有一些系统模块的初始化
// 日  期: 2003.11.22
// 版本号: 1.0
//****************************************************************************************************          
.PUBLIC _BIN_BCD
  _BIN_BCD: push r2,r5 to [sp]
            r2 = 0;
            r3 = 0;
            [BIN_BCD_Temp1] = r3
            r4 = 16;
//十进制加法调整
//******************************************************************************************            
  BIN_BCDa: r3 = [BIN_BCD_Temp1]
            r2 = r3
            r5 = r3&0x000f
            r3&= 0x000f
            r1+=r1
            r5+= r3,Carry
            cmp r5,0x0009
            jbe BIN_BCDb
            r5+=0x0006
  BIN_BCDb: r3 = [BIN_BCD_Temp1]
            r3&= 0xfff0
            r3+=r5
            [BIN_BCD_Temp1] = r3
            r5 = r2
            r5&= 0x00f0
            r3 = [BIN_BCD_Temp1]
            r3&= 0x00f0
            r5+=r3
            cmp r5,0x0090
            jbe BIN_BCDc
            r5+=0x0060
  BIN_BCDc: r3 = [BIN_BCD_Temp1]
            r3&= 0xff0f
            r3+=r5
            [BIN_BCD_Temp1] = r3           
            r5 = r2
            r5&= 0x0f00
            r3 = [BIN_BCD_Temp1]
            r3&= 0x0f00
            r5+=r3
            cmp r5,0x0900
            jbe BIN_BCDd
            r5+=0x0600
  BIN_BCDd: r3 = [BIN_BCD_Temp1]
            r3&= 0xf0ff
            r3+=r5
            [BIN_BCD_Temp1] = r3
            r5 = r2
            r5&= 0xf000
            r3 = [BIN_BCD_Temp1]
            r3&= 0xf000
            r5+=r3
            jcc BIN_BCDt
            jmp BIN_BCDy
  BIN_BCDt: cmp r5,0x9000
            jbe BIN_BCDe            
  BIN_BCDy: r5+=0x6000                     
  BIN_BCDe: r3 = [BIN_BCD_Temp1];
            r3&= 0x0fff
            r3+=r5           
            [BIN_BCD_Temp1] = r3
//******************************************************************************************             
  BIN_BCDl: r4-= 1
            jnz BIN_BCDx
            r1 = [BIN_BCD_Temp1]
            pop r2,r5 from [sp]
            retf
  BIN_BCDx: goto  BIN_BCDa
  
.TEXT
.PUBLIC _BREAK
_BREAK: nop
		nop
		nop
		nop
		nop
   		reti

.PUBLIC _FIQ
     _FIQ: reti
    
.PUBLIC _IRQ0
    _IRQ0: reti
    
.PUBLIC _IRQ2
    _IRQ2: reti
 
//.PUBLIC _IRQ4               //1024Hz,2048Hz,4096Hz时基中断
//    _IRQ4: reti
//****************************************************************************************************
// IRQ_2Hz中断服务  IRQ_2Hz
// 设计者: 牟联树
// 描  述: IRQ_2Hz中断服务(用来清看门狗)
// 日  期: 2003.11.22
// 版本号: 1.0
//****************************************************************************************************
.PUBLIC _IRQ5              //2Hz,4Hz时基中断
    _IRQ5: push r1,r1 to [sp]
           r1 = IRQ5_2Hz
           test r1,[P_INT_Ctrl]
           jnz  IRQ_2Hz
  IRQ_4Hz: r1 = IRQ5_4Hz

           jmp  Exit_IRQ5
  IRQ_2Hz: r1 = 0x0001
           [P_WatchDog_Clear] = r1
           r1 = IRQ5_2Hz;
Exit_IRQ5: [P_INT_Clear] = r1
           pop  r1,r1 from [sp]
           reti 
   
.PUBLIC _IRQ6           //TMB1,TMB2可选择时基中断
    _IRQ6: reti
  
                  
                       

⌨️ 快捷键说明

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