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

📄 写字库.lst

📁 一个LED特效显示程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
    02FE 7090      ANDI	R25,0
    02FF 93800064  STS	0x64,R24
(0430) 	 Disp_Buff[3] =DispModel;
    0301 9020008F  LDS	R2,DispModel
    0303 92200063  STS	Disp_Buff+3,R2
(0431) 	 Disp_Buff[6] =HeadEN;
    0305 90200087  LDS	R2,HeadEN
    0307 92200066  STS	0x66,R2
(0432) 	 Disp_Buff[7] =FileEnd;
    0309 90200085  LDS	R2,FileEnd
    030B 92200067  STS	0x67,R2
    030D 9508      RET
(0433) 	 
(0434) }
(0435) 
(0436) /******************* 结束 ***********************************/
(0437) /**********     主函数区  *****************************/
(0438) void main(void)
(0439) {
(0440)     char temp;
(0441) 	device_int();
_main:
  temp                 --> Y+1
    030E DE58      RCALL	_device_int
(0442) 	while(1)
    030F CFFF      RJMP	0x030F
    0310 9508      RET
_exi_int0:
  adress               --> R20
  i                    --> R22
    0311 D0AA      RCALL	push_lset
    0312 D090      RCALL	push_gset2
(0443) 	{
(0444) 	    ;
(0445) 	}      
(0446) }
(0447)          
(0448) /************  中断函数区   *************************/
(0449) 
(0450) /************************************
(0451)              外中断
(0452) 		   数电机脉冲
(0453) *************************************/
(0454) 
(0455) void exi_int0(void)   
(0456) {    
(0457) 	char i =0;
    0313 2766      CLR	R22
(0458) 	int adress;
(0459) 	adress =PDataY<<3;
    0314 9140007F  LDS	R20,PDataY
    0316 91500080  LDS	R21,PDataY+1
    0318 0F44      LSL	R20
    0319 1F55      ROL	R21
    031A 0F44      LSL	R20
    031B 1F55      ROL	R21
    031C 0F44      LSL	R20
    031D 1F55      ROL	R21
(0460) 	for(;i <8;i++)              
    031E C00D      RJMP	0x032C
(0461) 	{
(0462)  	   DispTemp[i] =RAM_Read(adress++);//地址偏移,取数到显示缓冲区
    031F 011A      MOVW	R2,R20
    0320 5F4F      SUBI	R20,0xFF
    0321 4F5F      SBCI	R21,0xFF
    0322 0181      MOVW	R16,R2
    0323 DEB2      RCALL	_RAM_Read
    0324 E986      LDI	R24,0x96
    0325 E090      LDI	R25,0
    0326 2FE6      MOV	R30,R22
    0327 27FF      CLR	R31
    0328 0FE8      ADD	R30,R24
    0329 1FF9      ADC	R31,R25
    032A 8300      STD	Z+0,R16
    032B 9563      INC	R22
    032C 3068      CPI	R22,0x8
    032D F388      BCS	0x031F
(0463) 	}
(0464) 	Screen_send();              //送显示屏幕数据
    032E DE92      RCALL	_Screen_send
    032F 940E0403  CALL	0x403
    0331 940E0436  CALL	0x436
(0465) 	PDataY++;
(0466) 	if(PDataY == PDataYMax)      //数据定位
    0333 1582      CP	R24,R2
    0334 0593      CPC	R25,R3
    0335 F441      BNE	0x033E
(0467) 		PDataY =PDataYMin;	    
    0336 90200083  LDS	R2,PDataYMin
    0338 90300084  LDS	R3,PDataYMin+1
    033A 92300080  STS	PDataY+1,R3
    033C 9220007F  STS	PDataY,R2
    033E D05C      RCALL	pop_gset2
    033F D093      RCALL	pop_lset
    0340 9518      RETI
_timer1_vof:
    0341 D07A      RCALL	push_lset
(0468) }
(0469) 
(0470) /*******************************************
(0471)               定时器中断
(0472) 			系统主要时钟基准
(0473) ********************************************/
(0474) void timer1_vof(void)
(0475) {   
(0476)      SEI();
    0342 9478      BSET	7
    0343 940E0450  CALL	0x450
(0477)      TCNT1H = 0xd4; //setup
(0478)  	 TCNT1L = 0xce;
(0479) 	 
(0480) 	 sys_cont++;             //系统调用时间变量
    0345 9180007D  LDS	R24,sys_cont
    0347 9190007E  LDS	R25,sys_cont+1
    0349 9601      ADIW	R24,1
    034A 9390007E  STS	sys_cont+1,R25
    034C 9380007D  STS	sys_cont,R24
(0481) 	 
(0482) 	 if(sys_cont ==1000)
    034E 3E88      CPI	R24,0xE8
    034F E0E3      LDI	R30,3
    0350 079E      CPC	R25,R30
    0351 F431      BNE	0x0358
(0483) 	     sys_cont =0;
    0352 2422      CLR	R2
    0353 2433      CLR	R3
    0354 9230007E  STS	sys_cont+1,R3
    0356 9220007D  STS	sys_cont,R2
(0484) 
(0485) 	 if(key_delay >0)        //键盘去抖动延时变量
    0358 2422      CLR	R2
    0359 9030007A  LDS	R3,key_delay
    035B 1423      CP	R2,R3
    035C F410      BCC	0x035F
    035D 940E0446  CALL	0x446
    035F 940E043B  CALL	0x43B
(0486)          key_delay--;
    0361 F411      BNE	0x0364
    0362 2033      TST	R3
    0363 F049      BEQ	0x036D
(0487) 	 
(0488) 	 if(delay_time_count >0)
(0489)          delay_time_count--; //ms延时用变量
    0364 9180007B  LDS	R24,delay_time_count
    0366 9190007C  LDS	R25,delay_time_count+1
    0368 9701      SBIW	R24,1
    0369 9390007C  STS	delay_time_count+1,R25
    036B 9380007B  STS	delay_time_count,R24
(0490) 	 
(0491) 	 if(ModelDelayTime >0)   //模式切换时间
    036D 2422      CLR	R2
    036E 2433      CLR	R3
    036F 90400090  LDS	R4,ModelDelayTime
    0371 90500091  LDS	R5,ModelDelayTime+1
    0373 1424      CP	R2,R4
    0374 0435      CPC	R3,R5
    0375 F424      BGE	0x037A
(0492) 	     ModelDelayTime--;
    0376 01C2      MOVW	R24,R4
    0377 9701      SBIW	R24,1
    0378 940E0441  CALL	0x441
(0493) 	 
(0494) 	 Disp_key_group();       //显示刷新,取键值到缓冲区
    037A DD27      RCALL	_Disp_key_group
(0495)      Key_num();              //键值后期处理以及去抖函数
    037B DD66      RCALL	_Key_num
(0496) 	 Disp_Model();           //屏幕显示特效模式
    037C DED2      RCALL	_Disp_Model
(0497) 	 KEY_event();            //按键事件处理
    037D DF3A      RCALL	_KEY_event
(0498) 	 Display_event();        //显示事件
    037E DF5E      RCALL	_Display_event
(0499) 	 Screen_send();
    037F DE41      RCALL	_Screen_send
    0380 D052      RCALL	pop_lset
    0381 9518      RETI
_usart_rcx:
  uart_data            --> R20
    0382 D039      RCALL	push_lset
    0383 D021      RCALL	push_gset1
(0500) 
(0501) }
(0502) 
(0503) /*************************************
(0504)        USART 接受中断   
(0505)  ******************************/
(0506) void usart_rcx(void)
(0507) {
(0508)    unsigned char uart_data;
(0509)    uart_data =UDR;
    0384 B14C      IN	R20,0x0C
(0510)    data_store(uart_data);
    0385 2F04      MOV	R16,R20
    0386 DE5D      RCALL	_data_store
(0511)    uart_TX(0xAA);
    0387 EA0A      LDI	R16,0xAA
    0388 DDE5      RCALL	_uart_TX
(0512)    time_out_ms=0;
    0389 2422      CLR	R2
    038A 2433      CLR	R3
    038B 9230008D  STS	time_out_ms+1,R3
    038D 9220008C  STS	time_out_ms,R2
(0513)    time_out_s=0;
FILE: <library>
    038F 9220008E  STS	time_out_s,R2
    0391 D016      RCALL	pop_gset1
    0392 D040      RCALL	pop_lset
    0393 9518      RETI
asr16:
    0394 2322      TST	R18
    0395 F021      BEQ	0x039A
    0396 9515      ASR	R17
    0397 9507      ROR	R16
    0398 952A      DEC	R18
    0399 CFFA      RJMP	asr16
    039A 9508      RET
pop_gset2:
    039B E0E2      LDI	R30,2
    039C C00C      RJMP	pop
push_gset5:
    039D 92FA      ST	R15,-Y
    039E 92EA      ST	R14,-Y
push_gset4:
    039F 92DA      ST	R13,-Y
    03A0 92CA      ST	R12,-Y
push_gset3:
    03A1 92BA      ST	R11,-Y
    03A2 92AA      ST	R10,-Y
push_gset2:
    03A3 937A      ST	R23,-Y
    03A4 936A      ST	R22,-Y
push_gset1:
    03A5 935A      ST	R21,-Y
    03A6 934A      ST	R20,-Y
    03A7 9508      RET
pop_gset1:
    03A8 E0E1      LDI	R30,1
pop:
    03A9 9149      LD	R20,Y+
    03AA 9159      LD	R21,Y+
    03AB FDE0      SBRC	R30,0
    03AC 9508      RET
    03AD 9169      LD	R22,Y+
    03AE 9179      LD	R23,Y+
    03AF FDE1      SBRC	R30,1
    03B0 9508      RET
    03B1 90A9      LD	R10,Y+
    03B2 90B9      LD	R11,Y+
    03B3 FDE2      SBRC	R30,2
    03B4 9508      RET
    03B5 90C9      LD	R12,Y+
    03B6 90D9      LD	R13,Y+
    03B7 FDE3      SBRC	R30,3
    03B8 9508      RET
    03B9 90E9      LD	R14,Y+
    03BA 90F9      LD	R15,Y+
    03BB 9508      RET
push_lset:
    03BC 93FA      ST	R31,-Y
    03BD 93EA      ST	R30,-Y
    03BE 93BA      ST	R27,-Y
    03BF 93AA      ST	R26,-Y
    03C0 939A      ST	R25,-Y
    03C1 938A      ST	R24,-Y
    03C2 933A      ST	R19,-Y
    03C3 932A      ST	R18,-Y
    03C4 931A      ST	R17,-Y
    03C5 930A      ST	R16,-Y
    03C6 929A      ST	R9,-Y
    03C7 928A      ST	R8,-Y
    03C8 927A      ST	R7,-Y
    03C9 926A      ST	R6,-Y
    03CA 925A      ST	R5,-Y
    03CB 924A      ST	R4,-Y
    03CC 923A      ST	R3,-Y
    03CD 922A      ST	R2,-Y
    03CE 921A      ST	R1,-Y
    03CF 920A      ST	R0,-Y
    03D0 B60F      IN	R0,0x3F
    03D1 920A      ST	R0,-Y
    03D2 9508      RET
pop_lset:
    03D3 9009      LD	R0,Y+
    03D4 BE0F      OUT	0x3F,R0
    03D5 9009      LD	R0,Y+
    03D6 9019      LD	R1,Y+
    03D7 9029      LD	R2,Y+
    03D8 9039      LD	R3,Y+
    03D9 9049      LD	R4,Y+
    03DA 9059      LD	R5,Y+
    03DB 9069      LD	R6,Y+
    03DC 9079      LD	R7,Y+
    03DD 9089      LD	R8,Y+
    03DE 9099      LD	R9,Y+
    03DF 9109      LD	R16,Y+
    03E0 9119      LD	R17,Y+
    03E1 9129      LD	R18,Y+
    03E2 9139      LD	R19,Y+
    03E3 9189      LD	R24,Y+
    03E4 9199      LD	R25,Y+
    03E5 91A9      LD	R26,Y+
    03E6 91B9      LD	R27,Y+
    03E7 91E9      LD	R30,Y+
    03E8 91F9      LD	R31,Y+
    03E9 9508      RET
lsl8:
    03EA 2311      TST	R17
    03EB F019      BEQ	0x03EF
    03EC 0F00      LSL	R16
    03ED 951A      DEC	R17
    03EE CFFB      RJMP	lsl8
    03EF 9508      RET
<created procedures>:
    03F0 B382      IN	R24,0x12
    03F1 6E80      ORI	R24,0xE0
    03F2 BB82      OUT	0x12,R24
    03F3 EF8F      LDI	R24,0xFF
    03F4 BB8A      OUT	0x1A,R24
    03F5 01C8      MOVW	R24,R16
    03F6 7090      ANDI	R25,0
    03F7 BB8B      OUT	0x1B,R24
    03F8 01C8      MOVW	R24,R16
    03F9 2F89      MOV	R24,R25
    03FA 2799      CLR	R25
    03FB FD87      SBRC	R24,7
    03FC 9590      COM	R25
    03FD 7090      ANDI	R25,0
    03FE BB85      OUT	0x15,R24
    03FF B382      IN	R24,0x12
    0400 778F      ANDI	R24,0x7F
    0401 BB82      OUT	0x12,R24
    0402 9508      RET
    0403 9180007F  LDS	R24,PDataY
    0405 91900080  LDS	R25,PDataY+1
    0407 9601      ADIW	R24,1
    0408 93900080  STS	PDataY+1,R25
    040A 9380007F  STS	PDataY,R24
    040C 9508      RET
    040D E090      LDI	R25,0
    040E 91E00068  LDS	R30,disp_key_count
    0410 27FF      CLR	R31
    0411 0FE8      ADD	R30,R24
    0412 1FF9      ADC	R31,R25
    0413 9508      RET
    0414 93900082  STS	PDataYMax+1,R25
    0416 93800081  STS	PDataYMax,R24
    0418 91800083  LDS	R24,PDataYMin
    041A 91900084  LDS	R25,PDataYMin+1
    041C 9508      RET
    041D 9390008D  STS	time_out_ms+1,R25
    041F 9380008C  STS	time_out_ms,R24
    0421 9508      RET
    0422 9180007F  LDS	R24,PDataY
    0424 91900080  LDS	R25,PDataY+1
    0426 9508      RET
    0427 91800088  LDS	R24,DataIndex
    0429 91900089  LDS	R25,DataIndex+1
    042B 9508      RET
    042C 9180008C  LDS	R24,time_out_ms
    042E 9190008D  LDS	R25,time_out_ms+1
    0430 9508      RET
    0431 93900084  STS	PDataYMin+1,R25
    0433 93800083  STS	PDataYMin,R24
    0435 9508      RET
    0436 90200081  LDS	R2,PDataYMax
    0438 90300082  LDS	R3,PDataYMax+1
    043A 9508      RET
    043B 9020007B  LDS	R2,delay_time_count
    043D 9030007C  LDS	R3,delay_time_count+1
    043F 2022      TST	R2
    0440 9508      RET
    0441 93900091  STS	ModelDelayTime+1,R25
    0443 93800090  STS	ModelDelayTime,R24
    0445 9508      RET
    0446 2D83      MOV	R24,R3
    0447 5081      SUBI	R24,1
    0448 9380007A  STS	key_delay,R24
    044A 9508      RET
    044B 93800087  STS	HeadEN,R24
    044D 93800085  STS	FileEnd,R24
    044F 9508      RET
    0450 ED84      LDI	R24,0xD4
    0451 BD8D      OUT	0x2D,R24
    0452 EC8E      LDI	R24,0xCE
    0453 BD8C      OUT	0x2C,R24
    0454 9508      RET
    0455 91800081  LDS	R24,PDataYMax
    0457 91900082  LDS	R25,PDataYMax+1
    0459 9508      RET

⌨️ 快捷键说明

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