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

📄 twi_master.lst

📁 atmega16 iic(twi)主从机通信 测试通过
💻 LST
📖 第 1 页 / 共 2 页
字号:
    00C0 01FA      MOVW	R30,R20
    00C1 8381      STD	Z+1,R24
(0013)   p[2]=(i%100)/10+48;
    00C2 E624      LDI	R18,0x64
    00C3 E030      LDI	R19,0
    00C4 018B      MOVW	R16,R22
    00C5 D06B      RCALL	mod16u
    00C6 E02A      LDI	R18,0xA
    00C7 E030      LDI	R19,0
    00C8 D06A      RCALL	div16u
    00C9 01C8      MOVW	R24,R16
    00CA 96C0      ADIW	R24,0x30
    00CB 01FA      MOVW	R30,R20
    00CC 8382      STD	Z+2,R24
(0014)   p[3]=(i%100)%10+48;
    00CD E624      LDI	R18,0x64
    00CE E030      LDI	R19,0
    00CF 018B      MOVW	R16,R22
    00D0 D060      RCALL	mod16u
    00D1 E02A      LDI	R18,0xA
    00D2 E030      LDI	R19,0
    00D3 D05D      RCALL	mod16u
    00D4 01C8      MOVW	R24,R16
    00D5 96C0      ADIW	R24,0x30
    00D6 01FA      MOVW	R30,R20
    00D7 8383      STD	Z+3,R24
(0015)  }
    00D8 D074      RCALL	pop_gset2
    00D9 9508      RET
(0016) /*          字符输出函数         */
(0017) void putchar(char c)
(0018)     {    
(0019)      while (!(UCSRA&(1<<UDRE)));
_putchar:
  c                    --> R16
    00DA 9B5D      SBIS	0x0B,5
    00DB CFFE      RJMP	_putchar
(0020)      UDR=c;    
    00DC B90C      OUT	0x0C,R16
(0021)     }
    00DD 9508      RET
(0022) /*          字符输入函数         */	
(0023) unsigned char getchar(void)
(0024)     {
(0025)      while(!(UCSRA& (1<<RXC)));
_getchar:
    00DE 9B5F      SBIS	0x0B,7
    00DF CFFE      RJMP	_getchar
(0026)      
(0027) 	 return UDR;
    00E0 B10C      IN	R16,0x0C
    00E1 9508      RET
_puts:
  s                    --> R20
    00E2 D06C      RCALL	push_gset1
    00E3 01A8      MOVW	R20,R16
(0028)     }   	
(0029) /*          字符串输出函数       */ 
(0030) void puts(char * s)
(0031)     {
    00E4 C005      RJMP	0x00EA
(0032)     while (*s)
(0033)         {
(0034)         putchar(*s);
    00E5 01FA      MOVW	R30,R20
    00E6 8100      LDD	R16,Z+0
    00E7 DFF2      RCALL	_putchar
(0035)         s++;
    00E8 5F4F      SUBI	R20,0xFF
    00E9 4F5F      SBCI	R21,0xFF
    00EA 01FA      MOVW	R30,R20
    00EB 8020      LDD	R2,Z+0
    00EC 2022      TST	R2
    00ED F7B9      BNE	0x00E5
(0036)         }	
(0037)     putchar(0x0a);//回车换行
    00EE E00A      LDI	R16,0xA
    00EF DFEA      RCALL	_putchar
(0038)     putchar(0x0d);
    00F0 E00D      LDI	R16,0xD
    00F1 DFE8      RCALL	_putchar
(0039)     
(0040)     }
    00F2 D05F      RCALL	pop_gset1
    00F3 9508      RET
_putstr:
  s                    --> R20
    00F4 D05A      RCALL	push_gset1
    00F5 01A8      MOVW	R20,R16
(0041) /*         不含回车换行的字符串输出函数      */ 
(0042) void putstr(char * s)
(0043)     {
    00F6 C005      RJMP	0x00FC
(0044)     while (*s)
(0045)         {
(0046)         putchar(*s);
    00F7 01FA      MOVW	R30,R20
    00F8 8100      LDD	R16,Z+0
    00F9 DFE0      RCALL	_putchar
(0047)         s++;
    00FA 5F4F      SUBI	R20,0xFF
    00FB 4F5F      SBCI	R21,0xFF
    00FC 01FA      MOVW	R30,R20
    00FD 8020      LDD	R2,Z+0
    00FE 2022      TST	R2
    00FF F7B9      BNE	0x00F7
(0048)         }	
(0049)     }   
    0100 D051      RCALL	pop_gset1
    0101 9508      RET
(0050) /*          UART初始化          	*/	
(0051) void uart_init(void)
(0052) {
(0053)  
(0054)  UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);;//允许发送和接收
_uart_init:
    0102 E988      LDI	R24,0x98
    0103 B98A      OUT	0x0A,R24
(0055)  UBRRL=47;  // 4M 25        8M 51    7.3728M 47
    0104 E28F      LDI	R24,0x2F
    0105 B989      OUT	0x09,R24
(0056)  UBRRH=0;  //       9600;   
    0106 2422      CLR	R2
    0107 BC20      OUT	0x20,R2
(0057)  UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位
    0108 E886      LDI	R24,0x86
    0109 BD80      OUT	0x20,R24
(0058) }
    010A 9508      RET
FILE: E:\atmega16子函数\TWI_master\delay.c
(0001) #include <iom8v.h>
(0002) 
(0003) void Delay_nus(unsigned int i) 
(0004) {
(0005)    for(;i>1;i--){;}
_Delay_nus:
  i                    --> R16
    010B C002      RJMP	0x010E
    010C 5001      SUBI	R16,1
    010D 4010      SBCI	R17,0
    010E E081      LDI	R24,1
    010F E090      LDI	R25,0
    0110 1780      CP	R24,R16
    0111 0791      CPC	R25,R17
    0112 F3C8      BCS	0x010C
(0006) }
    0113 9508      RET
_Delay_1ms:
  i                    --> R20
    0114 D03A      RCALL	push_gset1
(0007) void Delay_1ms(void) 
(0008) {unsigned i;
(0009)    for(i=1000;i>1;i--)
    0115 EE48      LDI	R20,0xE8
    0116 E053      LDI	R21,3
    0117 C005      RJMP	0x011D
(0010)    {Delay_nus(1);
    0118 E001      LDI	R16,1
    0119 E010      LDI	R17,0
    011A DFF0      RCALL	_Delay_nus
    011B 5041      SUBI	R20,1
    011C 4050      SBCI	R21,0
    011D E081      LDI	R24,1
    011E E090      LDI	R25,0
    011F 1784      CP	R24,R20
    0120 0795      CPC	R25,R21
    0121 F3B0      BCS	0x0118
(0011)      }
(0012) }
    0122 D02F      RCALL	pop_gset1
    0123 9508      RET
_Delay_nms:
  i                    --> R20
    0124 D02A      RCALL	push_gset1
    0125 01A8      MOVW	R20,R16
(0013) void Delay_nms(unsigned int  i) 
(0014) {
(0015)    for(;i>1;i--)
    0126 C003      RJMP	0x012A
(0016)    {Delay_1ms();}
    0127 DFEC      RCALL	_Delay_1ms
    0128 5041      SUBI	R20,1
    0129 4050      SBCI	R21,0
    012A E081      LDI	R24,1
    012B E090      LDI	R25,0
    012C 1784      CP	R24,R20
    012D 0795      CPC	R25,R21
    012E F3C0      BCS	0x0127
(0017) }
FILE: <library>
    012F D022      RCALL	pop_gset1
    0130 9508      RET
mod16u:
    0131 9468      BSET	6
    0132 C001      RJMP	xdiv16u
div16u:
    0133 94E8      BCLR	6
xdiv16u:
    0134 92EA      ST	R14,-Y
    0135 92FA      ST	R15,-Y
    0136 938A      ST	R24,-Y
    0137 24EE      CLR	R14
    0138 24FF      CLR	R15
    0139 E180      LDI	R24,0x10
    013A 0F00      LSL	R16
    013B 1F11      ROL	R17
    013C 1CEE      ROL	R14
    013D 1CFF      ROL	R15
    013E 16E2      CP	R14,R18
    013F 06F3      CPC	R15,R19
    0140 F018      BCS	0x0144
    0141 1AE2      SUB	R14,R18
    0142 0AF3      SBC	R15,R19
    0143 9503      INC	R16
    0144 958A      DEC	R24
    0145 F7A1      BNE	0x013A
    0146 F416      BRTC	0x0149
    0147 2D0E      MOV	R16,R14
    0148 2D1F      MOV	R17,R15
    0149 9189      LD	R24,Y+
    014A 90F9      LD	R15,Y+
    014B 90E9      LD	R14,Y+
    014C 9508      RET
pop_gset2:
    014D E0E2      LDI	R30,2
    014E C004      RJMP	pop
push_gset1:
    014F 935A      ST	R21,-Y
    0150 934A      ST	R20,-Y
    0151 9508      RET
pop_gset1:
    0152 E0E1      LDI	R30,1
pop:
    0153 9149      LD	R20,Y+
    0154 9159      LD	R21,Y+
    0155 FDE0      SBRC	R30,0
    0156 9508      RET
    0157 9169      LD	R22,Y+
    0158 9179      LD	R23,Y+
    0159 FDE1      SBRC	R30,1
    015A 9508      RET
    015B 90A9      LD	R10,Y+
    015C 90B9      LD	R11,Y+
    015D FDE2      SBRC	R30,2
    015E 9508      RET
    015F 90C9      LD	R12,Y+
    0160 90D9      LD	R13,Y+
    0161 FDE3      SBRC	R30,3
    0162 9508      RET
    0163 90E9      LD	R14,Y+
    0164 90F9      LD	R15,Y+
    0165 9508      RET
push_gset2:
    0166 937A      ST	R23,-Y
    0167 936A      ST	R22,-Y
    0168 CFE6      RJMP	push_gset1
asgncblk:
    0169 93AA      ST	R26,-Y
    016A 93BA      ST	R27,-Y
    016B 93EA      ST	R30,-Y
    016C 93FA      ST	R31,-Y
    016D 920A      ST	R0,-Y
    016E 81AF      LDD	R26,Y+7
    016F 85B8      LDD	R27,Y+8
    0170 81ED      LDD	R30,Y+5
    0171 81FE      LDD	R31,Y+6
    0172 3000      CPI	R16,0
    0173 0701      CPC	R16,R17
    0174 F031      BEQ	0x017B
    0175 95C8      LPM
    0176 920D      ST	R0,X+
    0177 9631      ADIW	R30,1
    0178 5001      SUBI	R16,1
    0179 4010      SBCI	R17,0
    017A CFF7      RJMP	0x0172
    017B 9009      LD	R0,Y+
    017C 91F9      LD	R31,Y+
    017D 91E9      LD	R30,Y+
    017E 91B9      LD	R27,Y+
    017F 91A9      LD	R26,Y+
    0180 9624      ADIW	R28,4
    0181 9508      RET

⌨️ 快捷键说明

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