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

📄 ex.lst

📁 时钟芯片PCF8563的51单片机程序 时钟不超过12MHZ
💻 LST
📖 第 1 页 / 共 2 页
字号:
                +1   225     
                +1   226     ;========================================================================================
                +1   227     ;========================================================================================
                +1   228     ;       以下是用户接口子程序
                +1   229     ;
                +1   230     
                +1   231     ;无子地址器件写字节数据
                +1   232     ;入口参数: 数据为ACC、器件从地址SLA              
                +1   233     ;占用:  A、R0、CY
01F3 C0E0       +1   234     IWRBYTE: PUSH   ACC
01F5 12014A     +1   235     IWBLOOP: LCALL  START                           ;起动总线
01F8 E550       +1   236              MOV    A,SLA  
01FA 1201A5     +1   237              LCALL  WRBYTE                          ;发送器件从地址 
01FD 120190     +1   238              LCALL  CACK
0200 30100C     +1   239              JNB    ACK,RETWRB                      ;无应答则跳转
0203 D0E0       +1   240              POP    ACC                             ;写数据
0205 1201A5     +1   241              LCALL  WRBYTE
0208 120190     +1   242              LCALL  CACK
020B 12015F     +1   243              LCALL  STOP
020E 22         +1   244              RET
020F D0E0       +1   245     RETWRB:  POP    ACC
0211 12015F     +1   246              LCALL  STOP
0214 22         +1   247              RET
                +1   248     
                +1   249     ;无子地址器件读字节数据
                +1   250     ;入口参数: 器件从地址SLA
                +1   251     ;出口参数: 数据为ACC    
                +1   252     ;占用: A 、R0、R2 、CY
0215 12014A     +1   253     IRDBYTE: LCALL  START
A51 MACRO ASSEMBLER  EX                                                                   11/07/2006 08:35:29 PAGE     5

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

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

                +1   384     
                +1   385     
                +1   386     
                +1   387     
                +1   388     
                +1   389     
                     390             END
                             
A51 MACRO ASSEMBLER  EX                                                                   11/07/2006 08:35:29 PAGE     8

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   0190H   A   
CEND . . . . . . .  C ADDR   01A0H   A   
DELAY. . . . . . .  C ADDR   0135H   A   
DELAY1 . . . . . .  C ADDR   0145H   A   
IRDBYTE. . . . . .  C ADDR   0215H   A   
IRDNBYTE . . . . .  C ADDR   025AH   A   
IRDNBYTEEXT. . . .  C ADDR   02BAH   A   
IWBLOOP. . . . . .  C ADDR   01F5H   A   
IWRBYTE. . . . . .  C ADDR   01F3H   A   
IWRNBYTE . . . . .  C ADDR   022EH   A   
IWRNBYTEEXT. . . .  C ADDR   0296H   A   
MACK . . . . . . .  C ADDR   0170H   A   
MAIN . . . . . . .  C ADDR   0100H   A   
MAINLOOP . . . . .  C ADDR   0124H   A   
MIN. . . . . . . .  C ADDR   0137H   A   
MNACK. . . . . . .  C ADDR   0180H   A   
MRD. . . . . . . .  N NUMB   0049H   A   
MTD. . . . . . . .  N NUMB   0040H   A   
NUMBYTE. . . . . .  D ADDR   0052H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
PCF8563. . . . . .  N NUMB   00A2H   A   
RDBYTE . . . . . .  C ADDR   01CCH   A   
RDN1 . . . . . . .  C ADDR   0283H   A   
RDNE1. . . . . . .  C ADDR   02CDH   A   
RETRDB . . . . . .  C ADDR   022AH   A   
RETRDN . . . . . .  C ADDR   028CH   A   
RETRDNE. . . . . .  C ADDR   02D6H   A   
RETWRB . . . . . .  C ADDR   020FH   A   
RETWRN . . . . . .  C ADDR   0256H   A   
RETWRNE. . . . . .  C ADDR   02B6H   A   
RLP. . . . . . . .  C ADDR   01CEH   A   
SACK . . . . . . .  C ADDR   0290H   A   
SACKE. . . . . . .  C ADDR   02DAH   A   
SCL. . . . . . . .  B ADDR   0090H.6 A   
SDA. . . . . . . .  B ADDR   0090H.7 A   
SLA. . . . . . . .  D ADDR   0050H   A   
SP . . . . . . . .  D ADDR   0081H   A   
START. . . . . . .  C ADDR   014AH   A   
STOP . . . . . . .  C ADDR   015FH   A   
SUBA . . . . . . .  D ADDR   0051H   A   
WLP. . . . . . . .  C ADDR   01A7H   A   
WLP1 . . . . . . .  C ADDR   01ACH   A   
WR0. . . . . . . .  C ADDR   01BEH   A   
WR1. . . . . . . .  C ADDR   01B0H   A   
WRBYTE . . . . . .  C ADDR   01A5H   A   
WRDA . . . . . . .  C ADDR   0249H   A   
WRDAE. . . . . . .  C ADDR   02A9H   A   
YS500. . . . . . .  C ADDR   013AH   A   
YS500US. . . . . .  C ADDR   0140H   A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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