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

📄 light.lst

📁 详细介绍M8两版间通讯
💻 LST
📖 第 1 页 / 共 3 页
字号:
    01F0 718F      ANDI	R24,0x1F
    01F1 9380008B  STS	charIndex,R24
(0136) 	 	 	 	 	cDataBuff[charIndex--]=0x0a;//间隔空格符
    01F3 2E28      MOV	R2,R24
    01F4 2433      CLR	R3
    01F5 5081      SUBI	R24,1
    01F6 9380008B  STS	charIndex,R24
    01F8 E681      LDI	R24,0x61
    01F9 E090      LDI	R25,0
    01FA 2DE2      MOV	R30,R2
    01FB 27FF      CLR	R31
    01FC 0FE8      ADD	R30,R24
    01FD 1FF9      ADC	R31,R25
    01FE E08A      LDI	R24,0xA
    01FF 8380      STD	Z+0,R24
(0137) 	 	 	 	 	charTemp=charData%10;
    0200 E01A      LDI	R17,0xA
    0201 9100008E  LDS	R16,charData
    0203 D0C6      RCALL	mod8u
    0204 2F40      MOV	R20,R16
(0138) 	 	 	 	 	charIndex&=0b00011111;//检查charIndex,防止数据超出0~31范围
    0205 9180008B  LDS	R24,charIndex
    0207 718F      ANDI	R24,0x1F
    0208 9380008B  STS	charIndex,R24
(0139) 	 	 	 	 	cDataBuff[charIndex--]=charTemp;
    020A 2E28      MOV	R2,R24
    020B 2433      CLR	R3
    020C 5081      SUBI	R24,1
    020D 9380008B  STS	charIndex,R24
    020F E681      LDI	R24,0x61
    0210 E090      LDI	R25,0
    0211 2DE2      MOV	R30,R2
    0212 27FF      CLR	R31
    0213 0FE8      ADD	R30,R24
    0214 1FF9      ADC	R31,R25
    0215 8340      STD	Z+0,R20
(0140) 	 	 	 	 	charData/=10;
    0216 E01A      LDI	R17,0xA
    0217 9100008E  LDS	R16,charData
    0219 D0B2      RCALL	div8u
    021A 9300008E  STS	charData,R16
(0141) 	 	 	 	 	charTemp=charData%10;
    021C E01A      LDI	R17,0xA
    021D D0AC      RCALL	mod8u
    021E 2F40      MOV	R20,R16
(0142) 	 	 	 	 	charIndex&=0b00011111;//检查charIndex,防止数据超出0~31范围
    021F 9180008B  LDS	R24,charIndex
    0221 718F      ANDI	R24,0x1F
    0222 9380008B  STS	charIndex,R24
(0143) 	 	 	 	 	cDataBuff[charIndex--]=charTemp;
    0224 2E28      MOV	R2,R24
    0225 2433      CLR	R3
    0226 5081      SUBI	R24,1
    0227 9380008B  STS	charIndex,R24
    0229 E681      LDI	R24,0x61
    022A E090      LDI	R25,0
    022B 2DE2      MOV	R30,R2
    022C 27FF      CLR	R31
    022D 0FE8      ADD	R30,R24
    022E 1FF9      ADC	R31,R25
    022F 8340      STD	Z+0,R20
(0144) 	 	 	 	 	charData/=10;
    0230 E01A      LDI	R17,0xA
    0231 9100008E  LDS	R16,charData
    0233 D098      RCALL	div8u
    0234 9300008E  STS	charData,R16
(0145) 	 	 	 	 	cDataBuff[charIndex]=charData;
    0236 E681      LDI	R24,0x61
    0237 E090      LDI	R25,0
    0238 91E0008B  LDS	R30,charIndex
    023A 27FF      CLR	R31
    023B 0FE8      ADD	R30,R24
    023C 1FF9      ADC	R31,R25
    023D 2E20      MOV	R2,R16
    023E 8220      STD	Z+0,R2
(0146) 	 	 	 	 	charIndex+=4;//指向末尾空位
    023F 9180008B  LDS	R24,charIndex
    0241 5F8C      SUBI	R24,0xFC
    0242 9380008B  STS	charIndex,R24
(0147) 	 	 	 	 }
(0148) 	 	 	 	break;
(0149) 	 	 	 }
(0150) 	 	 }
(0151) 	 	break;
    0244 C079      RJMP	0x02BE
(0152) 	 	case SR_STOP_RESTART://收到STOP信号或者RESTART
(0153) 	 	 {
(0154) 	 	 	MT_ACK;
    0245 EC85      LDI	R24,0xC5
    0246 BF86      OUT	0x36,R24
(0155) 	 	 	}
(0156) 	 	break;
    0247 C076      RJMP	0x02BE
(0157) 	 	case ST_SLA_ACK://收到读信号,将(最后一个-NT_NACK、普通数据-MT_ACK)数据发送出去
(0158) 	 	 {
(0159) 	 	 	/*charTemp=rom_read((unsigned int)charAddr);
(0160) 	 	 	TWDR=charTemp;*/
(0161) 	 	 	TWDR=0xdd;//测试用,发送测试数据。MEGA8的EEPROM的读速度跟不上TWI
    0248 ED8D      LDI	R24,0xDD
    0249 B983      OUT	0x03,R24
(0162) 	 	 	MT_ACK;
    024A EC85      LDI	R24,0xC5
    024B BF86      OUT	0x36,R24
(0163) 	 	 	}
(0164) 	 	break;
    024C C071      RJMP	0x02BE
(0165) 	 	case ST_DATA_ACK://主机要求继续发送数据
(0166) 	 	 {
(0167) 	 	 	TWDR=cDataBuff[++charAddr];
    024D 9180008D  LDS	R24,charAddr
    024F 5F8F      SUBI	R24,0xFF
    0250 2E28      MOV	R2,R24
    0251 9220008D  STS	charAddr,R2
    0253 E681      LDI	R24,0x61
    0254 E090      LDI	R25,0
    0255 2DE2      MOV	R30,R2
    0256 27FF      CLR	R31
    0257 0FE8      ADD	R30,R24
    0258 1FF9      ADC	R31,R25
    0259 8020      LDD	R2,Z+0
    025A B823      OUT	0x03,R2
(0168) 	 	 	MT_ACK;
    025B EC85      LDI	R24,0xC5
    025C BF86      OUT	0x36,R24
(0169) 	 	 	}
(0170) 	 	break;
    025D C060      RJMP	0x02BE
(0171) 	 	case ST_DATA_NOACK://数据发送完毕
(0172) 	 	 {
(0173) 	 	 	MT_ACK;
    025E EC85      LDI	R24,0xC5
    025F BF86      OUT	0x36,R24
(0174) 	 	 	}
(0175) 	 	break;
    0260 C05D      RJMP	0x02BE
(0176) 		default://出现异常中断时,通过MEGA8 2#显示
(0177) 		 {
(0178) 		 	charData=TWI_STATE;
    0261 9360008E  STS	charData,R22
(0179)  	 	 	charIndex+=3;
    0263 9180008B  LDS	R24,charIndex
    0265 5F8D      SUBI	R24,0xFD
    0266 9380008B  STS	charIndex,R24
(0180)  	 	 	charIndex&=0b00011111;//检查charIndex,防止数据超出0~31范围
    0268 718F      ANDI	R24,0x1F
    0269 9380008B  STS	charIndex,R24
(0181)  	 	 	cDataBuff[charIndex--]=0x0b;//间隔空格符
    026B 2E28      MOV	R2,R24
    026C 2433      CLR	R3
    026D 5081      SUBI	R24,1
    026E 9380008B  STS	charIndex,R24
    0270 E681      LDI	R24,0x61
    0271 E090      LDI	R25,0
    0272 2DE2      MOV	R30,R2
    0273 27FF      CLR	R31
    0274 0FE8      ADD	R30,R24
    0275 1FF9      ADC	R31,R25
    0276 E08B      LDI	R24,0xB
    0277 8380      STD	Z+0,R24
(0182)  	 	 	charTemp=charData%10;
    0278 E01A      LDI	R17,0xA
    0279 9100008E  LDS	R16,charData
    027B D04E      RCALL	mod8u
    027C 2F40      MOV	R20,R16
(0183)  	 	 	charIndex&=0b00011111;//检查charIndex,防止数据超出0~31范围
    027D 9180008B  LDS	R24,charIndex
    027F 718F      ANDI	R24,0x1F
    0280 9380008B  STS	charIndex,R24
(0184)  	 	 	cDataBuff[charIndex--]=charTemp;
    0282 2E28      MOV	R2,R24
    0283 2433      CLR	R3
    0284 5081      SUBI	R24,1
    0285 9380008B  STS	charIndex,R24
    0287 E681      LDI	R24,0x61
    0288 E090      LDI	R25,0
    0289 2DE2      MOV	R30,R2
    028A 27FF      CLR	R31
    028B 0FE8      ADD	R30,R24
    028C 1FF9      ADC	R31,R25
    028D 8340      STD	Z+0,R20
(0185)  	 	 	charData/=10;
    028E E01A      LDI	R17,0xA
    028F 9100008E  LDS	R16,charData
    0291 D03A      RCALL	div8u
    0292 9300008E  STS	charData,R16
(0186)  	 	 	charTemp=charData%10;
    0294 E01A      LDI	R17,0xA
    0295 D034      RCALL	mod8u
    0296 2F40      MOV	R20,R16
(0187)  	 	 	charIndex&=0b00011111;//检查charIndex,防止数据超出0~31范围
    0297 9180008B  LDS	R24,charIndex
    0299 718F      ANDI	R24,0x1F
    029A 9380008B  STS	charIndex,R24
(0188)  	 	 	cDataBuff[charIndex--]=charTemp;
    029C 2E28      MOV	R2,R24
    029D 2433      CLR	R3
    029E 5081      SUBI	R24,1
    029F 9380008B  STS	charIndex,R24
    02A1 E681      LDI	R24,0x61
    02A2 E090      LDI	R25,0
    02A3 2DE2      MOV	R30,R2
    02A4 27FF      CLR	R31
    02A5 0FE8      ADD	R30,R24
    02A6 1FF9      ADC	R31,R25
    02A7 8340      STD	Z+0,R20
(0189)  	 	 	charData/=10;
    02A8 E01A      LDI	R17,0xA
    02A9 9100008E  LDS	R16,charData
    02AB D020      RCALL	div8u
    02AC 9300008E  STS	charData,R16
(0190)  	 	 	cDataBuff[charIndex]=charData;
    02AE E681      LDI	R24,0x61
    02AF E090      LDI	R25,0
    02B0 91E0008B  LDS	R30,charIndex
    02B2 27FF      CLR	R31
    02B3 0FE8      ADD	R30,R24
    02B4 1FF9      ADC	R31,R25
    02B5 2E20      MOV	R2,R16
    02B6 8220      STD	Z+0,R2
(0191)  	 	 	charIndex+=4;//指向末尾空位
    02B7 9180008B  LDS	R24,charIndex
    02B9 5F8C      SUBI	R24,0xFC
    02BA 9380008B  STS	charIndex,R24
(0192) 			MT_ACK;
    02BC EC85      LDI	R24,0xC5
    02BD BF86      OUT	0x36,R24
(0193) 		 }
(0194) 	 }
FILE: <library>
    02BE D023      RCALL	pop_gset2
    02BF 9029      LD	R2,Y+
    02C0 BE2F      OUT	0x3F,R2
    02C1 91F9      LD	R31,Y+
    02C2 91E9      LD	R30,Y+
    02C3 9199      LD	R25,Y+
    02C4 9189      LD	R24,Y+
    02C5 9119      LD	R17,Y+
    02C6 9109      LD	R16,Y+
    02C7 9039      LD	R3,Y+
    02C8 9029      LD	R2,Y+
    02C9 9518      RETI
mod8u:
    02CA 9468      BSET	6
    02CB C001      RJMP	xdiv8u
div8u:
    02CC 94E8      BCLR	6
xdiv8u:
    02CD 932A      ST	R18,-Y
    02CE 92FA      ST	R15,-Y
    02CF 92EA      ST	R14,-Y
    02D0 24FF      CLR	R15
    02D1 24EE      CLR	R14
    02D2 E120      LDI	R18,0x10
    02D3 0F00      LSL	R16
    02D4 1CFF      ROL	R15
    02D5 1CEE      ROL	R14
    02D6 16E1      CP	R14,R17
    02D7 F010      BCS	0x02DA
    02D8 1AE1      SUB	R14,R17
    02D9 9503      INC	R16
    02DA 952A      DEC	R18
    02DB F7B9      BNE	0x02D3
    02DC F40E      BRTC	0x02DE
    02DD 2D0E      MOV	R16,R14
    02DE 90E9      LD	R14,Y+
    02DF 90F9      LD	R15,Y+
    02E0 9129      LD	R18,Y+
    02E1 9508      RET
pop_gset2:
    02E2 E0E2      LDI	R30,2
    02E3 C004      RJMP	pop
push_gset1:
    02E4 935A      ST	R21,-Y
    02E5 934A      ST	R20,-Y
    02E6 9508      RET
pop_gset1:
    02E7 E0E1      LDI	R30,1
pop:
    02E8 9149      LD	R20,Y+
    02E9 9159      LD	R21,Y+
    02EA FDE0      SBRC	R30,0
    02EB 9508      RET
    02EC 9169      LD	R22,Y+
    02ED 9179      LD	R23,Y+
    02EE FDE1      SBRC	R30,1
    02EF 9508      RET
    02F0 90A9      LD	R10,Y+
    02F1 90B9      LD	R11,Y+
    02F2 FDE2      SBRC	R30,2
    02F3 9508      RET
    02F4 90C9      LD	R12,Y+
    02F5 90D9      LD	R13,Y+
    02F6 FDE3      SBRC	R30,3
    02F7 9508      RET
    02F8 90E9      LD	R14,Y+
    02F9 90F9      LD	R15,Y+
    02FA 9508      RET
push_gset2:
    02FB 937A      ST	R23,-Y
    02FC 936A      ST	R22,-Y
    02FD CFE6      RJMP	push_gset1
push_lset:
    02FE 93FA      ST	R31,-Y
    02FF 93EA      ST	R30,-Y
    0300 93BA      ST	R27,-Y
    0301 93AA      ST	R26,-Y
    0302 939A      ST	R25,-Y
    0303 938A      ST	R24,-Y
    0304 933A      ST	R19,-Y
    0305 932A      ST	R18,-Y
    0306 931A      ST	R17,-Y
    0307 930A      ST	R16,-Y
    0308 929A      ST	R9,-Y
    0309 928A      ST	R8,-Y
    030A 927A      ST	R7,-Y
    030B 926A      ST	R6,-Y
    030C 925A      ST	R5,-Y
    030D 924A      ST	R4,-Y
    030E 923A      ST	R3,-Y
    030F 922A      ST	R2,-Y
    0310 921A      ST	R1,-Y
    0311 920A      ST	R0,-Y
    0312 B60F      IN	R0,0x3F
    0313 920A      ST	R0,-Y
    0314 9508      RET
pop_lset:
    0315 9009      LD	R0,Y+
    0316 BE0F      OUT	0x3F,R0
    0317 9009      LD	R0,Y+
    0318 9019      LD	R1,Y+
    0319 9029      LD	R2,Y+
    031A 9039      LD	R3,Y+
    031B 9049      LD	R4,Y+
    031C 9059      LD	R5,Y+
    031D 9069      LD	R6,Y+
    031E 9079      LD	R7,Y+
    031F 9089      LD	R8,Y+
    0320 9099      LD	R9,Y+
    0321 9109      LD	R16,Y+
    0322 9119      LD	R17,Y+
    0323 9129      LD	R18,Y+
    0324 9139      LD	R19,Y+
    0325 9189      LD	R24,Y+
    0326 9199      LD	R25,Y+
    0327 91A9      LD	R26,Y+
    0328 91B9      LD	R27,Y+
    0329 91E9      LD	R30,Y+
    032A 91F9      LD	R31,Y+
    032B 9508      RET
lsl8:
    032C 2311      TST	R17
    032D F019      BEQ	0x0331
    032E 0F00      LSL	R16
    032F 951A      DEC	R17
    0330 CFFB      RJMP	lsl8
    0331 9508      RET

⌨️ 快捷键说明

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