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

📄 lcd.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   000039   90....       MOV     DPTR,#(smbStop & 0xffff)
   \   00003C   74..         MOV     A,#((smbStop >> 16) & 0xff)
   \   00003E   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    263          }
   \   000041                REQUIRE ?Subroutine3
   \   000041                ; // Fall through to label ?Subroutine3

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine3:
   \   000000   7F02         MOV     R7,#0x2
   \   000002   02....       LJMP    ?BANKED_LEAVE_XDATA
    264          
    265          /******************************************************************************
    266          * Internal function for lcd.c
    267          ******************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    268          BOOL smbSendByte(BYTE b){
   \                     smbSendByte:
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
   \   000005   E9           MOV     A,R1
   \   000006   FF           MOV     R7,A
    269             UINT8 i;
    270             BOOL ack;
    271             for (i = 0; i < 8; i++){
   \   000007   7E08         MOV     R6,#0x8
    272                smbWrite(b & 0x80);
   \                     ??smbSendByte_0:
   \   000009                ; Setup parameters for call to function smbWrite
   \   000009   7480         MOV     A,#-0x80
   \   00000B   5F           ANL     A,R7
   \   00000C   F9           MOV     R1,A
   \   00000D   90....       MOV     DPTR,#(smbWrite & 0xffff)
   \   000010   74..         MOV     A,#((smbWrite >> 16) & 0xff)
   \   000012   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    273                b = (b <<  1);
   \   000015   EF           MOV     A,R7
   \   000016   C3           CLR     C
   \   000017   33           RLC     A
   \   000018   FF           MOV     R7,A
    274             }
   \   000019   1E           DEC     R6
   \   00001A   EE           MOV     A,R6
   \   00001B   70EC         JNZ     ??smbSendByte_0
    275             smbClock(0);
   \   00001D                ; Setup parameters for call to function smbClock
   \   00001D   7900         MOV     R1,#0x0
   \   00001F   90....       MOV     DPTR,#(smbClock & 0xffff)
   \   000022   74..         MOV     A,#((smbClock >> 16) & 0xff)
   \   000024   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    276             DATA_HIGH();
   \   000027   53FEFB       ANL     0xfe,#0xfb
    277             smbClock(1);
   \   00002A                ; Setup parameters for call to function smbClock
   \   00002A   7901         MOV     R1,#0x1
   \   00002C   74..         MOV     A,#((smbClock >> 16) & 0xff)
   \   00002E   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    278             ack = !LCD_SDA;
   \   000031   A292         MOV     C,0x90.2
   \   000033   E4           CLR     A
   \   000034   92E0         MOV     0xE0 /* A   */.0,C
   \   000036   F4           CPL     A
   \   000037   5401         ANL     A,#0x1
   \   000039   F9           MOV     R1,A
    279             return ack; //high = ACK received, else ACK not received
   \   00003A   02....       LJMP    ??Subroutine0_0 & 0xFFFF
    280          }
    281          
    282          /******************************************************************************
    283          * Internal function for lcd.c
    284          * Function for writing bit to the data line. Setting the port as input
    285          * make the SMBus go high because of the pull-up resistors.
    286          *
    287          ******************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    288          void smbWrite(BOOL value){
   \                     smbWrite:
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
   \   000005   E9           MOV     A,R1
   \   000006   FE           MOV     R6,A
    289             smbClock(0);
   \   000007                ; Setup parameters for call to function smbClock
   \   000007   7900         MOV     R1,#0x0
   \   000009   90....       MOV     DPTR,#(smbClock & 0xffff)
   \   00000C   74..         MOV     A,#((smbClock >> 16) & 0xff)
   \   00000E   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    290             waitLCD();
   \   000011                ; Setup parameters for call to function waitLCD
   \   000011   90....       MOV     DPTR,#(waitLCD & 0xffff)
   \   000014   74..         MOV     A,#((waitLCD >> 16) & 0xff)
   \   000016   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    291             if(value){
   \   000019   EE           MOV     A,R6
   \   00001A   6005         JZ      ??smbWrite_0
    292                DATA_HIGH();
   \   00001C   53FEFB       ANL     0xfe,#0xfb
   \   00001F   8005         SJMP    ??smbWrite_1
    293             }
    294             else{
    295                DATA_LOW();
   \                     ??smbWrite_0:
   \   000021   43FE04       ORL     0xfe,#0x4
   \   000024   C292         CLR     0x90.2
    296             }
    297             smbClock(1);
   \                     ??smbWrite_1:
   \   000026                ; Setup parameters for call to function smbClock
   \   000026   7901         MOV     R1,#0x1
   \   000028   90....       MOV     DPTR,#(smbClock & 0xffff)
   \   00002B   74..         MOV     A,#((smbClock >> 16) & 0xff)
   \   00002D   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    298             waitLCD();
   \   000030                ; Setup parameters for call to function waitLCD
   \   000030   90....       MOV     DPTR,#(waitLCD & 0xffff)
   \   000033   74..         MOV     A,#((waitLCD >> 16) & 0xff)
   \   000035   02....       LJMP    ?Subroutine4 & 0xFFFF
    299          }
    300          
    301          /******************************************************************************
    302          * Internal function for lcd.c
    303          ******************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    304          void smbReceive(BYTE address, int length, BYTE *buffer){
   \                     smbReceive:
   \   000000   74F2         MOV     A,#-0xe
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 14
   \   000005                ; Auto size: 0
   \   000005   E9           MOV     A,R1
   \   000006   FE           MOV     R6,A
   \   000007   8A..         MOV     ?V0 + 4,R2
   \   000009   8B..         MOV     ?V0 + 5,R3
   \   00000B   8C..         MOV     ?V0 + 0,R4
   \   00000D   8D..         MOV     ?V0 + 1,R5
    305             int i;
    306          
    307             smbStart();
   \   00000F                ; Setup parameters for call to function smbStart
   \   00000F   90....       MOV     DPTR,#(smbStart & 0xffff)
   \   000012   74..         MOV     A,#((smbStart >> 16) & 0xff)
   \   000014   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    308          
    309             while (!smbSendByte(address)); //send address until ACK'ed
   \                     ??smbReceive_0:
   \   000017                ; Setup parameters for call to function smbSendByte
   \   000017   EE           MOV     A,R6
   \   000018   F9           MOV     R1,A
   \   000019   90....       MOV     DPTR,#(smbSendByte & 0xffff)
   \   00001C   74..         MOV     A,#((smbSendByte >> 16) & 0xff)
   \   00001E   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000021   E9           MOV     A,R1
   \   000022   60F3         JZ      ??smbReceive_0
    310          
    311             for(i = 0; i < length; i++){
   \   000024   7E00         MOV     R6,#0x0
   \   000026   7F00         MOV     R7,#0x0
   \   000028   C3           CLR     C
   \   000029   E5..         MOV     A,?V0 + 4
   \   00002B   9401         SUBB    A,#0x1
   \   00002D   E5..         MOV     A,?V0 + 5
   \   00002F   9400         SUBB    A,#0x0
   \   000031   A2D2         MOV     C,0xD0 /* PSW */.2
   \   000033   65D0         XRL     A,PSW
   \   000035   33           RLC     A
   \   000036   404F         JC      ??smbReceive_1
   \   000038   85....       MOV     ?V0 + 2,?V0 + 0
   \   00003B   85....       MOV     ?V0 + 3,?V0 + 1
   \   00003E   74FF         MOV     A,#-0x1
   \   000040   25..         ADD     A,?V0 + 4
   \   000042   F5..         MOV     ?V0 + 0,A
   \   000044   74FF         MOV     A,#-0x1
   \   000046   35..         ADDC    A,?V0 + 5
   \   000048   F5..         MOV     ?V0 + 1,A
    312                buffer[i] = smbReceiveByte( i==(length-1) ); //TRUE if last byte
   \                     ??smbReceive_2:
   \   00004A   E5..         MOV     A,?V0 + 0
   \   00004C   6E           XRL     A,R6
   \   00004D   7003         JNZ     ??smbReceive_3
   \   00004F   E5..         MOV     A,?V0 + 1
   \   000051   6F           XRL     A,R7
   \                     ??smbReceive_3:
   \   000052   7004         JNZ     ??smbReceive_4
   \   000054   7901         MOV     R1,#0x1
   \   000056   8002         SJMP    ??smbReceive_5
   \                     ??smbReceive_4:
   \   000058   7900         MOV     R1,#0x0
   \                     ??smbReceive_5:
   \   00005A                ; Setup parameters for call to function smbReceiveByte
   \   00005A   90....       MOV     DPTR,#(smbReceiveByte & 0xffff)
   \   00005D   74..         MOV     A,#((smbReceiveByte >> 16) & 0xff)
   \   00005F   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000062   E9           MOV     A,R1
   \   000063   85..82       MOV     DPL,?V0 + 2
   \   000066   85..83       MOV     DPH,?V0 + 3
   \   000069   F0           MOVX    @DPTR,A
    313             }
   \   00006A   EE           MOV     A,R6
   \   00006B   2401         ADD     A,#0x1
   \   00006D   0E           INC     R6
   \   00006E   EF           MOV     A,R7
   \   00006F   3400         ADDC    A,#0x0
   \   000071   FF           MOV     R7,A
   \   000072   A3           INC     DPTR
   \   000073   8582..       MOV     ?V0 + 2,DPL
   \   000076   8583..       MOV     ?V0 + 3,DPH
   \   000079   C3           CLR     C
   \   00007A   EE           MOV     A,R6
   \   00007B   95..         SUBB    A,?V0 + 4
   \   00007D   EF           MOV     A,R7
   \   00007E   95..         SUBB    A,?V0 + 5
   \   000080   A2D2         MOV     C,0xD0 /* PSW */.2
   \   000082   65D0         XRL     A,PSW
   \   000084   33           RLC     A
   \   000085   40C3         JC      ??smbReceive_2
    314          
    315             smbClock(1);
   \                     ??smbReceive_1:
   \   000087                ; Setup parameters for call to function smbClock
   \   000087   7901         MOV     R1,#0x1
   \   000089   90....       MOV     DPTR,#(smbClock & 0xffff)
   \   00008C   74..         MOV     A,#((smbClock >> 16) & 0xff)
   \   00008E   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    316             smbWrite(0);
   \   000091                ; Setup parameters for call to function smbWrite
   \   000091   7900         MOV     R1,#0x0
   \   000093   90....       MOV     DPTR,#(smbWrite & 0xffff)
   \   000096   74..         MOV     A,#((smbWrite >> 16) & 0xff)
   \   000098   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    317          
    318             smbStop();
   \   00009B                ; Setup parameters for call to function smbStop
   \   00009B   90....       MOV     DPTR,#(smbStop & 0xffff)
   \   00009E   74..         MOV     A,#((smbStop >> 16) & 0xff)
   \   0000A0   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    319          }
   \   0000A3   7F06         MOV     R7,#0x6
   \   0000A5   02....       LJMP    ?BANKED_LEAVE_XDATA
    320          
    321          /******************************************************************************
    322          * Internal function for lcd.c
    323          ******************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    324          BYTE smbReceiveByte(BOOL lastByte){
   \                     smbReceiveByte:
   \   000000   74F7         MOV    

⌨️ 快捷键说明

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