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

📄 00asm.asm

📁 需要凌阳的IDE打开
💻 ASM
字号:
.ram
.var tag

.data
Key_table:.DW 0x0002,0x0004,0x0008


.external _key_value, _length  ,_Tran , _TimeCount

.code
.public _scankeys
_scankeys:.proc
     r1=0x0000
     [tag]=r1
loop:
    
loop1:                                  //???1?
     R1=0x0020
     [P_IOA_Data]=R1
     R1 = 0x000f   	   
     R1& =[P_IOA_Data]
     JZ loop2
     cmp R1,0x0001
     JZ _exit1
     R2=0xfffe
     BP=Key_table
toop1:
         
  	 R2+=0x0003
	 CMP R1,[BP++]
	 JNZ toop1
         [_key_value]=R2
	 jmp _compare
loop2:                                  //???2?
     R1=0x0040
     [P_IOA_Data]=R1
     R1 = 0x000f   	   
     R1& =[P_IOA_Data]
     JZ loop3
     cmp R1,0x0001
     JZ _exit2
     R2=0xffff
     BP=Key_table
toop2:
         
  	 R2+=0x0003
	 CMP R1,[BP++]
	 JNZ toop2
     [_key_value]=R2
	 JMP _compare
loop3:                                  //???3?
     R1=0x0080
     [P_IOA_Data]=R1
     R1 = 0x000f   	   
     R1& =[P_IOA_Data]
     JZ _compare
     BP=Key_table
     R2=0x0000
     cmp R1,0x0001      
     JNZ toop3
     [_key_value]=R2
     jmp _compare
        
toop3:
  	 R2+=0x0003
	 CMP R1,[BP++]
	 JNZ toop3
     [_key_value]=R2
     
     
//_exit0:
   //R1=[_length]
   //R1+=1
   //[_length]=R1
_compare:
    r3=[tag]
    r3+=1
    [tag]=r3
    cmp r3,16
    jna loop0
   
_exit:
   RETF
  .ENDP

_exit1:
   
   r1=99   
   [_key_value]=r1
   goto _exit

_exit2:

   r1=98
   [_key_value]=r1
   goto _exit
loop0:
    r1=100
    [_key_value]=r1
    goto loop 


.public _InitIO;       //???,??io???
_InitIO:.proc
  R1=0x00f0;                   //IOA?4??????????(?),?4?????????(?)
     [P_IOA_Dir]=R1;
     [P_IOA_Attrib]=R1;
     R1=0x0000;
     [P_IOA_Data]=R1;

     R1=0xffff;            //IOB?8?????????(????),8--10?????????(????)
     [P_IOB_Dir]=R1;
     [P_IOB_Attrib]=R1;
   R1=0x0000
     [P_IOB_Data]=R1;
     RETF
    .ENDP

//========================================================
//?????
//========================================================


.public _Initsystem;
_Initsystem:.proc           //?????,???
   IRQ OFF
   R1=0x0004
   [P_INT_Ctrl]=R1
   IRQ ON
   RETF
 .ENDP

//==============================================================
//???
//=============================================================


//.public _OffIRQ5;
//_OffIRQ5:.proc
  // R1=0x0004    //??????????????
   //[P_INT_Ctrl]=R1
   //pop r1,r5 from [sp]
    //RETI
   //IRQ OFF
   // RETF
  //.ENDP
 
//=================================================================
//????????(IRQ5_2Hz)
//?1???????+1
//===============================================================

.text
.PUBLIC _IRQ5
.include hardware.inc
.external _TimeCount,_sec1

_IRQ5:
  push r1,r5 to [sp]
   r1=0x0001
  [0x7012]=r1
  r1=0x0008
  test r1,[P_INT_Ctrl];
  jnz l_IRQ5_4Hz
///////////////2Hz??
l_IRQ5_2Hz:
  r1=0x0004
  [P_INT_Clear]=r1
  r1=[_TimeCount]       //?????
  r1+=1
  cmp r1,2
  jnb loopx           //?????
  [_TimeCount]=r1
  jmp loopy

  //pop r1,r5 from [sp]
  // RETI

loopx:
 
  r1=[_sec1]
  r1+=1             //???1
  [_sec1]=r1
  r1=0
  [_TimeCount]=r1
  jmp loopy
/////////////4Hz??
l_IRQ5_4Hz:
  [P_INT_Clear]=r1
loopy:  
  pop r1,r5 from [sp]
  RETI

⌨️ 快捷键说明

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