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

📄 main.lst

📁 HT单片机模拟I2C通讯
💻 LST
字号:
文件:MAIN.c       盛群编译器版本 2.86 页次1



;  16: {

;  19: 	uint8 wr_data[10] = {0x12,0x20,0x28,0xfe,0x16,0x45,0x98,0x73,0x55,0x01};
  19  0000              L2 .SECTION INPAGE'CODE'
  19  0000              l_2:
  19  0000  0086        MOV [06h],A
  19  0001              _2:
  19  0001  0912        RET A,18
  19  0002  0920        RET A,32
  19  0003  0928        RET A,40
  19  0004  09FE        RET A,254
  19  0005  0916        RET A,22
  19  0006  0945        RET A,69
  19  0007  0998        RET A,152
  19  0008  0973        RET A,115
  19  0009  0955        RET A,85
  19  000A  0901        RET A,1
  19  000B              __acsr EQU [023H]
  19  000B              __adcr EQU [022H]
  19  000B              __adrh EQU [021H]
  19  000B              __adrl EQU [020H]
  19  000B              __pwm EQU [01aH]
  19  000B              __pdc EQU [019H]
  19  000B              __pd EQU [018H]
  19  000B              __pbc EQU [015H]
  19  000B              __pb EQU [014H]
  19  000B              __pac EQU [013H]
  19  000B              __pa EQU [012H]
  19  000B              __tmrc EQU [0eH]
  19  000B              __tmr EQU [0dH]
  19  000B              __intc EQU [0bH]
  19  000B              __status EQU [0aH]
  19  000B              __tblh EQU [08H]
  19  000B              __tblp EQU [07H]
  19  000B              __pcl EQU [06H]
  19  000B              __acc EQU [05H]
  19  000B              __mp EQU [01H]
  19  000B              __iar EQU [00H]
  19  0000              @MAIN .SECTION 'CODE'
  19  0000              _main PROC
  19  0000              begin:
  19  0000  0F0A        MOV A,10
  19  0001  0080     E  MOV RH,A
  19  0002  0F00     R  MOV A,OFFSET CR5
  19  0003  0081        MOV [01H],A
  19  0004  0F01        MOV A,1
  19  0005  0B00     R  ADD A,OFFSET l_2
  19  0006  0080     E  MOV T2,A
  19  0007              ASB32:
  19  0007  0700     E  MOV A,T2
  19  0008  2000     R  CALL l_2
  19  0009  0080        MOV [00H],A
  19  000A  1481        INC [01H]
  19  000B  1480     E  INC T2
  19  000C  1780     E  SDZ RH
  19  000D  2800     R  JMP ASB32
文件:MAIN.C       盛群编译器版本 2.86 页次2
文件:MAIN.c       盛群编译器版本 2.86 页次2 



;  20: 	addr = 0x20;
  20  000E  0F20        MOV A,020h
  20  000F  0080     R  MOV CR4,A

;  21:     Init();
  21  0010  2000     E  CALL _Init
  21  0011  2800     R  JMP L4
  21  0012              L3:

;  24: 		I2C_Write_N(10,addr,wr_data);
  24  0012  0F0A        MOV A,0ah
  24  0013  0080     E  MOV I2C_Write_N0,A
  24  0014  0700     R  MOV A,CR4
  24  0015  0080     E  MOV I2C_Write_N1,A
  24  0016  0F00     R  MOV A,OFFSET CR5
  24  0017  0080     E  MOV I2C_Write_N2,A
  24  0018  2000     E  CALL _I2C_Write_N

;  25: 		for(i=0; i<10; i++)
  25  0019  1F00     R  CLR CR1
  25  001A  2800     R  JMP L9
  25  001B              L6:

;  27: 			rd_data[i] = 0x00;
  27  001B  0700     R  MOV A,CR1
  27  001C  0B00     R  ADD A,OFFSET CR3
  27  001D  0080     R  MOV b0_1,A
  27  001E  0700     R  MOV A,b0_1
  27  001F  0081        MOV [01H],A
  27  0020  0F00        MOV A,00h
  27  0021  0080        MOV [00H],A
  27  0022              L7:

;  25: 		for(i=0; i<10; i++)
  25  0022  1480     R  INC CR1
  25  0023              L9:
  25  0023  0700     R  MOV A,CR1
  25  0024  0A0A        SUB A,0ah
  25  0025  380A        SNZ [0ah].0
  25  0026  2800     R  JMP L6

;  29: 		I2C_Read_N(10,addr,rd_data);
  29  0027  0F0A        MOV A,0ah
  29  0028  0080     E  MOV I2C_Read_N0,A
  29  0029  0700     R  MOV A,CR4
  29  002A  0080     E  MOV I2C_Read_N1,A
  29  002B  0F00     R  MOV A,OFFSET CR3
  29  002C  0080     E  MOV I2C_Read_N2,A
  29  002D  2000     E  CALL _I2C_Read_N

;  33: 		for(i=0; i<10; i++)
  33  002E  1F00     R  CLR CR1
  33  002F  2800     R  JMP L13
  33  0030              L10:

;  35:         	I2C_Start();
  35  0030  2000     E  CALL _I2C_Start

;  36:         	I2C_Write_Byte(0xa0);               /*写控制字*/
文件:MAIN.c       盛群编译器版本 2.86 页次3 

  36  0031  0FA0        MOV A,0a0h
  36  0032  0080     E  MOV I2C_Write_Byte0,A
文件:MAIN.C       盛群编译器版本 2.86 页次3

  36  0033  2000     E  CALL _I2C_Write_Byte

;  37:         	ack = I2C_Ack();                    /*ACK*/
  37  0034  2000     E  CALL _I2C_Ack
  37  0035  0080     R  MOV b0_1,A
  37  0036  0700     R  MOV A,b0_1
  37  0037  1F00     R  CLR b0_1
  37  0038  1085        SZ [05H]
  37  0039  3000     R  SET b0_1.0
  37  003A  3400     R  CLR CR2
  37  003B  1080     R  SZ b0_1
  37  003C  3000     R  SET CR2

;  38:         	if(!ack)
  38  003D  3C00     R  SZ CR2
  38  003E  2800     R  JMP L14

;  40:         	    I2C_Write_Byte(addr+i);           /*写地址*/
  40  003F  0700     R  MOV A,CR4
  40  0040  0300     R  ADD A,CR1
  40  0041  0080     R  MOV b0_1,A
  40  0042  0700     R  MOV A,b0_1
  40  0043  0080     E  MOV I2C_Write_Byte0,A
  40  0044  2000     E  CALL _I2C_Write_Byte

;  41:         	    ack = I2C_Ack();                /*ACK*/
  41  0045  2000     E  CALL _I2C_Ack
  41  0046  0080     R  MOV b0_1,A
  41  0047  0700     R  MOV A,b0_1
  41  0048  1F00     R  CLR b0_1
  41  0049  1085        SZ [05H]
  41  004A  3000     R  SET b0_1.0
  41  004B  3400     R  CLR CR2
  41  004C  1080     R  SZ b0_1
  41  004D  3000     R  SET CR2

;  42:         	    if(!ack)
  42  004E  3C00     R  SZ CR2
  42  004F  2800     R  JMP L16

;  44:         	        I2C_Write_Byte(wr_data[i]);       /*写数据*/
  44  0050  0700     R  MOV A,CR1
  44  0051  0B00     R  ADD A,OFFSET CR5
  44  0052  0080     R  MOV b0_1,A
  44  0053  0700     R  MOV A,b0_1
  44  0054  0081        MOV [01H],A
  44  0055  0700        MOV A,[00H]
  44  0056  0080     R  MOV b0_1,A
  44  0057  0700     R  MOV A,b0_1
  44  0058  0080     E  MOV I2C_Write_Byte0,A
  44  0059  2000     E  CALL _I2C_Write_Byte

;  45:         	        ack = I2C_Ack();            /*ACK*/
  45  005A  2000     E  CALL _I2C_Ack
  45  005B  0080     R  MOV b0_1,A
  45  005C  0700     R  MOV A,b0_1
文件:MAIN.c       盛群编译器版本 2.86 页次4 

  45  005D  1F00     R  CLR b0_1
  45  005E  1085        SZ [05H]
  45  005F  3000     R  SET b0_1.0
  45  0060  3400     R  CLR CR2
  45  0061  1080     R  SZ b0_1
  45  0062  3000     R  SET CR2

;  46:         	        I2C_Stop();
  46  0063  2000     E  CALL _I2C_Stop
  46  0064              L16:
文件:MAIN.C       盛群编译器版本 2.86 页次4

  46  0064              L14:
  46  0064              L11:

;  33: 		for(i=0; i<10; i++)
  33  0064  1480     R  INC CR1
  33  0065              L13:
  33  0065  0700     R  MOV A,CR1
  33  0066  0A0A        SUB A,0ah
  33  0067  380A        SNZ [0ah].0
  33  0068  2800     R  JMP L10

;  52: 		for(i=0; i<10; i++)
  52  0069  1F00     R  CLR CR1
  52  006A  2800     R  JMP L21
  52  006B              L18:

;  54: 			rd_data[i] = 0x00;
  54  006B  0700     R  MOV A,CR1
  54  006C  0B00     R  ADD A,OFFSET CR3
  54  006D  0080     R  MOV b0_1,A
  54  006E  0700     R  MOV A,b0_1
  54  006F  0081        MOV [01H],A
  54  0070  0F00        MOV A,00h
  54  0071  0080        MOV [00H],A
  54  0072              L19:

;  52: 		for(i=0; i<10; i++)
  52  0072  1480     R  INC CR1
  52  0073              L21:
  52  0073  0700     R  MOV A,CR1
  52  0074  0A0A        SUB A,0ah
  52  0075  380A        SNZ [0ah].0
  52  0076  2800     R  JMP L18

;  58: 		for(i=0; i<10; i++)
  58  0077  1F00     R  CLR CR1
  58  0078  2800     R  JMP L25
  58  0079              L22:

;  60: 			I2C_Start();
  60  0079  2000     E  CALL _I2C_Start

;  61: 			I2C_Write_Byte(0xa0);               /*写控制字*/
  61  007A  0FA0        MOV A,0a0h
  61  007B  0080     E  MOV I2C_Write_Byte0,A
  61  007C  2000     E  CALL _I2C_Write_Byte

;  62: 			ack = I2C_Ack();                    /*ACK*/
文件:MAIN.c       盛群编译器版本 2.86 页次5 

  62  007D  2000     E  CALL _I2C_Ack
  62  007E  0080     R  MOV b0_1,A
  62  007F  0700     R  MOV A,b0_1
  62  0080  1F00     R  CLR b0_1
  62  0081  1085        SZ [05H]
  62  0082  3000     R  SET b0_1.0
  62  0083  3400     R  CLR CR2
  62  0084  1080     R  SZ b0_1
  62  0085  3000     R  SET CR2

;  63: 			if(!ack)
  63  0086  3C00     R  SZ CR2
  63  0087  2800     R  JMP L26
文件:MAIN.C       盛群编译器版本 2.86 页次5


;  65: 				I2C_Write_Byte(addr+i);          /*写地址*/
  65  0088  0700     R  MOV A,CR4
  65  0089  0300     R  ADD A,CR1
  65  008A  0080     R  MOV b0_1,A
  65  008B  0700     R  MOV A,b0_1
  65  008C  0080     E  MOV I2C_Write_Byte0,A
  65  008D  2000     E  CALL _I2C_Write_Byte

;  66: 				ack = I2C_Ack();                /*ACK*/
  66  008E  2000     E  CALL _I2C_Ack
  66  008F  0080     R  MOV b0_1,A
  66  0090  0700     R  MOV A,b0_1
  66  0091  1F00     R  CLR b0_1
  66  0092  1085        SZ [05H]
  66  0093  3000     R  SET b0_1.0
  66  0094  3400     R  CLR CR2
  66  0095  1080     R  SZ b0_1
  66  0096  3000     R  SET CR2

;  67: 				if(!ack)
  67  0097  3C00     R  SZ CR2
  67  0098  2800     R  JMP L28

;  69: 					I2C_Start();
  69  0099  2000     E  CALL _I2C_Start

;  70: 					I2C_Write_Byte(0xa1);       /*写控制字读取当前地址数据*/
  70  009A  0FA1        MOV A,0a1h
  70  009B  0080     E  MOV I2C_Write_Byte0,A
  70  009C  2000     E  CALL _I2C_Write_Byte

;  71: 					ack = I2C_Ack();            /*ACK*/
  71  009D  2000     E  CALL _I2C_Ack
  71  009E  0080     R  MOV b0_1,A
  71  009F  0700     R  MOV A,b0_1
  71  00A0  1F00     R  CLR b0_1
  71  00A1  1085        SZ [05H]
  71  00A2  3000     R  SET b0_1.0
  71  00A3  3400     R  CLR CR2
  71  00A4  1080     R  SZ b0_1
  71  00A5  3000     R  SET CR2

;  72: 					if(!ack)
  72  00A6  3C00     R  SZ CR2
文件:MAIN.c       盛群编译器版本 2.86 页次6 

  72  00A7  2800     R  JMP L30

;  74: 						rd_data[i] = I2C_Read_Byte();
  74  00A8  2000     E  CALL _I2C_Read_Byte
  74  00A9  0080     R  MOV b0_1,A
  74  00AA  0700     R  MOV A,CR1
  74  00AB  0B00     R  ADD A,OFFSET CR3
  74  00AC  0080     R  MOV b1_1,A
  74  00AD  0700     R  MOV A,b1_1
  74  00AE  0081        MOV [01H],A
  74  00AF  0700     R  MOV A,b0_1
  74  00B0  0080        MOV [00H],A

;  75: 						I2C_Stop();
  75  00B1  2000     E  CALL _I2C_Stop
  75  00B2              L30:
  75  00B2              L28:
  75  00B2              L26:
  75  00B2              L23:

;  58: 		for(i=0; i<10; i++)
文件:MAIN.C       盛群编译器版本 2.86 页次6

  58  00B2  1480     R  INC CR1
  58  00B3              L25:
  58  00B3  0700     R  MOV A,CR1
  58  00B4  0A0A        SUB A,0ah
  58  00B5  380A        SNZ [0ah].0
  58  00B6  2800     R  JMP L22
  58  00B7              L4:

;  22:     while(1)
  22  00B7  2800     R  JMP L3
  22  00B8              L1:

;  81: }
  81  00B8  2800     R  JMP $
  81  0000  00          LOCAL b0_1 DB ?
  81  0001  00          LOCAL b1_1 DB ?

;  17:     uint8 i,rd_data[10],addr;
  17  0002  00          LOCAL CR1 DB ? ; i

;  18:     bit ack;
  18  0003  00          LOCAL CR2 DBIT ; ack

;  17:     uint8 i,rd_data[10],addr;
  17  0004  000A[       LOCAL CR3 DB 10 DUP (?) ; rd_data
            00
            ]
  17  000E  00          LOCAL CR4 DB ? ; addr

;  19: 	uint8 wr_data[10] = {0x12,0x20,0x28,0xfe,0x16,0x45,0x98,0x73,0x55,0x01};
  19  000F  000A[       LOCAL CR5 DB 10 DUP (?) ; wr_data
            00
            ]
  19  00B9              _main ENDP
  19  00B9              EXTERN I2C_Write_Byte0:BYTE
  19  00B9              EXTERN I2C_Read_N2:BYTE
  19  00B9              EXTERN I2C_Read_N1:BYTE
文件:MAIN.c       盛群编译器版本 2.86 页次7 

  19  00B9              EXTERN I2C_Read_N0:BYTE
  19  00B9              EXTERN I2C_Write_N2:BYTE
  19  00B9              EXTERN I2C_Write_N1:BYTE
  19  00B9              EXTERN I2C_Write_N0:BYTE
  19  00B9              EXTERN _I2C_Read_N:NEAR
  19  00B9              EXTERN _I2C_Write_N:NEAR
  19  00B9              EXTERN _I2C_Ack:NEAR
  19  00B9              EXTERN _I2C_Read_Byte:NEAR
  19  00B9              EXTERN _I2C_Write_Byte:NEAR
  19  00B9              EXTERN _I2C_Stop:NEAR
  19  00B9              EXTERN _I2C_Start:NEAR
  19  00B9              EXTERN _Init:NEAR

;  15: void main(void)
  15  0000              STARTSEC .SECTION 'CODE'
  15  0000              STARTUP:
  15  0000  0003        RET
  15  0001              EXTERN RH:BYTE
  15  0001              EXTERN T2:BYTE
  15  0000              @CODE .SECTION AT 0 'CODE'
  15  0000  2800     R  JMP begin
文件:MAIN.C       盛群编译器版本 2.86 页次7

  15  0001              @DUMMY PROC
  15  0001  2000     R  CALL _main
  15  0002              @DUMMY ENDP
  15  0002              ROMBANK 0 @DUMMYNOP 
  15  0000              @DUMMYNOP .SECTION AT 07ffh 'CODE'
  15  0000  0000        nop


        0 Errors

⌨️ 快捷键说明

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