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

📄 hal.lis

📁 用ICC编写的程序包括SPI
💻 LIS
字号:
                        .module HAL.C
                        .area text(rom, con, rel)
 0000                   .dbfile F:\IccAvr_Pro\USB\HAL.C
 0000                   .dbfunc e outportb _outportb fV
 0000           ;            val -> R18
 0000           ;           port -> R16
                        .even
 0000           _outportb::
 0000                   .dbline -1
 0000                   .dbline 11
 0000           ; 
 0000           ; #include "HAL.H"
 0000           ; //#include "D12CI.H"
 0000           ; //#include "MAIN.H"
 0000           ; #include "macros.h"
 0000           ; #include <iom16v.h>
 0000           ; /**********************************************************************************************************
 0000           ;  *This is the lowest layer code in the firmware,which performs hardware dependent i/o access to PDIUSBD12.*
 0000           ;  **********************************************************************************************************/
 0000           ; void outportb(unsigned char port,unsigned char val)
 0000           ; {
 0000                   .dbline 15
 0000           ;      //unsigned char xdata *ext_address;
 0000           ;      
 0000           ;     // MCU_HOSTDACK=1;
 0000           ;      if (port)
 0000 0023              tst R16
 0002 11F0              breq L2
 0004                   .dbline 16
 0004           ;          PORTA|=BIT(A0);        //Write command reg
 0004 DF9A              sbi 0x1b,7
 0006 01C0              xjmp L3
 0008           L2:
 0008                   .dbline 18
 0008           ;        else                                                                     
 0008           ;          PORTA&=~BIT(A0);       //Write data area
 0008 DF98              cbi 0x1b,7
 000A           L3:
 000A                   .dbline 19
 000A           ;        PORTA&=~BIT(WRITE);
 000A DE98              cbi 0x1b,6
 000C                   .dbline 20
 000C           ;        PORTA|=port;
 000C 2BB2              in R2,0x1b
 000E 202A              or R2,R16
 0010 2BBA              out 0x1b,R2
 0012                   .dbline 21
 0012           ;      PORTA&=~BIT(WRITE);        //WRITE=0;
 0012 DE98              cbi 0x1b,6
 0014                   .dbline 22
 0014           ;        DATA_BUS_D=0xff;                 //Write data
 0014 8FEF              ldi R24,255
 0016 87BB              out 0x17,R24
 0018                   .dbline 23
 0018           ;      DATA_BUS_W=val;
 0018 26BB              out 0x16,R18
 001A                   .dbline 24
 001A           ;        DATA_BUS_W=val;
 001A 26BB              out 0x16,R18
 001C                   .dbline 25
 001C           ;      PORTA|=BIT(WRITE);                 //Write=1
 001C DE9A              sbi 0x1b,6
 001E                   .dbline -2
 001E                   .dbline 33
 001E           ;        //ext_address=0xff00+port;
 001E           ;        // ext_address=port;
 001E           ;        //*ext_address=val;
 001E           ;        
 001E           ;        
 001E           ;       //MCU_HOSTDACK=0;
 001E           ; 
 001E           ; }
 001E           L1:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbsym r val 18 c
 0020                   .dbsym r port 16 c
 0020                   .dbend
 0020                   .dbfunc e inportb _inportb fc
 0020           ;              c -> R20
 0020           ;           port -> R16
                        .even
 0020           _inportb::
 0020 0E940000          xcall push_gset1
 0024                   .dbline -1
 0024                   .dbline 35
 0024           ; unsigned char inportb(unsigned char port)
 0024           ; {
 0024                   .dbline 39
 0024           ;     //unsigned char xdata *ext_address;//define an external data storage
 0024           ;     
 0024           ;       unsigned char  c;
 0024           ;      if(port)
 0024 0023              tst R16
 0026 11F0              breq L5
 0028                   .dbline 40
 0028           ;          PORTA|=BIT(A0);        //Read command reg
 0028 DF9A              sbi 0x1b,7
 002A 01C0              xjmp L6
 002C           L5:
 002C                   .dbline 42
 002C           ;        else                     
 002C           ;          PORTA&=~BIT(A0);       //Read data area
 002C DF98              cbi 0x1b,7
 002E           L6:
 002E                   .dbline 43
 002E           ;        PORTA|=BIT(READ);                //Read=1;
 002E DD9A              sbi 0x1b,5
 0030                   .dbline 44
 0030           ;        PORTA|=port;
 0030 2BB2              in R2,0x1b
 0032 202A              or R2,R16
 0034 2BBA              out 0x1b,R2
 0036                   .dbline 45
 0036           ;      PORTA&=~BIT(READ);                 //Read=0;
 0036 DD98              cbi 0x1b,5
 0038                   .dbline 46
 0038           ;        DATA_BUS_D=0x00;                 //Read data
 0038 2224              clr R2
 003A 27BA              out 0x17,R2
 003C                   .dbline 47
 003C           ;      c=DATA_BUS_R;
 003C 48B3              in R20,0x18
 003E                   .dbline 48
 003E           ;        c=DATA_BUS_R;
 003E 48B3              in R20,0x18
 0040                   .dbline 49
 0040           ;      PORTA|=BIT(READ);                  //Read=1
 0040 DD9A              sbi 0x1b,5
 0042                   .dbline 59
 0042           ;        //ext_address=0xff00+port;
 0042           ; //    MCU_HOSTDACK=1;                  // set  DMA's mode flag
 0042           ;       
 0042           ;        //ext_address=0xff00+port;
 0042           ;       //ext_address=port;
 0042           ;       //c=*ext_address;
 0042           ; 
 0042           ;    // MCU_HOSTDACK=0;
 0042           ;       
 0042           ;       return c;
 0042 042F              mov R16,R20
 0044                   .dbline -2
 0044           L4:
 0044 0E940000          xcall pop_gset1
 0048                   .dbline 0 ; func end
 0048 0895              ret
 004A                   .dbsym r c 20 c
 004A                   .dbsym r port 16 c
 004A                   .dbend

⌨️ 快捷键说明

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