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

📄 i2c_m.ls1

📁 8051模拟IIC总线读写24CXX原程序。
💻 LS1
📖 第 1 页 / 共 4 页
字号:
                     396     ;               case MR_LDATA_ACK:                      //0x58
                     397                             ; SOURCE LINE # 83
00B9                 398     ?C0013:
                     399     ;               transreg(MR_LDATA_ACK);
                     400                             ; SOURCE LINE # 84
00B9 7F58            401             MOV     R7,#058H
00BB 120000   F      402             LCALL   _transreg
                     403     ;               SDATA[num]=S1DAT;
                     404                             ; SOURCE LINE # 85
00BE 7400     F      405             MOV     A,#LOW (SDATA)
00C0 2500     F      406             ADD     A,num
00C2 F8              407             MOV     R0,A
00C3 A6DA            408             MOV     @R0,S1DAT
                     409     ;               num++;
                     410                             ; SOURCE LINE # 86
00C5 0500     F      411             INC     num
                     412     ;         S1CON=SEND_STOP_ACK;
                     413                             ; SOURCE LINE # 87
00C7                 414     ?C0031:
                     415     ;               break;
                     416                             ; SOURCE LINE # 88
00C7 8005            417             SJMP    ?C0034
                     418     ;               //--------------------------
                     419     ;               case MR_SLAVE_NONACK:           //0x48
                     420                             ; SOURCE LINE # 90
00C9                 421     ?C0014:
                     422     ;               transreg(MR_SLAVE_NONACK);
                     423                             ; SOURCE LINE # 91
00C9 7F48            424             MOV     R7,#048H
00CB 120000   F      425             LCALL   _transreg
                     426     ;               S1CON=SEND_STOP_ACK;
                     427                             ; SOURCE LINE # 92
00CE                 428     ?C0034:
00CE 75D8D6          429             MOV     S1CON,#0D6H
                     430     ;               break;
                     431                             ; SOURCE LINE # 93
00D1 8072            432             SJMP    ?C0025
                     433     ;               //==========================================
                     434     ; 
                     435     ;               //=====SLAVE RECEIVE mode===================
                     436     ;               case SR_SLAW_ACK:                       //0x60
                     437                             ; SOURCE LINE # 97
00D3                 438     ?C0015:
                     439     ;               transreg(SR_SLAW_ACK);
                     440                             ; SOURCE LINE # 98
00D3 7F60            441             MOV     R7,#060H
00D5 120000   F      442             LCALL   _transreg
                     443     ;               num = 0;
                     444                             ; SOURCE LINE # 99
00D8                 445     ?C0032:
00D8 750000   F      446             MOV     num,#00H
                     447     ;               S1CON=RELEASE_BUS_ACK;
                     448                             ; SOURCE LINE # 100
                     449     ;               break;
                     450                             ; SOURCE LINE # 101
00DB 805E            451             SJMP    ?C0036
                     452     ; 
A51 MACRO ASSEMBLER  I2C_M                                                                12/18/2003 11:19:19 PAGE     8

                     453     ;               case SR_SLAW_NONACK:            //0x68
                     454                             ; SOURCE LINE # 103
00DD                 455     ?C0016:
                     456     ;               transreg(SR_SLAW_NONACK);
                     457                             ; SOURCE LINE # 104
00DD 7F68            458             MOV     R7,#068H
00DF 120000   F      459             LCALL   _transreg
                     460     ;               num=0;
                     461                             ; SOURCE LINE # 105
00E2 750000   F      462             MOV     num,#00H
                     463     ;               S1CON=RELEASE_BUS_NONACK;
                     464                             ; SOURCE LINE # 106
00E5 75D8C2          465             MOV     S1CON,#0C2H
                     466     ; 
                     467     ;               case SR_DATA_ACK:                       //0x80
                     468                             ; SOURCE LINE # 108
00E8                 469     ?C0017:
                     470     ;               transreg(SR_DATA_ACK);
                     471                             ; SOURCE LINE # 109
00E8 7F80            472             MOV     R7,#080H
00EA                 473     ?C0033:
00EA 120000   F      474             LCALL   _transreg
                     475     ;               SDATA[num]=S1DAT;
                     476                             ; SOURCE LINE # 110
00ED 7400     F      477             MOV     A,#LOW (SDATA)
00EF 2500     F      478             ADD     A,num
00F1 F8              479             MOV     R0,A
00F2 A6DA            480             MOV     @R0,S1DAT
                     481     ;               num++;
                     482                             ; SOURCE LINE # 111
00F4 0500     F      483             INC     num
                     484     ;               S1CON=RELEASE_BUS_ACK;
                     485                             ; SOURCE LINE # 112
00F6                 486     ?C0035:
                     487     ;               break;
                     488                             ; SOURCE LINE # 113
00F6 8043            489             SJMP    ?C0036
                     490     ; 
                     491     ;               case SR_DATA_NONACK:            //0x88          
                     492                             ; SOURCE LINE # 115
00F8                 493     ?C0018:
                     494     ;               transreg(SR_DATA_NONACK);
                     495                             ; SOURCE LINE # 116
00F8 7F88            496             MOV     R7,#088H
00FA 120000   F      497             LCALL   _transreg
                     498     ;               SDATA[num]=S1DAT;
                     499                             ; SOURCE LINE # 117
00FD 7400     F      500             MOV     A,#LOW (SDATA)
00FF 2500     F      501             ADD     A,num
0101 F8              502             MOV     R0,A
0102 A6DA            503             MOV     @R0,S1DAT
                     504     ;               num++;
                     505                             ; SOURCE LINE # 118
0104 0500     F      506             INC     num
                     507     ;               S1CON=RELEASE_BUS_NONACK;
                     508                             ; SOURCE LINE # 119
0106 75D8C2          509             MOV     S1CON,#0C2H
                     510     ;               break;
                     511                             ; SOURCE LINE # 120
0109 803A            512             SJMP    ?C0025
                     513     ; 
                     514     ;               case SR_STOP_ACK:                       //0xA0  receive has done
                     515                             ; SOURCE LINE # 122
010B                 516     ?C0019:
                     517     ;               transreg(SR_STOP_ACK);  
                     518                             ; SOURCE LINE # 123
A51 MACRO ASSEMBLER  I2C_M                                                                12/18/2003 11:19:19 PAGE     9

010B 7FA0            519             MOV     R7,#0A0H
010D 120000   F      520             LCALL   _transreg
                     521     ;               S1CON=RELEASE_BUS_ACK;
                     522                             ; SOURCE LINE # 124
0110 75D8C6          523             MOV     S1CON,#0C6H
                     524     ;               FReceive_Done = 1;
                     525                             ; SOURCE LINE # 125
0113 7800     F      526             MOV     R0,#LOW (FReceive_Done)
0115 7601            527             MOV     @R0,#01H
                     528     ;               break;
                     529                             ; SOURCE LINE # 126
0117 802C            530             SJMP    ?C0025
                     531     ;               //==========================================
                     532     ;               //=====SLAVE TRANSMITTER mode===============
                     533     ;               case ST_SLAR_ACK:                       //0xA8
                     534                             ; SOURCE LINE # 129
0119                 535     ?C0020:
                     536     ;               transreg(ST_SLAR_ACK);
                     537                             ; SOURCE LINE # 130
0119 7FA8            538             MOV     R7,#0A8H
011B 120000   F      539             LCALL   _transreg
                     540     ;               num=0;
                     541                             ; SOURCE LINE # 131
011E 750000   F      542             MOV     num,#00H
                     543     ;               S1DAT = DATA[num]; 
                     544                             ; SOURCE LINE # 132
                     545     ;         num++;
                     546                             ; SOURCE LINE # 133
                     547     ;               S1CON=RELEASE_BUS_ACK;
                     548                             ; SOURCE LINE # 134
                     549     ; 
                     550     ;               break;
                     551                             ; SOURCE LINE # 136
0121 800C            552             SJMP    ?C0037
                     553     ; 
                     554     ;               case ST_DATA_ACK:                       //0xB8
                     555                             ; SOURCE LINE # 138
0123                 556     ?C0021:
                     557     ;               transreg(ST_DATA_ACK);
                     558                             ; SOURCE LINE # 139
0123 7FB8            559             MOV     R7,#0B8H
0125 120000   F      560             LCALL   _transreg
                     561     ;               if(num<4)
                     562                             ; SOURCE LINE # 140
0128 E500     F      563             MOV     A,num
012A C3              564             CLR     C
012B 9404            565             SUBB    A,#04H
012D 500C            566             JNC     ?C0022
                     567     ;                       { 
                     568                             ; SOURCE LINE # 141
                     569     ;                               S1DAT=DATA[num];
                     570                             ; SOURCE LINE # 142
012F                 571     ?C0028:
012F                 572     ?C0037:
012F E500     F      573             MOV     A,num
0131 900000   F      574             MOV     DPTR,#DATA?
0134 93              575             MOVC    A,@A+DPTR
0135 F5DA            576             MOV     S1DAT,A
                     577     ;                               num++;
                     578                             ; SOURCE LINE # 143
0137 0500     F      579             INC     num
                     580     ;                               S1CON = RELEASE_BUS_ACK;
                     581                             ; SOURCE LINE # 144
                     582     ;                       }
                     583                             ; SOURCE LINE # 145
0139 8007            584             SJMP    ?C0039
A51 MACRO ASSEMBLER  I2C_M                                                                12/18/2003 11:19:19 PAGE    10

013B                 585     ?C0022:
                     586     ;               else
                     587     ;                       {
                     588                             ; SOURCE LINE # 147
                     589     ;                                S1CON = RELEASE_BUS_ACK;
                     590                             ; SOURCE LINE # 148
013B                 591     ?C0036:
013B                 592     ?C0038:
                     593     ;                       }       
                     594                             ; SOURCE LINE # 149
                     595     ;       
                     596     ;               break;
                     597                             ; SOURCE LINE # 151
013B 8005            598             SJMP    ?C0039

⌨️ 快捷键说明

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