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

📄 i2c抢答器_主机程序.lst

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
    0183 0F00      LSL	R16
    0184 1F11      ROL	R17
    0185 0F00      LSL	R16
    0186 1F11      ROL	R17
    0187 2902      OR	R16,R2
    0188 2913      OR	R17,R3
(0068)     if (a<b)
    0189 1720      CP	R18,R16
    018A 0731      CPC	R19,R17
    018B F520      BCC	0x01B0
(0069)     {
(0070)         LEDDisBuffer[7] = (RecArr[0]>>4);
    018C 91800113  LDS	R24,RecArr
    018E 9582      SWAP	R24
    018F 708F      ANDI	R24,0xF
    0190 93800112  STS	0x112,R24
(0071)         LEDDisBuffer[6] = SPACE;
    0192 E187      LDI	R24,0x17
    0193 93800111  STS	0x111,R24
(0072)         LEDDisBuffer[5] = SPACE;
    0195 93800110  STS	0x110,R24
(0073)         LEDDisBuffer[4] = SPACE;
    0197 9380010F  STS	0x10F,R24
(0074)         LEDDisBuffer[3] = (RecArr[1]>>4);
    0199 91800114  LDS	R24,RecArr+1
    019B 9582      SWAP	R24
    019C 708F      ANDI	R24,0xF
    019D 9380010E  STS	LEDDisBuffer+3,R24
(0075)         LEDDisBuffer[2] = (RecArr[1]&0x0F);
    019F 91800114  LDS	R24,RecArr+1
    01A1 708F      ANDI	R24,0xF
    01A2 9380010D  STS	LEDDisBuffer+2,R24
(0076)         LEDDisBuffer[1] = (RecArr[2]>>4);
    01A4 91800115  LDS	R24,RecArr+2
    01A6 9582      SWAP	R24
    01A7 708F      ANDI	R24,0xF
    01A8 9380010C  STS	LEDDisBuffer+1,R24
(0077)         LEDDisBuffer[0] = (RecArr[2]&0x0F);
    01AA 91800115  LDS	R24,RecArr+2
    01AC 708F      ANDI	R24,0xF
    01AD 9380010B  STS	LEDDisBuffer,R24
(0078)     }
    01AF C023      RJMP	0x01D3
(0079)     else
(0080)     {
(0081)         LEDDisBuffer[7] = (RecArr[3]>>4);
    01B0 91800116  LDS	R24,RecArr+3
    01B2 9582      SWAP	R24
    01B3 708F      ANDI	R24,0xF
    01B4 93800112  STS	0x112,R24
(0082)         LEDDisBuffer[6] = SPACE;
    01B6 E187      LDI	R24,0x17
    01B7 93800111  STS	0x111,R24
(0083)         LEDDisBuffer[5] = SPACE;
    01B9 93800110  STS	0x110,R24
(0084)         LEDDisBuffer[4] = SPACE;
    01BB 9380010F  STS	0x10F,R24
(0085)         LEDDisBuffer[3] = (RecArr[4]>>4);
    01BD 91800117  LDS	R24,0x117
    01BF 9582      SWAP	R24
    01C0 708F      ANDI	R24,0xF
    01C1 9380010E  STS	LEDDisBuffer+3,R24
(0086)         LEDDisBuffer[2] = (RecArr[4]&0x0F);
    01C3 91800117  LDS	R24,0x117
    01C5 708F      ANDI	R24,0xF
    01C6 9380010D  STS	LEDDisBuffer+2,R24
(0087)         LEDDisBuffer[1] = (RecArr[5]>>4);
    01C8 91800118  LDS	R24,0x118
    01CA 9582      SWAP	R24
    01CB 708F      ANDI	R24,0xF
    01CC 9380010C  STS	LEDDisBuffer+1,R24
(0088)         LEDDisBuffer[0] = (RecArr[5]&0x0F);
    01CE 91800118  LDS	R24,0x118
    01D0 708F      ANDI	R24,0xF
    01D1 9380010B  STS	LEDDisBuffer,R24
(0089)     }
    01D3 9508      RET
(0090) }
(0091) 
(0092) /***********************************************************
(0093) *   函数说明:主函数                                       *
(0094) *   输入:    无                                           *
(0095) *   输出:    无                                           *
(0096) *   调用函数:System_INIT()                                *
(0097) ***********************************************************/
(0098) void main(void)
(0099) {
(0100)     System_INIT();                          //代码初始化
_main:
    01D4 DEDD      RCALL	_System_INIT
(0101)     
(0102)     RecArr[0]=0xFF;
    01D5 EF8F      LDI	R24,0xFF
    01D6 93800113  STS	RecArr,R24
(0103)     RecArr[1]=0xFF;
    01D8 93800114  STS	RecArr+1,R24
(0104)     RecArr[2]=0xFF;
    01DA 93800115  STS	RecArr+2,R24
(0105)     RecArr[3]=0xFF;
    01DC 93800116  STS	RecArr+3,R24
(0106)     RecArr[4]=0xFF;
    01DE 93800117  STS	0x117,R24
(0107)     RecArr[5]=0xFF;
    01E0 93800118  STS	0x118,R24
(0108)     LEDDisBuffer[0] = Led__;
    01E2 E185      LDI	R24,0x15
    01E3 9380010B  STS	LEDDisBuffer,R24
(0109)     LEDDisBuffer[1] = Led__;
    01E5 9380010C  STS	LEDDisBuffer+1,R24
(0110)     LEDDisBuffer[2] = Led__;
    01E7 9380010D  STS	LEDDisBuffer+2,R24
(0111)     LEDDisBuffer[3] = Led__;
    01E9 9380010E  STS	LEDDisBuffer+3,R24
(0112)     LEDDisBuffer[4] = Led__;
    01EB 9380010F  STS	0x10F,R24
(0113)     LEDDisBuffer[5] = Led__;
    01ED 93800110  STS	0x110,R24
(0114)     LEDDisBuffer[6] = Led__;
    01EF 93800111  STS	0x111,R24
(0115)     LEDDisBuffer[7] = Led__;
    01F1 93800112  STS	0x112,R24
(0116) 
(0117)     TIMERSTART;
    01F3 E084      LDI	R24,4
    01F4 93800081  STS	0x81,R24
(0118)     
(0119)     TWCR |= (1<<TWSTA);                     //启动总线
    01F6 918000BC  LDS	R24,0xBC
    01F8 6280      ORI	R24,0x20
    01F9 938000BC  STS	0xBC,R24
    01FB C025      RJMP	0x0221
(0120)     while(1)                                //超级循环
(0121)     {
(0122)         if (ShowTime == TRUE)
    01FC 91800105  LDS	R24,ShowTime
    01FE 3081      CPI	R24,1
    01FF F4C1      BNE	0x0218
(0123)         {
(0124)             if (RecArr[0] == 0xFF)          //没有任何从机响应
    0200 91800113  LDS	R24,RecArr
    0202 3F8F      CPI	R24,0xFF
    0203 F499      BNE	0x0217
(0125)             {
(0126)                 LEDDisBuffer[0] = Led__;
    0204 E185      LDI	R24,0x15
    0205 9380010B  STS	LEDDisBuffer,R24
(0127)                 LEDDisBuffer[1] = Led__;
    0207 9380010C  STS	LEDDisBuffer+1,R24
(0128)                 LEDDisBuffer[2] = Led__;
    0209 9380010D  STS	LEDDisBuffer+2,R24
(0129)                 LEDDisBuffer[3] = Led__;
    020B 9380010E  STS	LEDDisBuffer+3,R24
(0130)                 LEDDisBuffer[4] = Led__;
    020D 9380010F  STS	0x10F,R24
(0131)                 LEDDisBuffer[5] = Led__;
    020F 93800110  STS	0x110,R24
(0132)                 LEDDisBuffer[6] = Led__;
    0211 93800111  STS	0x111,R24
(0133)                 LEDDisBuffer[7] = 0x0E;
    0213 E08E      LDI	R24,0xE
    0214 93800112  STS	0x112,R24
(0134)             }
    0216 C001      RJMP	0x0218
(0135)             else
(0136)             {
(0137)                 winner();
    0217 DF51      RCALL	_winner
(0138)             }
(0139)         }
(0140)         
(0141)         if (DoTime == 1)
    0218 91800104  LDS	R24,DoTime
    021A 3081      CPI	R24,1
    021B F429      BNE	0x0221
(0142)         {
(0143)             DoTime=0;
    021C 2422      CLR	R2
    021D 92200104  STS	DoTime,R2
(0144)             LEDDisplay();
    021F DF23      RCALL	_LEDDisplay
(0145)             Port_refresh();
FILE: <library>
    0220 DF0F      RCALL	_Port_refresh
    0221 CFDA      RJMP	0x01FC
    0222 9508      RET
mod16u:
    0223 9468      BSET	6
    0224 C001      RJMP	xdiv16u
div16u:
    0225 94E8      BCLR	6
xdiv16u:
    0226 92EA      ST	R14,-Y
    0227 92FA      ST	R15,-Y
    0228 938A      ST	R24,-Y
    0229 24EE      CLR	R14
    022A 24FF      CLR	R15
    022B E180      LDI	R24,0x10
    022C 0F00      LSL	R16
    022D 1F11      ROL	R17
    022E 1CEE      ROL	R14
    022F 1CFF      ROL	R15
    0230 16E2      CP	R14,R18
    0231 06F3      CPC	R15,R19
    0232 F018      BCS	0x0236
    0233 1AE2      SUB	R14,R18
    0234 0AF3      SBC	R15,R19
    0235 9503      INC	R16
    0236 958A      DEC	R24
    0237 F7A1      BNE	0x022C
    0238 F416      BRTC	0x023B
    0239 2D0E      MOV	R16,R14
    023A 2D1F      MOV	R17,R15
    023B 9189      LD	R24,Y+
    023C 90F9      LD	R15,Y+
    023D 90E9      LD	R14,Y+
    023E 9508      RET
push_gset5:
    023F 92FA      ST	R15,-Y
    0240 92EA      ST	R14,-Y
push_gset4:
    0241 92DA      ST	R13,-Y
    0242 92CA      ST	R12,-Y
push_gset3:
    0243 92BA      ST	R11,-Y
    0244 92AA      ST	R10,-Y
push_gset2:
    0245 937A      ST	R23,-Y
    0246 936A      ST	R22,-Y
push_gset1:
    0247 935A      ST	R21,-Y
    0248 934A      ST	R20,-Y
    0249 9508      RET
pop_gset1:
    024A E0E1      LDI	R30,1
pop:
    024B 9149      LD	R20,Y+
    024C 9159      LD	R21,Y+
    024D FDE0      SBRC	R30,0
    024E 9508      RET
    024F 9169      LD	R22,Y+
    0250 9179      LD	R23,Y+
    0251 FDE1      SBRC	R30,1
    0252 9508      RET
    0253 90A9      LD	R10,Y+
    0254 90B9      LD	R11,Y+
    0255 FDE2      SBRC	R30,2
    0256 9508      RET
    0257 90C9      LD	R12,Y+
    0258 90D9      LD	R13,Y+
    0259 FDE3      SBRC	R30,3
    025A 9508      RET
    025B 90E9      LD	R14,Y+
    025C 90F9      LD	R15,Y+
    025D 9508      RET
push_lset:
    025E 93FA      ST	R31,-Y
    025F 93EA      ST	R30,-Y
    0260 93BA      ST	R27,-Y
    0261 93AA      ST	R26,-Y
    0262 939A      ST	R25,-Y
    0263 938A      ST	R24,-Y
    0264 933A      ST	R19,-Y
    0265 932A      ST	R18,-Y
    0266 931A      ST	R17,-Y
    0267 930A      ST	R16,-Y
    0268 929A      ST	R9,-Y
    0269 928A      ST	R8,-Y
    026A 927A      ST	R7,-Y
    026B 926A      ST	R6,-Y
    026C 925A      ST	R5,-Y
    026D 924A      ST	R4,-Y
    026E 923A      ST	R3,-Y
    026F 922A      ST	R2,-Y
    0270 921A      ST	R1,-Y
    0271 920A      ST	R0,-Y
    0272 B60F      IN	R0,0x3F
    0273 920A      ST	R0,-Y
    0274 9508      RET
pop_lset:
    0275 9009      LD	R0,Y+
    0276 BE0F      OUT	0x3F,R0
    0277 9009      LD	R0,Y+
    0278 9019      LD	R1,Y+
    0279 9029      LD	R2,Y+
    027A 9039      LD	R3,Y+
    027B 9049      LD	R4,Y+
    027C 9059      LD	R5,Y+
    027D 9069      LD	R6,Y+
    027E 9079      LD	R7,Y+
    027F 9089      LD	R8,Y+
    0280 9099      LD	R9,Y+
    0281 9109      LD	R16,Y+
    0282 9119      LD	R17,Y+
    0283 9129      LD	R18,Y+
    0284 9139      LD	R19,Y+
    0285 9189      LD	R24,Y+
    0286 9199      LD	R25,Y+
    0287 91A9      LD	R26,Y+
    0288 91B9      LD	R27,Y+
    0289 91E9      LD	R30,Y+
    028A 91F9      LD	R31,Y+
    028B 9508      RET
lsl8:
    028C 2311      TST	R17
    028D F019      BEQ	0x0291
    028E 0F00      LSL	R16
    028F 951A      DEC	R17
    0290 CFFB      RJMP	lsl8
    0291 9508      RET

⌨️ 快捷键说明

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