📄 写字库.lst
字号:
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 + -