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

📄 24cxx.lst

📁 基于msc单片机仿真机的仿真程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
                     219     
                     220     
                     221     ;========================================================================================
                     222     ;========================================================================================
                     223     ;       以下是用户接口子程序
                     224     ;
                     225     
                     226     ;无子地址器件写字节数据
                     227     ;入口参数: 数据为ACC、器件从地址SLA              
                     228     ;占用:  A、R0、CY
01EA C0E0            229     IWRBYTE: PUSH   ACC
01EC 120141          230     IWBLOOP: LCALL  START                           ;起动总线
01EF E550            231              MOV    A,SLA  
01F1 12019C          232              LCALL  WRBYTE                          ;发送器件从地址 
01F4 120187          233              LCALL  CACK
01F7 30100C          234              JNB    ACK,RETWRB                      ;无应答则跳转
01FA D0E0            235              POP    ACC                             ;写数据
01FC 12019C          236              LCALL  WRBYTE
01FF 120187          237              LCALL  CACK
0202 120156          238              LCALL  STOP
0205 22              239              RET
0206 D0E0            240     RETWRB:  POP    ACC
0208 120156          241              LCALL  STOP
020B 22              242              RET
                     243     
                     244     ;无子地址器件读字节数据
                     245     ;入口参数: 器件从地址SLA
                     246     ;出口参数: 数据为ACC    
                     247     ;占用: A 、R0、R2 、CY
020C 120141          248     IRDBYTE: LCALL  START
020F E550            249              MOV    A,SLA                           ;发送器件从地址
0211 04              250              INC    A
0212 12019C          251              LCALL  WRBYTE
0215 120187          252              LCALL  CACK
0218 301006          253              JNB    ACK,RETRDB             
A51 MACRO ASSEMBLER  24CXX                                                                09/16/2006 15:07:00 PAGE     5

021B 1201C3          254              LCALL  RDBYTE                          ;进行读字节操作
021E 120177          255              LCALL  MNACK                           ;发送非应信号
0221 120156          256     RETRDB:  LCALL  STOP                            ;结束总线
0224 22              257              RET
                     258     
                     259     ;向器件指定子地址写N字节数据
                     260     ;入口参数:  器件从地址SLA、器件子地址SUBA 、发送数据缓冲区MTD、发送字节数NUMBYTE
                     261     ; 占用:  A 、R0 、R1 、R3 、CY 
0225 E552            262     IWRNBYTE: MOV    A,NUMBYTE
0227 FB              263               MOV    R3,A
0228 120141          264               LCALL  START                          ;起动总线
022B E550            265               MOV    A,SLA
022D 12019C          266               LCALL  WRBYTE                         ;发送器件从地址      
0230 120187          267               LCALL  CACK
0233 301017          268               JNB    ACK,RETWRN                     ;无应答则退出
0236 E551            269               MOV    A,SUBA                         ;指定子地址 
0238 12019C          270               LCALL  WRBYTE
023B 120187          271               LCALL  CACK
023E 7940            272               MOV    R1,#MTD
0240 E7              273     WRDA:     MOV    A,@R1
0241 12019C          274               LCALL  WRBYTE                         ;开始写入数据
0244 120187          275               LCALL  CACK
0247 3010DB          276               JNB    ACK,IWRNBYTE
024A 09              277               INC    R1
024B DBF3            278               DJNZ   R3,WRDA                        ;判断写完没有
024D 120156          279     RETWRN:   LCALL  STOP
0250 22              280               RET
                     281     
                     282     ;向器件指定子地址读取N字节数据
                     283     ;入口参数:  器件从地址SLA、器件子地址SUBA、接收字节数NUMBYTE
                     284     ;出口参数:  接收数据缓冲区MTD
                     285     ;占用:A、 R0、 R1、 R2、 R3、 CY               
0251 AB52            286     IRDNBYTE:  MOV    R3,NUMBYTE
0253 120141          287                LCALL  START
0256 E550            288                MOV    A,SLA
0258 12019C          289                LCALL  WRBYTE                        ;发送器件从地址
025B 120187          290                LCALL  CACK
025E 301022          291                JNB    ACK,RETRDN
0261 E551            292                MOV    A,SUBA                        ;指定子地址    
0263 12019C          293                LCALL  WRBYTE
0266 120187          294                LCALL  CACK  
0269 120141          295                LCALL  START                         ;重新起动总线
026C E550            296                MOV    A,SLA
026E 04              297                INC    A                             ;准备进行读操作 
026F 12019C          298                LCALL  WRBYTE
0272 120187          299                LCALL  CACK
0275 3010D9          300                JNB    ACK,IRDNBYTE           
0278 7949            301                MOV    R1,#MRD
027A 1201C3          302     RDN1:      LCALL  RDBYTE                        ;读操作开始
027D F7              303                MOV    @R1,A
                     304                ;NOP                                 ;+1
                     305                ;NOP                                 ;+1     
027E DB07            306                DJNZ   R3,SACK
0280 120177          307                LCALL  MNACK                         ;最后一字节发非应答位               
0283 120156          308     RETRDN:    LCALL  STOP                          ;并结束总线
0286 22              309                RET
0287 120167          310     SACK:      LCALL  MACK
028A 09              311                INC    R1
028B 80ED            312                SJMP   RDN1
                     313     
                     314     
                     315     ;无子地址器件写N字节数据
                     316     ;入口参数:  器件从地址SLA、发送数据缓冲区MTD、发送字节数NUMBYTE
                     317     ; 占用:  A 、R0 、R1 、R3 、CY 
                     318     ;不发送子地址SUBA,直接发送多个数据.
028D                 319     IWRNBYTEEXT:
A51 MACRO ASSEMBLER  24CXX                                                                09/16/2006 15:07:00 PAGE     6

028D E552            320               MOV    A,NUMBYTE
028F FB              321               MOV    R3,A
0290 120141          322               LCALL  START                          ;起动总线
0293 E550            323               MOV    A,SLA
0295 12019C          324               LCALL  WRBYTE                         ;发送器件从地址      
0298 120187          325               LCALL  CACK
029B 30100F          326               JNB    ACK,RETWRNE                    ;无应答则退出
029E 7940            327               MOV    R1,#MTD
02A0 E7              328     WRDAE:    MOV    A,@R1
02A1 12019C          329               LCALL  WRBYTE                         ;开始写入数据
02A4 120187          330               LCALL  CACK
02A7 301003          331               JNB    ACK,RETWRNE
02AA 09              332               INC    R1
02AB DBF3            333               DJNZ   R3,WRDAE                       ;判断写完没有
02AD 120156          334     RETWRNE:  LCALL  STOP
02B0 22              335               RET
                     336     
                     337     
                     338     ;无子地址器件读取N字节数据
                     339     ;入口参数:  器件从地址SLA、器件子地址SUBA、接收字节数NUMBYTE
                     340     ;出口参数:  接收数据缓冲区MTD
                     341     ;占用:A、 R0、 R1、 R2、 R3、 CY  
                     342     ;说明:此函数不发送子址,也不重新启动总线,而是直接读取多个数据.
02B1                 343     IRDNBYTEEXT:
02B1 AB52            344                MOV    R3,NUMBYTE
02B3 120141          345                LCALL  START
02B6 E550            346                MOV    A,SLA
02B8 04              347                INC    A  
02B9 12019C          348                LCALL  WRBYTE                        ;发送器件从地址
02BC 120187          349                LCALL  CACK
02BF 30100B          350                JNB    ACK,RETRDNE
02C2 7949            351                MOV    R1,#MRD
02C4 1201C3          352     RDNE1:     LCALL  RDBYTE                        ;读操作开始
02C7 F7              353                MOV    @R1,A
02C8 DB07            354                DJNZ   R3,SACKE
02CA 120177          355                LCALL  MNACK                         ;最后一字节发非应答位               
02CD 120156          356     RETRDNE:   LCALL  STOP                          ;并结束总线
02D0 22              357                RET
02D1 120167          358     SACKE:     LCALL  MACK
02D4 09              359                INC    R1
02D5 80ED            360                SJMP   RDNE1
                     361     
                     362     
                     363     
                     364     ;******************************************************************************************
                             ***
                     365     ;                               请注意
                     366     ;
                     367     ;    占用内部资源:         R0,R1,R2,R3,ACC,Cy。
                     368     ;    在你的程序里要做以下定义:
                     369     ;    1、定义变量:  SLA 器件从地址  SUBA器件子地址  NUMBYTE读/写的字节数 ,位变量ACK 
                     370     ;    2、定义常量:  SDA SCL 总线位  MTD 发送数据缓冲区首址    MRD 接收数据缓冲区首址
                     371     ;
                     372     ;   (ACK为调试/测试位,ACK为0时表示无器件应答或总线出错)
                     373     ;
                     374     ;    在使用本软件包时,请在你的程序的未尾加入$INCLUDE (VI2C_ASM.INC)即可。VI2C_ASM.INC文件
                     375     ;复制到IDE包含文件所要求的目录(如:工作目录或INC目录)
                     376     ;
                     377     ;    用户可以对"用户接口子程序"进行裁减,即把自已不使用的接口子程序删掉,以节省程序空间。
                     378     ;******************************************************************************************
                             ****
                     379     
                     380             END
                             
A51 MACRO ASSEMBLER  24CXX                                                                09/16/2006 15:07:00 PAGE     7

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


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

ACC. . . . . . . .  D ADDR   00E0H   A   
ACK. . . . . . . .  B ADDR   0022H.0 A   
CACK . . . . . . .  C ADDR   0187H   A   
CEND . . . . . . .  C ADDR   0197H   A   
CSI24WC02. . . . .  N NUMB   00A0H   A   
DELAY. . . . . . .  C ADDR   012CH   A   
DELAY1 . . . . . .  C ADDR   013CH   A   
IRDBYTE. . . . . .  C ADDR   020CH   A   
IRDNBYTE . . . . .  C ADDR   0251H   A   
IRDNBYTEEXT. . . .  C ADDR   02B1H   A   
IWBLOOP. . . . . .  C ADDR   01ECH   A   
IWRBYTE. . . . . .  C ADDR   01EAH   A   
IWRNBYTE . . . . .  C ADDR   0225H   A   
IWRNBYTEEXT. . . .  C ADDR   028DH   A   
MACK . . . . . . .  C ADDR   0167H   A   
MAIN . . . . . . .  C ADDR   0100H   A   
MIN. . . . . . . .  C ADDR   012EH   A   
MNACK. . . . . . .  C ADDR   0177H   A   
MRD. . . . . . . .  N NUMB   0049H   A   
MTD. . . . . . . .  N NUMB   0040H   A   
NUMBYTE. . . . . .  D ADDR   0052H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
RDBYTE . . . . . .  C ADDR   01C3H   A   
RDN1 . . . . . . .  C ADDR   027AH   A   
RDNE1. . . . . . .  C ADDR   02C4H   A   
RETRDB . . . . . .  C ADDR   0221H   A   
RETRDN . . . . . .  C ADDR   0283H   A   
RETRDNE. . . . . .  C ADDR   02CDH   A   
RETWRB . . . . . .  C ADDR   0206H   A   
RETWRN . . . . . .  C ADDR   024DH   A   
RETWRNE. . . . . .  C ADDR   02ADH   A   
RLP. . . . . . . .  C ADDR   01C5H   A   
SACK . . . . . . .  C ADDR   0287H   A   
SACKE. . . . . . .  C ADDR   02D1H   A   
SCL. . . . . . . .  B ADDR   00B0H.7 A   
SDA. . . . . . . .  B ADDR   0090H.4 A   
SLA. . . . . . . .  D ADDR   0050H   A   
SP . . . . . . . .  D ADDR   0081H   A   
START. . . . . . .  C ADDR   0141H   A   
STOP . . . . . . .  C ADDR   0156H   A   
SUBA . . . . . . .  D ADDR   0051H   A   
WLP. . . . . . . .  C ADDR   019EH   A   
WLP1 . . . . . . .  C ADDR   01A3H   A   
WR0. . . . . . . .  C ADDR   01B5H   A   
WR1. . . . . . . .  C ADDR   01A7H   A   
WRBYTE . . . . . .  C ADDR   019CH   A   
WRDA . . . . . . .  C ADDR   0240H   A   
WRDAE. . . . . . .  C ADDR   02A0H   A   
YS500. . . . . . .  C ADDR   0131H   A   
YS500US. . . . . .  C ADDR   0137H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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