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

📄 iic.ls1

📁 一个完整的51单片机的操作糸统源程序! 内容十分丰富!很有借鉴价值!
💻 LS1
📖 第 1 页 / 共 5 页
字号:
001E 120000   F      661             LCALL   ?C?CLDPTR
0021 FF              662             MOV     R7,A
0022 120000   F      663             LCALL   _SendByte
0025 4001            664             JC      ?C0024
                     665     ;               {
                     666                             ; SOURCE LINE # 184
                     667     ;                       return(FALSE);
                     668                             ; SOURCE LINE # 185
0027 22              669             RET     
                     670     ;               }
                     671                             ; SOURCE LINE # 186
0028                 672     ?C0024:
                     673     ;               source++;
                     674                             ; SOURCE LINE # 187
0028 7401            675             MOV     A,#01H
002A 29              676             ADD     A,R1
002B F9              677             MOV     R1,A
002C E4              678             CLR     A
002D 3A              679             ADDC    A,R2
002E FA              680             MOV     R2,A
                     681     ;       } 
                     682                             ; SOURCE LINE # 188
002F 7800     F      683             MOV     R0,#LOW (i?753)
0031 06              684             INC     @R0
0032 80DE            685             SJMP    ?C0021
0034                 686     ?C0022:
                     687     ;       StopI2c();                 /*结束总线*/ 
                     688                             ; SOURCE LINE # 189
0034 120000   F      689             LCALL   StopI2c
                     690     ;       
                     691     ;       return(TRUE);
                     692                             ; SOURCE LINE # 191
0037 D3              693             SETB    C
                     694     ; }
                     695                             ; SOURCE LINE # 192
0038                 696     ?C0019:
0038 22              697             RET     
                     698     ; END OF _iic_send_str
                     699     
                     700     ; 
                     701     ; 
                     702     ; 
                     703     ; extern bool iic_rcv_str(byte SlaveAddress, byte address, byte *source, byte len)
                     704     
----                 705             RSEG  ?PR?_iic_rcv_str?IIC
0000                 706     _iic_rcv_str:
                     707             USING   0
                     708                             ; SOURCE LINE # 196
                     709     ;---- Variable 'SlaveAddress?854' assigned to Register 'R4' ----
0000 AC07            710             MOV     R4,AR7
                     711     ;---- Variable 'source?856' assigned to Register 'R1/R2/R3' ----
                     712     ;---- Variable 'address?855' assigned to Register 'R5' ----
                     713     ; {
                     714                             ; SOURCE LINE # 197
                     715     ;       byte idata i;
                     716     ; 
                     717     ;       StartI2c();               /*启动总线*/
A51 MACRO ASSEMBLER  IIC                                                                  10/31/2003 02:22:26 PAGE    12

                     718                             ; SOURCE LINE # 200
0002 120000   F      719             LCALL   StartI2c
                     720     ;       
                     721     ;       if(!SendByte(SlaveAddress))           /*发送器件地址*/
                     722                             ; SOURCE LINE # 202
0005 120000   F      723             LCALL   _SendByte
0008 4001            724             JC      ?C0025
                     725     ;       {
                     726                             ; SOURCE LINE # 203
                     727     ;               return(FALSE);
                     728                             ; SOURCE LINE # 204
000A 22              729             RET     
                     730     ;       }
                     731                             ; SOURCE LINE # 205
000B                 732     ?C0025:
                     733     ;       
                     734     ;       if(!SendByte(address))            /*发送器件子地址*/
                     735                             ; SOURCE LINE # 207
000B AF05            736             MOV     R7,AR5
000D 120000   F      737             LCALL   _SendByte
0010 4001            738             JC      ?C0027
                     739     ;       {
                     740                             ; SOURCE LINE # 208
                     741     ;               return(FALSE);
                     742                             ; SOURCE LINE # 209
0012 22              743             RET     
                     744     ;       }
                     745                             ; SOURCE LINE # 210
0013                 746     ?C0027:
                     747     ;       
                     748     ;       StartI2c();
                     749                             ; SOURCE LINE # 212
0013 120000   F      750             LCALL   StartI2c
                     751     ;       
                     752     ;       if(!SendByte(SlaveAddress+1))
                     753                             ; SOURCE LINE # 214
0016 EC              754             MOV     A,R4
0017 04              755             INC     A
0018 FF              756             MOV     R7,A
0019 120000   F      757             LCALL   _SendByte
001C 4001            758             JC      ?C0028
                     759     ;       {
                     760                             ; SOURCE LINE # 215
                     761     ;               return(FALSE);
                     762                             ; SOURCE LINE # 216
001E 22              763             RET     
                     764     ;       }
                     765                             ; SOURCE LINE # 217
001F                 766     ?C0028:
                     767     ;       
                     768     ;       for(i = 0; i < len - 1; i++)
                     769                             ; SOURCE LINE # 219
001F E4              770             CLR     A
0020 7800     F      771             MOV     R0,#LOW (i?858)
0022 F6              772             MOV     @R0,A
0023                 773     ?C0029:
0023 900000   F      774             MOV     DPTR,#len?857
0026 E0              775             MOVX    A,@DPTR
0027 14              776             DEC     A
0028 FF              777             MOV     R7,A
0029 7800     F      778             MOV     R0,#LOW (i?858)
002B E6              779             MOV     A,@R0
002C C3              780             CLR     C
002D 9F              781             SUBB    A,R7
002E 5012            782             JNC     ?C0030
                     783     ;       {   
A51 MACRO ASSEMBLER  IIC                                                                  10/31/2003 02:22:26 PAGE    13

                     784                             ; SOURCE LINE # 220
                     785     ;               *source = RcvByte();               /*接收数据*/
                     786                             ; SOURCE LINE # 221
0030 120000   F      787             LCALL   RcvByte
                     788     ;                       AckI2c(FALSE);                /*发送就答位*/  
                     789                             ; SOURCE LINE # 222
0033 120000   F      790             LCALL   L?0051
                     791     ;               source++;
                     792                             ; SOURCE LINE # 223
0036 7401            793             MOV     A,#01H
0038 29              794             ADD     A,R1
0039 F9              795             MOV     R1,A
003A E4              796             CLR     A
003B 3A              797             ADDC    A,R2
003C FA              798             MOV     R2,A
                     799     ;       } 
                     800                             ; SOURCE LINE # 224
003D 7800     F      801             MOV     R0,#LOW (i?858)
003F 06              802             INC     @R0
0040 80E1            803             SJMP    ?C0029
0042                 804     ?C0030:
                     805     ;       
                     806     ;       *source = RcvByte();
                     807                             ; SOURCE LINE # 226
0042 120000   F      808             LCALL   RcvByte
0045 EF              809             MOV     A,R7
0046 120000   F      810             LCALL   ?C?CSTPTR
                     811     ;       
                     812     ;       AckI2c(TRUE);                 /*发送非应位*/
                     813                             ; SOURCE LINE # 228
0049 D200     F      814             SETB    ?AckI2c?BIT
004B 120000   F      815             LCALL   AckI2c
                     816     ;       
                     817     ;       StopI2c();                    /*结束总线*/ 
                     818                             ; SOURCE LINE # 230
004E 120000   F      819             LCALL   StopI2c
                     820     ;       
                     821     ;       return(TRUE);
                     822                             ; SOURCE LINE # 232
0051 D3              823             SETB    C
                     824     ; }
                     825                             ; SOURCE LINE # 233
0052                 826     ?C0026:
0052 22              827             RET     
                     828     ; END OF _iic_rcv_str
                     829     
                     830     ; 
                     831     ; 
                     832     ; extern bool iiv_send_long_str(byte SlaveAddress, word address, byte *source, byte len)
                     833     
----                 834             RSEG  ?PR?_iiv_send_long_str?IIC
0000                 835     _iiv_send_long_str:
                     836             USING   0
                     837                             ; SOURCE LINE # 236
                     838     ;---- Variable 'SlaveAddress?959' assigned to Register 'R7' ----
                     839     ;---- Variable 'source?961' assigned to Register 'R1/R2/R3' ----
                     840     ;---- Variable 'address?960' assigned to Register 'R4/R5' ----
                     841     ; {
                     842                             ; SOURCE LINE # 237
                     843     ;       byte idata i;
                     844     ; 
                     845     ;       StartI2c();               /*启动总线*/
                     846                             ; SOURCE LINE # 240
0000 120000   F      847             LCALL   StartI2c
                     848     ;       
                     849     ;       if(!SendByte(SlaveAddress))            /*发送器件地址*/
A51 MACRO ASSEMBLER  IIC                                                                  10/31/2003 02:22:26 PAGE    14

                     850                             ; SOURCE LINE # 242
0003 120000   F      851             LCALL   _SendByte
0006 4001            852             JC      ?C0032
                     853     ;       {
                     854                             ; SOURCE LINE # 243
                     855     ;               return(FALSE);
                     856                             ; SOURCE LINE # 244
0008 22              857             RET     
                     858     ;       }
                     859                             ; SOURCE LINE # 245
0009                 860     ?C0032:
                     861     ; 
                     862     ;               if(!SendByte(HBYTE(address)))            /*发送器件地址*/
                     863                             ; SOURCE LINE # 247
0009 EC              864             MOV     A,R4
000A FF              865             MOV     R7,A
000B 120000   F      866             LCALL   _SendByte
000E 4001            867             JC      ?C0034
                     868     ;       {
                     869                             ; SOURCE LINE # 248
                     870     ;               return(FALSE);
                     871                             ; SOURCE LINE # 249
0010 22              872             RET     
                     873     ;       }
                     874                             ; SOURCE LINE # 250
0011                 875     ?C0034:
                     876     ;               
                     877     ;       if(!SendByte(LBYTE(address)))            /*发送器件子地址*/
                     878                             ; SOURCE LINE # 252
0011 AF05            879             MOV     R7,AR5
0013 120000   F      880             LCALL   _SendByte
0016 4001            881             JC      ?C0035
                     882     ;       {
                     883                             ; SOURCE LINE # 253
                     884     ;               return(FALSE);

⌨️ 快捷键说明

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