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

📄 iic.ls1

📁 一个完整的51单片机的操作糸统源程序! 内容十分丰富!很有借鉴价值!
💻 LS1
📖 第 1 页 / 共 5 页
字号:
                     885                             ; SOURCE LINE # 254
0018 22              886             RET     
                     887     ;       }
                     888                             ; SOURCE LINE # 255
0019                 889     ?C0035:
                     890     ;       
                     891     ;       for(i = 0; i < len; i++)
                     892                             ; SOURCE LINE # 257
0019 E4              893             CLR     A
001A 7800     F      894             MOV     R0,#LOW (i?963)
001C F6              895             MOV     @R0,A
001D                 896     ?C0036:
001D 900000   F      897             MOV     DPTR,#len?962
0020 E0              898             MOVX    A,@DPTR
0021 FF              899             MOV     R7,A
0022 7800     F      900             MOV     R0,#LOW (i?963)
0024 E6              901             MOV     A,@R0
0025 C3              902             CLR     C
0026 9F              903             SUBB    A,R7
0027 5016            904             JNC     ?C0037
                     905     ;       {   
                     906                             ; SOURCE LINE # 258
                     907     ;               if(!SendByte(*source))               /*发送数据*/
                     908                             ; SOURCE LINE # 259
0029 120000   F      909             LCALL   ?C?CLDPTR
002C FF              910             MOV     R7,A
002D 120000   F      911             LCALL   _SendByte
0030 4001            912             JC      ?C0039
                     913     ;               {
                     914                             ; SOURCE LINE # 260
                     915     ;                       return(FALSE);
A51 MACRO ASSEMBLER  IIC                                                                  10/31/2003 02:22:26 PAGE    15

                     916                             ; SOURCE LINE # 261
0032 22              917             RET     
                     918     ;               }
                     919                             ; SOURCE LINE # 262
0033                 920     ?C0039:
                     921     ;               source++;
                     922                             ; SOURCE LINE # 263
0033 7401            923             MOV     A,#01H
0035 29              924             ADD     A,R1
0036 F9              925             MOV     R1,A
0037 E4              926             CLR     A
0038 3A              927             ADDC    A,R2
0039 FA              928             MOV     R2,A
                     929     ;       } 
                     930                             ; SOURCE LINE # 264
003A 7800     F      931             MOV     R0,#LOW (i?963)
003C 06              932             INC     @R0
003D 80DE            933             SJMP    ?C0036
003F                 934     ?C0037:
                     935     ;       StopI2c();                 /*结束总线*/ 
                     936                             ; SOURCE LINE # 265
003F 120000   F      937             LCALL   StopI2c
                     938     ;       
                     939     ;       return(TRUE);
                     940                             ; SOURCE LINE # 267
0042 D3              941             SETB    C
                     942     ; }
                     943                             ; SOURCE LINE # 268
0043                 944     ?C0033:
0043 22              945             RET     
                     946     ; END OF _iiv_send_long_str
                     947     
                     948     ; 
                     949     ; 
                     950     ; extern bool iic_rcv_long_str(byte SlaveAddress, word address, byte *source, byte len)
                     951     
----                 952             RSEG  ?PR?_iic_rcv_long_str?IIC
0000                 953     _iic_rcv_long_str:
                     954             USING   0
                     955                             ; SOURCE LINE # 271
0000 900000   F      956             MOV     DPTR,#SlaveAddress?1064
0003 EF              957             MOV     A,R7
0004 F0              958             MOVX    @DPTR,A
                     959     ;---- Variable 'source?1066' assigned to Register 'R1/R2/R3' ----
                     960     ;---- Variable 'address?1065' assigned to Register 'R4/R5' ----
                     961     ; {
                     962                             ; SOURCE LINE # 272
                     963     ;       byte idata i;
                     964     ; 
                     965     ;       StartI2c();               /*启动总线*/
                     966                             ; SOURCE LINE # 275
0005 120000   F      967             LCALL   StartI2c
                     968     ;       
                     969     ;       if(!SendByte(SlaveAddress))           /*发送器件地址*/
                     970                             ; SOURCE LINE # 277
0008 E0              971             MOVX    A,@DPTR
0009 FF              972             MOV     R7,A
000A 120000   F      973             LCALL   _SendByte
000D 4001            974             JC      ?C0040
                     975     ;       {
                     976                             ; SOURCE LINE # 278
                     977     ;               return(FALSE);
                     978                             ; SOURCE LINE # 279
000F 22              979             RET     
                     980     ;       }
                     981                             ; SOURCE LINE # 280
A51 MACRO ASSEMBLER  IIC                                                                  10/31/2003 02:22:26 PAGE    16

0010                 982     ?C0040:
                     983     ;       
                     984     ;       if(!SendByte(HBYTE(address)))            /*发送器件子地址*/
                     985                             ; SOURCE LINE # 282
0010 EC              986             MOV     A,R4
0011 FF              987             MOV     R7,A
0012 120000   F      988             LCALL   _SendByte
0015 4001            989             JC      ?C0042
                     990     ;       {
                     991                             ; SOURCE LINE # 283
                     992     ;               return(FALSE);
                     993                             ; SOURCE LINE # 284
0017 22              994             RET     
                     995     ;       }
                     996                             ; SOURCE LINE # 285
0018                 997     ?C0042:
                     998     ;       
                     999     ;       if(!SendByte(LBYTE(address)))            /*发送器件子地址*/
                    1000                             ; SOURCE LINE # 287
0018 AF05           1001             MOV     R7,AR5
001A 120000   F     1002             LCALL   _SendByte
001D 4001           1003             JC      ?C0043
                    1004     ;       {
                    1005                             ; SOURCE LINE # 288
                    1006     ;               return(FALSE);
                    1007                             ; SOURCE LINE # 289
001F 22             1008             RET     
                    1009     ;       }
                    1010                             ; SOURCE LINE # 290
0020                1011     ?C0043:
                    1012     ;       
                    1013     ;       StartI2c();
                    1014                             ; SOURCE LINE # 292
0020 120000   F     1015             LCALL   StartI2c
                    1016     ;       
                    1017     ;       if(!SendByte(SlaveAddress+1))
                    1018                             ; SOURCE LINE # 294
0023 900000   F     1019             MOV     DPTR,#SlaveAddress?1064
0026 E0             1020             MOVX    A,@DPTR
0027 04             1021             INC     A
0028 FF             1022             MOV     R7,A
0029 120000   F     1023             LCALL   _SendByte
002C 4001           1024             JC      ?C0044
                    1025     ;       {
                    1026                             ; SOURCE LINE # 295
                    1027     ;               return(FALSE);
                    1028                             ; SOURCE LINE # 296
002E 22             1029             RET     
                    1030     ;       }
                    1031                             ; SOURCE LINE # 297
002F                1032     ?C0044:
                    1033     ;       
                    1034     ;       for(i = 0; i < len - 1; i++)
                    1035                             ; SOURCE LINE # 299
002F E4             1036             CLR     A
0030 7800     F     1037             MOV     R0,#LOW (i?1068)
0032 F6             1038             MOV     @R0,A
0033                1039     ?C0045:
0033 900000   F     1040             MOV     DPTR,#len?1067
0036 E0             1041             MOVX    A,@DPTR
0037 14             1042             DEC     A
0038 FF             1043             MOV     R7,A
0039 7800     F     1044             MOV     R0,#LOW (i?1068)
003B E6             1045             MOV     A,@R0
003C C3             1046             CLR     C
003D 9F             1047             SUBB    A,R7
A51 MACRO ASSEMBLER  IIC                                                                  10/31/2003 02:22:26 PAGE    17

003E 5012           1048             JNC     ?C0046
                    1049     ;       {   
                    1050                             ; SOURCE LINE # 300
                    1051     ;               *source = RcvByte();               /*发送数据*/
                    1052                             ; SOURCE LINE # 301
0040 120000   F     1053             LCALL   RcvByte
                    1054     ;                       AckI2c(FALSE);                /*发送就答位*/  
                    1055                             ; SOURCE LINE # 302
0043 120000   F     1056             LCALL   L?0051
                    1057     ;               source++;
                    1058                             ; SOURCE LINE # 303
0046 7401           1059             MOV     A,#01H
0048 29             1060             ADD     A,R1
0049 F9             1061             MOV     R1,A
004A E4             1062             CLR     A
004B 3A             1063             ADDC    A,R2
004C FA             1064             MOV     R2,A
                    1065     ;       } 
                    1066                             ; SOURCE LINE # 304
004D 7800     F     1067             MOV     R0,#LOW (i?1068)
004F 06             1068             INC     @R0
0050 80E1           1069             SJMP    ?C0045
0052                1070     ?C0046:
                    1071     ;       
                    1072     ;       *source = RcvByte();
                    1073                             ; SOURCE LINE # 306
0052 120000   F     1074             LCALL   RcvByte
0055 EF             1075             MOV     A,R7
0056 120000   F     1076             LCALL   ?C?CSTPTR
                    1077     ;       
                    1078     ;       AckI2c(TRUE);                 /*发送非应位*/
                    1079                             ; SOURCE LINE # 308
0059 D200     F     1080             SETB    ?AckI2c?BIT
005B 120000   F     1081             LCALL   AckI2c
                    1082     ;       
                    1083     ;       StopI2c();                    /*结束总线*/ 
                    1084                             ; SOURCE LINE # 310
005E 120000   F     1085             LCALL   StopI2c
                    1086     ;       
                    1087     ;       return(TRUE);
                    1088                             ; SOURCE LINE # 312
0061 D3             1089             SETB    C
                    1090     ; }
                    1091                             ; SOURCE LINE # 313
0062                1092     ?C0041:
0062 22             1093             RET     
                    1094     ; END OF _iic_rcv_long_str
                    1095     
                    1096             END
A51 MACRO ASSEMBLER  IIC                                                                  10/31/2003 02:22:26 PAGE    18

SYMBOL TABLE LISTING
------ ----- -------


N A M E                     T Y P E  V A L U E   ATTRIBUTES

?ACKI2C?BIT. . . . . . . .  B ADDR   0000H.0 R   SEG=?BI?ACKI2C?IIC
?BI?ACKI2C?IIC . . . . . .  B SEG    0001H       REL=UNIT
?BI?IIC. . . . . . . . . .  B SEG    0001H       REL=UNI

⌨️ 快捷键说明

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