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

📄 bus_driver.asm

📁 本系统参照片上系统的设计架构、采用FPGA与SPCE061A相结合的方法
💻 ASM
字号:

  //****************************************************************************************************//
  //                       SYSTEM BASIC DRIVER TO CONNECT WITH CPLD                                     //
  //                                                   DESIGNED BY PHEONIX                              //
  //  ALE:       IOB4                                                                                   //
  //  DATA/ADDR: IOA8--IOA15                                                                            //
  //  WR:        IOB11                                                                                  //
  //  RD:        IOB6                                                                                   //
  //****************************************************************************************************//
  
  .PUBLIC _SET_ADDR 
  .PUBLIC _WRITE_DATA
  .PUBLIC _READ_DATA
  
  .DEFINE P_IOA_Data   	      0x7000;        // Write Data into data register and read from IOA pad
  .DEFINE P_IOA_Buffer        0x7001;        // Write Data into buffer register and read from buffer register
  .DEFINE P_IOA_Dir           0x7002;        // Direction vector for IOA
  .DEFINE P_IOA_Attrib        0x7003;        // Attribute vector for IOA
  .DEFINE P_IOA_Latch         0x7004;        // Latch PortA data for key change wake-up

  .DEFINE P_IOB_Data          0x7005;        // Write Data into the data register and read from IOB pad
  .DEFINE P_IOB_Buffer        0x7006;        // Write Data into buffer register and read from buffer register
  .DEFINE P_IOB_Dir           0x7007;        // Direction vector for IOB
  .DEFINE P_IOB_Attrib        0x7008;        // Attribute vector for IOB
  
  .CODE
_SET_ADDR: .PROC 
  PUSH R1,R2 TO [SP];
  PUSH BP TO [SP];
  BP=SP;
  //GET ADDRESS FROM PARAMENT;
  R1=[BP+6];
  //GENERATE DATA TO FEED IOA;
  R2=[P_IOA_Buffer];
  R1=R1 LSL 4;
  R1=R1 LSL 4;
  R2&=0x00FF;
  R1|=R2;
  [P_IOA_Data]=R1;
  NOP;
  NOP;
  //SEND ALE SIGNAL;
  R1=[P_IOB_Buffer];
  R1|=0x0010;
  [P_IOB_Data]=R1;
  NOP;
  NOP;
  R1&=0xFFEF;
  [P_IOB_Data]=R1;  
  //PROGRAM RETURN;
  POP BP FROM [SP];
  POP R1,R2 FROM [SP];
  RETF;
  .ENDP;
_WRITE_DATA:.PROC
  PUSH R1,R2 TO [SP];
  PUSH BP TO [SP];
  BP=SP;
  R1=[BP+6];
  //GET PARAMENT AND FEED IOA;
  R2=[P_IOA_Buffer];
  R1=R1 LSL 4;
  R1=R1 LSL 4;
  R2&=0x00FF;
  R1|=R2;
  [P_IOA_Data]=R1;     
  NOP;
  NOP;
  //SEND WRITE SIGNAL;
  R1=[P_IOB_Buffer];
  R1&=0xF7FF;
  [P_IOB_Data]=R1;
  NOP;
  NOP;
  NOP;
  NOP;
  NOP;
  R1|=0x0800;
  [P_IOB_Data]=R1;  
  //PROGRAM RETURN;
  POP BP FROM [SP];
  POP R1,R2 FROM [SP];
  RETF;                        
  .ENDP
_READ_DATA:.PROC
  PUSH R2 TO [SP];
  R2=[P_IOB_Buffer];
  R2&=0xFFBF;  
  [P_IOB_Data]=R2;
  //SEND READ SIGNAL;
  NOP;
  NOP;
  //READ DATA;
  R2=0x0000;
  [P_IOA_Dir]=R2;
  R1=[P_IOA_Data];
  R1=R1 LSR 4;
  R1=R1 LSR 4;
  R2=0xFF00;
  [P_IOA_Dir]=R2;
  //RESET READ SIGNAL; 
  R2=[P_IOB_Buffer];
  R2|=0x0040;
  [P_IOB_Data]=R2;  
  POP R2 FROM [SP];
  RETF;
  .ENDP;  
.END 
  
  
  
  
  

⌨️ 快捷键说明

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