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

📄 base.asm

📁 电力系统中的保护装置全部代码
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;  87 | if (!(Switchin_buf & j)) pDI->state = 1;                               
;----------------------------------------------------------------------
        ldp       @CL2,DP
        ldiu      @CL2,ar1              ; |87| 
        tstb3     *ar1,rc               ; |87| 
        bne       L4                    ; |87| 
;*      Branch Occurs to L4             ; |87| 
        ldiu      1,r0                  ; |87| 
        sti       r0,*+ar0(65)          ; |87| 
L4:        
	.line	16
;----------------------------------------------------------------------
;  88 | pDI++;                                                                 
;----------------------------------------------------------------------
        addi      68,ar0                ; |88| Unsigned
	.line	13
        addi      1,r4                  ; |85| Unsigned
        ash       1,rc                  ; |85| 
        cmpi      32,r4                 ; |85| 
        blo       L2                    ; |85| 
;*      Branch Occurs to L2             ; |85| 
L5:        
	.line	19
;----------------------------------------------------------------------
;  91 | *pDOPORT = Switchout_buf;            //开出初始化                      
;----------------------------------------------------------------------
        ldp       @CL6,DP
        ldiu      @CL6,ar1              ; |91| 
        ldp       @CL7,DP
        ldiu      @CL7,ar0              ; |91| 
        ldiu      *ar1,ar1              ; |91| 
        ldiu      *ar0,r0               ; |91| 
        sti       r0,*ar1               ; |91| 
	.line	20
;----------------------------------------------------------------------
;  92 | *pCTRLPORT = CtrlOutBuf;             //控制口初始化                    
;  94 | //脉冲计数初始化                                                       
;----------------------------------------------------------------------
        ldp       @CL8,DP
        ldiu      @CL8,ar1              ; |92| 
        ldp       @CL9,DP
        ldiu      @CL9,ar0              ; |92| 
        ldiu      *ar1,ar1              ; |92| 
        ldiu      *ar0,r0               ; |92| 
        sti       r0,*ar1               ; |92| 
	.line	23
;----------------------------------------------------------------------
;  95 | DS1302BurstRead(0xff, ByteData, 4*PULSENUM);   //从DS1302中读出脉冲数  
;----------------------------------------------------------------------
        ldiu      16,r3                 ; |95| 
        ldp       @CL10,DP
        ldiu      255,r2                ; |95| 
        ldiu      @CL10,r1              ; |95| 
        ldiu      fp,r0                 ; |95| 
        push      r3                    ; |95| 
        addi      2,r0                  ; |95| 
        push      r0                    ; |95| 
        push      r2                    ; |95| 
        callu     r1                    ; far call to _DS1302BurstRead	; |95| 
                                        ; |95| Far Call Occurs
        subi      3,sp                  ; |95| 
	.line	24
;----------------------------------------------------------------------
;  96 | pByte = ByteData;                                                      
;----------------------------------------------------------------------
        ldiu      fp,ar0                ; |96| 
        addi      2,ar0                 ; |96| 
	.line	25
;----------------------------------------------------------------------
;  97 | pWord = PulseCounter;                                                  
;----------------------------------------------------------------------
        ldp       @CL11,DP
        ldiu      @CL11,ar1             ; |97| 
	.line	26
;----------------------------------------------------------------------
;  98 | for (i = 0; i < PULSENUM; i++)                 //将8位数组合为32位数   
;----------------------------------------------------------------------
        ldiu      0,r4                  ; |98| 
        cmpi      4,r4                  ; |98| 
        ldiu      255,rc                ; |100| 
        bhsd      L7                    ; |98| 
        ldiu      255,rs                ; |100| 
        ldiu      255,r1                ; |100| 
        ldiu      255,r3                ; |100| 
;*      Branch Occurs to L7             ; |98| 
L6:        
	.line	28
;----------------------------------------------------------------------
; 100 | *pWord++ = (*pByte++ & 0xff) | (*pByte++ & 0xff) << 8 | (*pByte++ & 0xf
;     | f) << 16                                                               
; 101 |             | (*pByte++ & 0xff) << 24;                                 
; 104 | //报告存储地址初始化:序号为0xffff,或序号最小者。                       
;----------------------------------------------------------------------
        and3      rc,*ar0++(1),bk       ; |100| 
        and3      rs,*ar0++(1),re       ; |100| 
        and3      r3,*ar0++(1),r0       ; |100| 
        ash       8,re                  ; |100| 
        and3      r1,*ar0++(1),r2       ; |100| 
        or3       bk,re,re              ; |100| 
        ash       16,r0                 ; |100| 
        ash       24,r2                 ; |100| 
        or3       re,r0,r0              ; |100| 
        or3       r0,r2,r0              ; |100| 
        sti       r0,*ar1++(1)          ; |100| 
	.line	26
        addi      1,r4                  ; |98| Unsigned
        cmpi      4,r4                  ; |98| 
        blo       L6                    ; |98| 
;*      Branch Occurs to L6             ; |98| 
L7:        
	.line	33
;----------------------------------------------------------------------
; 105 | pEEP1 = uReportEEP;              //指向报告存储首地址                  
;----------------------------------------------------------------------
        ldp       @CL12,DP
        ldiu      @CL12,ar0             ; |105| 
	.line	34
;----------------------------------------------------------------------
; 106 | j = 0xffff;                      //序号设为最大                        
;----------------------------------------------------------------------
        ldp       @CL13,DP
        ldiu      @CL13,rc              ; |106| 
	.line	35
;----------------------------------------------------------------------
; 107 | for (i = 0; i < EEP_REPORTNUM; i++) //逐个检查报告区                   
;----------------------------------------------------------------------
        ldiu      0,r4                  ; |107| 
        cmpi      64,r4                 ; |107| 
        bhs       L13                   ; |107| 
;*      Branch Occurs to L13            ; |107| 
L8:        
	.line	37
;----------------------------------------------------------------------
; 109 | k = ((pEEP1->uReportEEPNumH & 0xff) << 8) | (pEEP1->uReportEEPNumL & 0x
;     | ff);                                                                   
;----------------------------------------------------------------------
        ldiu      255,r0                ; |109| 
        ldiu      255,r1                ; |109| 
        and       *+ar0(1),r0           ; |109| 
        and3      r1,*ar0,r1            ; |109| 
        ash       8,r0                  ; |109| 
        or3       r0,r1,r0              ; |109| 
	.line	39
;----------------------------------------------------------------------
; 111 | if (k == 0xffff)             //序号为0xffff,说明该区为空,可以使用      
;----------------------------------------------------------------------
        ldp       @CL13,DP
        cmpi      @CL13,r0              ; |111| 
        bne       L10                   ; |111| 
;*      Branch Occurs to L10            ; |111| 
	.line	41
;----------------------------------------------------------------------
; 113 | pEEP_REPORT = pEEP1;     //pEEP_REPORT指向可使用区                     
;----------------------------------------------------------------------
        ldp       @CL14,DP
        ldiu      @CL14,ar1             ; |113| 
        sti       ar0,*ar1              ; |113| 
	.line	42
;----------------------------------------------------------------------
; 114 | break;                                                                 
;----------------------------------------------------------------------
        bu        L13                   ; |114| 
;*      Branch Occurs to L13            ; |114| 
L10:        
	.line	45
;----------------------------------------------------------------------
; 117 | if (j > k)                   //找到最小序号的区                        
;----------------------------------------------------------------------
        cmpi3     r0,rc                 ; |117| 
        bls       L12                   ; |117| 
;*      Branch Occurs to L12            ; |117| 
	.line	47
;----------------------------------------------------------------------
; 119 | j = k;                                                                 
;----------------------------------------------------------------------
        ldiu      r0,rc                 ; |119| 
	.line	48
;----------------------------------------------------------------------
; 120 | pEEP_REPORT = pEEP1;     //pEEP_REPORT指向最小序号的区即最老的区       
;----------------------------------------------------------------------
        ldp       @CL14,DP
        ldiu      @CL14,ar1             ; |120| 
        sti       ar0,*ar1              ; |120| 
L12:        
	.line	51
;----------------------------------------------------------------------
; 123 | pEEP1++;                                                               
;----------------------------------------------------------------------
        addi      276,ar0               ; |123| Unsigned
	.line	35
        addi      1,r4                  ; |107| Unsigned
        cmpi      64,r4                 ; |107| 
        blo       L8                    ; |107| 
;*      Branch Occurs to L8             ; |107| 
L13:        
	.line	54
;----------------------------------------------------------------------
; 126 | pEEP1 = pEEP_REPORT;             //根据上一区的序号定本区的序号        
;----------------------------------------------------------------------
        ldp       @CL14,DP
        ldiu      @CL14,ar0             ; |126| 
        ldiu      *ar0,ar0              ; |126| 
	.line	55
;----------------------------------------------------------------------
; 127 | if (--pEEP1 < uReportEEP) pEEP1 = &uReportEEP[EEP_REPORTNUM - 1];
;     |          //pEEP1指向上一区                                             
;----------------------------------------------------------------------
        ldp       @CL12,DP
        subi      276,ar0               ; |127| Unsigned
        cmpi      @CL12,ar0             ; |127| 
        bhs       L15                   ; |127| 
;*      Branch Occurs to L15            ; |127| 
        ldp       @CL15,DP
        ldiu      @CL15,ar0             ; |127| 
L15:        
	.line	56
;----------------------------------------------------------------------
; 128 | k = ((pEEP1->uReportEEPNumH & 0xff) << 8) | (pEEP1->uReportEEPNumL & 0x
;     | ff);     //读上一区序号                                                
;----------------------------------------------------------------------
        ldiu      255,r0                ; |128| 
        ldiu      255,r1                ; |128| 
        and       *+ar0(1),r0           ; |128| 
        and3      r1,*ar0,r1            ; |128| 
        ash       8,r0                  ; |128| 
        or3       r0,r1,r0              ; |128| 
	.line	57
;----------------------------------------------------------------------
; 129 | uReportNum = (k == 0xffff ? 0 : k);
;     |          //k=0xffff,则序号为零,否则为上一次序号                        
; 131 | //设置初始化                                                           
;----------------------------------------------------------------------
        ldp       @CL13,DP
        cmpi      @CL13,r0              ; |129| 
        bne       L17                   ; |129| 
;*      Branch Occurs to L17            ; |129| 
        bud       L18                   ; |129| 
	nop
	nop
        ldiu      0,r0                  ; |129| 
;*      Branch Occurs to L18            ; |129| 
L17:        
L18:        
        ldp       @CL16,DP
        ldiu      @CL16,ar0             ; |129| 
        sti       r0,*ar0               ; |129| 
	.line	60
;----------------------------------------------------------------------
; 132 | subAddress_backup = LoadUSET((UNSIGNED *)&uSubAddressEEP,(UNSIGNED *)&u
;     | SubAddress);                                                           
;----------------------------------------------------------------------
        ldp       @CL18,DP
        ldiu      @CL18,r2              ; |132| 
        ldp       @CL19,DP
        ldiu      @CL19,r0              ; |132| 
        ldp       @CL20,DP
        push      r2                    ; |132| 
        ldiu      @CL20,r1              ; |132| 
        push      r0                    ; |132| 
        callu     r1                    ; far call to _LoadUSET	; |132| 
                                        ; |132| Far Call Occurs
        ldp       @CL17,DP
        ldiu      @CL17,ar0             ; |132| 
        sti       r0,*ar0               ; |132| 
        subi      2,sp                  ; |132| 
	.line	61
;----------------------------------------------------------------------
; 133 | password_backup = LoadUSET((UNSIGNED *)&uPasswordEEP,(UNSIGNED *)&uPass
;     | word);                                                                 
;----------------------------------------------------------------------
        ldp       @CL22,DP
        ldiu      @CL22,r2              ; |133| 
        ldp       @CL23,DP
        ldiu      @CL23,r0              ; |133| 
        ldp       @CL20,DP
        push      r2                    ; |133| 
        ldiu      @CL20,r1              ; |133| 
        push      r0                    ; |133| 
        callu     r1                    ; far call to _LoadUSET	; |133| 
                                        ; |133| Far Call Occurs
        ldp       @CL21,DP
        ldiu      @CL21,ar0             ; |133| 
        sti       r0,*ar0               ; |133| 
        subi      2,sp                  ; |133| 
	.line	62
;----------------------------------------------------------------------
; 134 | iLONC_SetZoneNum = LoadUSET((UNSIGNED *)&uSetZoneEEP,(UNSIGNED *)&uSetZ
;     | one);                                                                  
;----------------------------------------------------------------------
        ldp       @CL25,DP
        ldiu      @CL25,r2              ; |134| 
        ldp       @CL26,DP
        ldiu      @CL26,r0              ; |134| 
        push      r2                    ; |134| 
        ldp       @CL20,DP
        push      r0                    ; |134| 
        ldiu      @CL20,r1              ; |134| 
        callu     r1                    ; far call to _LoadUSET	; |134| 
                                        ; |134| Far Call Occurs
        ldp       @CL24,DP
        ldiu      @CL24,ar0             ; |134| 
        subi      2,sp                  ; |134| 
        sti       r0,*ar0               ; |134| 
	.line	63
;----------------------------------------------------------------------
; 135 | CT_backup = LoadUSET((UNSIGNED *)&uCTRateEEP,(UNSIGNED *)&uCTRate);    
;----------------------------------------------------------------------
        ldp       @CL28,DP
        ldiu      @CL28,r2              ; |135| 
        ldp       @CL29,DP
        ldiu      @CL29,r0              ; |135| 
        push      r2                    ; |135| 
        ldp       @CL20,DP
        push      r0                    ; |135| 
        ldiu      @CL20,r1              ; |135| 
        callu     r1                    ; far call to _LoadUSET	; |135| 
                                        ; |135| Far Call Occurs
        ldp       @CL27,DP
        ldiu      @CL27,ar0             ; |135| 
        subi      2,sp                  ; |135| 
        sti       r0,*ar0               ; |135| 
	.line	64
;----------------------------------------------------------------------
; 136 | PT_backup = LoadUSET((UNSIGNED *)&uPTRateEEP,(UNSIGNED *)&uPTRate);    
;----------------------------------------------------------------------
        ldp       @CL31,DP
        ldiu      @CL31,r2              ; |136| 
        ldp       @CL32,DP
        ldiu      @CL32,r1              ; |136| 
        push      r2                    ; |136| 
        ldp       @CL20,DP
        push      r1                    ; |136| 
        ldiu      @CL20,r0              ; |136| 
        callu     r0                    ; far call to _LoadUSET	; |136| 
                                        ; |136| Far Call Occurs
        ldp       @CL30,DP
        ldiu      @CL30,ar0             ; |136| 
        subi      2,sp                  ; |136| 
        sti       r0,*ar0               ; |136| 
	.line	66
;----------------------------------------------------------------------
; 138 | pByte = uJumperEEP;                      //指向存储压板EEP的指针       
;----------------------------------------------------------------------
        ldp       @CL33,DP
        ldiu      @CL33,ar0             ; |138| 
	.line	67
;----------------------------------------------------------------------
; 139 | protect = PRO_Created_Protect_List;                                    
;----------------------------------------------------------------------
        ldp       @CL34,DP
        ldiu      @CL34,ar1             ; |139| 
        ldiu      *ar1,ar4              ; |139| 
	.line	68
;----------------------------------------------------------------------
; 140 | for (i = 0; i < PRO_Total_Protect; i++, protect = protect->pro_link_nex
;     | t)                                                                     
;----------------------------------------------------------------------
        ldiu      0,r4                  ; |140| 
        ldp       @CL35,DP
        ldiu      @CL35,ar1             ; |140| 
        cmpi3     *ar1,r4               ; |140| 
        ldiu      255,r1                ; |142| 

⌨️ 快捷键说明

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