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

📄 eeprom.lst

📁 ATmega16应用例子
💻 LST
📖 第 1 页 / 共 3 页
字号:
  t                    --> Y+0
  dec                  --> R20
    00D6 940E023C  CALL	push_gset1
    00D8 2F40      MOV	R20,R16
    00D9 9722      SBIW	R28,2
(0156) /*--------------------------------------------------------------------
(0157) 函数全称:十进制强制转换为十六进制
(0158) 函数功能:
(0159) 注意事项:无
(0160) 提示说明:调用changeDToH(33),return 0x33
(0161) 输    入:
(0162) 返    回:uint8 hex
(0163) --------------------------------------------------------------------*/
(0164) uint8 changeDToH(uint8 dec)
(0165) {
(0166)     uint8 hex;
(0167)     uint8 t[2];
(0168)     t[1]=dec/10;
    00DA E01A      LDI	R17,0xA
    00DB 2F04      MOV	R16,R20
    00DC 940E01F3  CALL	div8u
    00DE 8309      STD	Y+1,R16
(0169)     t[0]=dec%10;
    00DF E01A      LDI	R17,0xA
    00E0 2F04      MOV	R16,R20
    00E1 940E01F1  CALL	mod8u
    00E3 8308      STD	Y+0,R16
(0170)     hex=t[1]*16+t[0];
    00E4 8029      LDD	R2,Y+1
    00E5 E180      LDI	R24,0x10
    00E6 9D82      MUL	R24,R2
    00E7 2D40      MOV	R20,R0
    00E8 0F40      ADD	R20,R16
(0171)     return hex;
    00E9 2F04      MOV	R16,R20
    00EA 9622      ADIW	R28,2
    00EB 940E023F  CALL	pop_gset1
    00ED 9508      RET
_converseDToH:
  hex                  --> R20
  t                    --> Y+0
  dec                  --> R20
    00EE 940E023C  CALL	push_gset1
    00F0 2F40      MOV	R20,R16
    00F1 9722      SBIW	R28,2
(0172) }
(0173) /*--------------------------------------------------------------------
(0174) 函数全称:十进制化为十六进制
(0175) 函数功能:
(0176) 注意事项:无
(0177) 提示说明:调用converseDToH(33),return 21
(0178) 输    入:
(0179) 返    回:uint8 hex
(0180) --------------------------------------------------------------------*/
(0181) uint8 converseDToH(uint8 dec)
(0182) {
(0183)     uint8 hex;
(0184)     uint8 t[2];
(0185)     t[1]=dec/16;
    00F2 2F84      MOV	R24,R20
    00F3 9582      SWAP	R24
    00F4 708F      ANDI	R24,0xF
    00F5 8389      STD	Y+1,R24
(0186)     t[0]=dec%16;
    00F6 E110      LDI	R17,0x10
    00F7 2F04      MOV	R16,R20
    00F8 940E01F1  CALL	mod8u
    00FA 8308      STD	Y+0,R16
(0187)     hex=t[1]*16+t[0];
    00FB 8029      LDD	R2,Y+1
    00FC E180      LDI	R24,0x10
    00FD 9D82      MUL	R24,R2
    00FE 2D40      MOV	R20,R0
    00FF 0F40      ADD	R20,R16
(0188)     return hex;
    0100 2F04      MOV	R16,R20
    0101 9622      ADIW	R28,2
    0102 940E023F  CALL	pop_gset1
    0104 9508      RET
_changeHToD:
  dec                  --> R20
  t                    --> Y+0
  hex                  --> R20
    0105 940E023C  CALL	push_gset1
    0107 2F40      MOV	R20,R16
    0108 9722      SBIW	R28,2
(0189) }
(0190) /*--------------------------------------------------------------------
(0191) 函数全称:十六进制强制转换为十进制
(0192) 函数功能:
(0193) 注意事项:无
(0194) 提示说明:调用changeHToD(0x33),return 33
(0195) 输    入:
(0196) 返    回:uint8 dec
(0197) --------------------------------------------------------------------*/
(0198) uint8 changeHToD(uint8 hex)
(0199) {
(0200)     uint8 dec;
(0201)     uint8 t[2];
(0202)     t[1]=hex/16;
    0109 2F84      MOV	R24,R20
    010A 9582      SWAP	R24
    010B 708F      ANDI	R24,0xF
    010C 8389      STD	Y+1,R24
(0203)     t[0]=hex%16;
    010D E110      LDI	R17,0x10
    010E 2F04      MOV	R16,R20
    010F 940E01F1  CALL	mod8u
    0111 8308      STD	Y+0,R16
(0204)     dec=t[1]*10+t[0];
    0112 8029      LDD	R2,Y+1
    0113 E08A      LDI	R24,0xA
    0114 9D82      MUL	R24,R2
    0115 2D40      MOV	R20,R0
    0116 0F40      ADD	R20,R16
(0205)     return dec;
    0117 2F04      MOV	R16,R20
    0118 9622      ADIW	R28,2
    0119 940E023F  CALL	pop_gset1
    011B 9508      RET
_converseHToD:
  dec                  --> R20
  t                    --> Y+0
  hex                  --> R20
    011C 940E023C  CALL	push_gset1
    011E 2F40      MOV	R20,R16
    011F 9722      SBIW	R28,2
(0206) }
(0207) /*--------------------------------------------------------------------
(0208) 函数全称:十六进制化为十进制
(0209) 函数功能:
(0210) 注意事项:无
(0211) 提示说明:调用converseHToD(21),return 33
(0212) 输    入:
(0213) 返    回:uint8 dec
(0214) --------------------------------------------------------------------*/
(0215) uint8 converseHToD(uint8 hex)
(0216) {
(0217)     uint8 dec;
(0218)     uint8 t[2];
(0219)     t[1]=hex/10;
    0120 E01A      LDI	R17,0xA
    0121 2F04      MOV	R16,R20
    0122 940E01F3  CALL	div8u
    0124 8309      STD	Y+1,R16
(0220)     t[0]=hex%10;
    0125 E01A      LDI	R17,0xA
    0126 2F04      MOV	R16,R20
    0127 940E01F1  CALL	mod8u
    0129 8308      STD	Y+0,R16
(0221)     dec=t[1]*16+t[0];
    012A 8029      LDD	R2,Y+1
    012B E180      LDI	R24,0x10
    012C 9D82      MUL	R24,R2
    012D 2D40      MOV	R20,R0
    012E 0F40      ADD	R20,R16
(0222)     return dec;
    012F 2F04      MOV	R16,R20
    0130 9622      ADIW	R28,2
    0131 940E023F  CALL	pop_gset1
    0133 9508      RET
_main:
  wrDat_               --> Y+10
  wrDat                --> R20
  rdDat_               --> Y+2
  i                    --> R20
    0134 9762      SBIW	R28,0x12
FILE: E:\ProductPro\M16SD\ICCAVR\EEPROM\EEPROM\EEPROM.C
(0001) #include<iom16v.h>
(0002) #include "E:\ICCAVR_H\CmmICC.H"
(0003) 
(0004) 
(0005) void main(void) 
(0006) {
(0007)  uint8 i;
(0008)  sint16 wrDat=0x55;
    0135 E545      LDI	R20,0x55
    0136 E050      LDI	R21,0
(0009)  uint8 wrDat_[]={1,2,3,4,5,6,7,8},rdDat_[8];
    0137 E584      LDI	R24,0x54
    0138 E090      LDI	R25,0
    0139 01FE      MOVW	R30,R28
    013A 963A      ADIW	R30,0xA
    013B E008      LDI	R16,0x8
    013C E010      LDI	R17,0
    013D 93FA      ST	R31,-Y
    013E 93EA      ST	R30,-Y
    013F 939A      ST	R25,-Y
    0140 938A      ST	R24,-Y
    0141 940E0284  CALL	asgncblk
(0010)  DDRD=0xFF;
    0143 EF8F      LDI	R24,0xFF
    0144 BB81      OUT	0x11,R24
(0011)  EEPROMwrite(0x01,wrDat);
    0145 019A      MOVW	R18,R20
    0146 E001      LDI	R16,1
    0147 E010      LDI	R17,0
    0148 940E02A4  CALL	_EEPROMwrite
(0012)  PORTD=EEPROMread(0x01);	
    014A E001      LDI	R16,1
    014B E010      LDI	R17,0
    014C 940E029D  CALL	_EEPROMread
    014E BB02      OUT	0x12,R16
(0013)  delay50ms(20);			
    014F E104      LDI	R16,0x14
    0150 E010      LDI	R17,0
    0151 DF0F      RCALL	_delay50ms
(0014)  EEPROMWriteBytes(1,wrDat_,8);
    0152 E088      LDI	R24,0x8
    0153 E090      LDI	R25,0
    0154 8399      STD	Y+1,R25
    0155 8388      STD	Y+0,R24
    0156 019E      MOVW	R18,R28
    0157 5F26      SUBI	R18,0xF6
    0158 4F3F      SBCI	R19,0xFF
    0159 E001      LDI	R16,1
    015A E010      LDI	R17,0
    015B 940E02D9  CALL	_EEPROMWriteBytes
(0015)  EEPROMReadBytes(1,rdDat_,8);
    015D E088      LDI	R24,0x8
    015E E090      LDI	R25,0
    015F 8399      STD	Y+1,R25
    0160 8388      STD	Y+0,R24
    0161 019E      MOVW	R18,R28
    0162 5F2E      SUBI	R18,0xFE
    0163 4F3F      SBCI	R19,0xFF
    0164 E001      LDI	R16,1
    0165 E010      LDI	R17,0
    0166 940E02B5  CALL	_EEPROMReadBytes
(0016)  for(i=0;i<7;i++)
    0168 2744      CLR	R20
    0169 C00C      RJMP	0x0176
(0017)  {
(0018)  delay50ms(20);	
    016A E104      LDI	R16,0x14
    016B E010      LDI	R17,0
    016C DEF4      RCALL	_delay50ms
(0019)   PORTD=rdDat_[i];
    016D 01CE      MOVW	R24,R28
    016E 9602      ADIW	R24,2
    016F 2FE4      MOV	R30,R20
    0170 27FF      CLR	R31
    0171 0FE8      ADD	R30,R24
    0172 1FF9      ADC	R31,R25
    0173 8020      LDD	R2,Z+0
    0174 BA22      OUT	0x12,R2
    0175 9543      INC	R20
    0176 3047      CPI	R20,7
    0177 F390      BCS	0x016A
(0020)   } 			
(0021)  while(1);
    0178 CFFF      RJMP	0x0178
(0022) }
FILE: <library>
    0179 9662      ADIW	R28,0x12
    017A 9508      RET
push_arg4:
    017B 933A      ST	R19,-Y
    017C 932A      ST	R18,-Y
push_arg2:
    017D 931A      ST	R17,-Y
    017E 930A      ST	R16,-Y
    017F 9508      RET
div32u:
    0180 94E8      BCLR	6
    0181 C001      RJMP	0x0183
mod32u:
    0182 9468      BSET	6
    0183 D02F      RCALL	long_div_prolog
    0184 24CC      CLR	R12
    0185 C008      RJMP	0x018E
div32s:
    0186 94E8      BCLR	6
    0187 C001      RJMP	0x0189
mod32s:
    0188 9468      BSET	6
    0189 D029      RCALL	long_div_prolog
    018A FD37      SBRC	R19,7
    018B D053      RCALL	neg_R16_R19
    018C FDB7      SBRC	R27,7
    018D D05A      RCALL	neg_R24_R27
    018E 2477      CLR	R7
    018F 2488      CLR	R8
    0190 2499      CLR	R9
    0191 24AA      CLR	R10
    0192 24BB      CLR	R11
    0193 D041      RCALL	tst_R16_R19
    0194 F0C1      BEQ	0x01AD
    0195 D044      RCALL	tst_R24_R27
    0196 F0B1      BEQ	0x01AD
    0197 E2E8      LDI	R30,0x28
    0198 0F00      LSL	R16
    0199 1F11      ROL	R17
    019A 1F22      ROL	R18
    019B 1F33      ROL	R19
    019C 1C77      ROL	R7
    019D 1C88      ROL	R8
    019E 1C99      ROL	R9
    019F 1CAA      ROL	R10
    01A0 1CBB      ROL	R11
    01A1 1688      CP	R8,R24
    01A2 0699      CPC	R9,R25
    01A3 06AA      CPC	R10,R26
    01A4 06BB      CPC	R11,R27
    01A5 F028      BCS	0x01AB
    01A6 1A88      SUB	R8,R24
    01A7 0A99      SBC	R9,R25
    01A8 0AAA      SBC	R10,R26
    01A9 0ABB      SBC	R11,R27
    01AA 9503      INC	R16
    01AB 95EA      DEC	R30
    01AC F759      BNE	0x0198
    01AD F426      BRTC	0x01B2
    01AE 2D08      MOV	R16,R8
    01AF 2D19      MOV	R17,R9
    01B0 2D2A      MOV	R18,R10
    01B1 2D3B      MOV	R19,R11
    01B2 C013      RJMP	long_div_epilog
long_div_prolog:
    01B3 927A      ST	R7,-Y
    01B4 928A      ST	R8,-Y
    01B5 929A      ST	R9,-Y
    01B6 92AA      ST	R10,-Y
    01B7 92BA      ST	R11,-Y
    01B8 92CA      ST	R12,-Y
    01B9 93EA      ST	R30,-Y
    01BA 938A      ST	R24,-Y
    01BB 939A      ST	R25,-Y
    01BC 93AA      ST	R26,-Y
    01BD 93BA      ST	R27,-Y

⌨️ 快捷键说明

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