📄 显示模块2.lst
字号:
0412 92200066 STS 0x66,R2
(0391) Disp_Buff[7] =FileEnd;
0414 90200085 LDS R2,FileEnd
0416 92200067 STS 0x67,R2
0418 9508 RET
(0392) }
(0393)
(0394)
(0395) /******************* 结束 ***********************************/
(0396) /********** 主函数区 *****************************/
(0397) void main(void)
(0398) {
(0399) device_int();
_main:
0419 DE84 RCALL _device_int
(0400) while(1)
041A CFFF RJMP 0x041A
041B 9508 RET
_exi_int0:
adress --> R20
i --> R22
041C D09C RCALL push_lset
041D D082 RCALL push_gset2
(0401) {
(0402) ;
(0403) }
(0404) }
(0405)
(0406)
(0407)
(0408) /************ 中断函数区 *************************/
(0409)
(0410) /************************************
(0411) 外中断
(0412) 数电机脉冲
(0413) *************************************/
(0414)
(0415) void exi_int0(void)
(0416) {
(0417) char i =0;
041E 2766 CLR R22
(0418) int adress;
(0419) adress =PDataY<<3;
041F 9140007F LDS R20,PDataY
0421 91500080 LDS R21,PDataY+1
0423 0F44 LSL R20
0424 1F55 ROL R21
0425 0F44 LSL R20
0426 1F55 ROL R21
0427 0F44 LSL R20
0428 1F55 ROL R21
(0420) for(;i <8;i++)
0429 C00D RJMP 0x0437
(0421) {
(0422) DispTemp[i] =RAM_Read(adress++);//地址偏移,取数到显示缓冲区
042A 011A MOVW R2,R20
042B 5F4F SUBI R20,0xFF
042C 4F5F SBCI R21,0xFF
042D 0181 MOVW R16,R2
042E DEA9 RCALL _RAM_Read
042F EF8B LDI R24,0xFB
0430 E092 LDI R25,2
0431 2FE6 MOV R30,R22
0432 27FF CLR R31
0433 0FE8 ADD R30,R24
0434 1FF9 ADC R31,R25
0435 8300 STD Z+0,R16
0436 9563 INC R22
0437 3068 CPI R22,0x8
0438 F388 BCS 0x042A
(0423) }
(0424) Screen_send(); //送显示屏幕数据
0439 DE86 RCALL _Screen_send
043A 940E0508 CALL 0x508
043C 940E052A CALL 0x52A
(0425) PDataY++;
(0426) if(PDataY == PDataYMax) //数据定位
043E 1582 CP R24,R2
043F 0593 CPC R25,R3
0440 F441 BNE 0x0449
(0427) PDataY =PDataYMin;
0441 90200083 LDS R2,PDataYMin
0443 90300084 LDS R3,PDataYMin+1
0445 92300080 STS PDataY+1,R3
0447 9220007F STS PDataY,R2
0449 D04E RCALL pop_gset2
044A D085 RCALL pop_lset
044B 9518 RETI
_timer1_vof:
044C D06C RCALL push_lset
(0428) }
(0429)
(0430) /*******************************************
(0431) 定时器中断
(0432) 系统主要时钟基准
(0433) ********************************************/
(0434) void timer1_vof(void)
(0435) {
(0436) SEI();
044D 9478 BSET 7
044E 940E053F CALL 0x53F
(0437) TCNT1H = 0xd4; //setup
(0438) TCNT1L = 0xce;
(0439)
(0440) sys_cont++; //系统调用时间变量
0450 9180007D LDS R24,sys_cont
0452 9190007E LDS R25,sys_cont+1
0454 9601 ADIW R24,1
0455 9390007E STS sys_cont+1,R25
0457 9380007D STS sys_cont,R24
(0441) if(sys_cont ==1000)
0459 3E88 CPI R24,0xE8
045A E0E3 LDI R30,3
045B 079E CPC R25,R30
045C F431 BNE 0x0463
(0442) sys_cont =0;
045D 2422 CLR R2
045E 2433 CLR R3
045F 9230007E STS sys_cont+1,R3
0461 9220007D STS sys_cont,R2
(0443)
(0444) if(delay_time_count >0)
0463 940E0534 CALL 0x534
0465 F411 BNE 0x0468
0466 2033 TST R3
0467 F049 BEQ 0x0471
(0445) delay_time_count--; //ms延时用变量
0468 9180007B LDS R24,delay_time_count
046A 9190007C LDS R25,delay_time_count+1
046C 9701 SBIW R24,1
046D 9390007C STS delay_time_count+1,R25
046F 9380007B STS delay_time_count,R24
(0446)
(0447) if(ModelDelayTime >0) //模式切换时间
0471 2422 CLR R2
0472 2433 CLR R3
0473 9040008D LDS R4,ModelDelayTime
0475 9050008E LDS R5,ModelDelayTime+1
0477 1424 CP R2,R4
0478 0435 CPC R3,R5
0479 F434 BGE 0x0480
(0448) ModelDelayTime--;
047A 01C2 MOVW R24,R4
047B 9701 SBIW R24,1
047C 9390008E STS ModelDelayTime+1,R25
047E 9380008D STS ModelDelayTime,R24
(0449)
(0450) Disp_key_group(); //显示刷新,取键值到缓冲区
0480 DD56 RCALL _Disp_key_group
(0451) Key_num(); //键值后期处理以及去抖函数
0481 DD95 RCALL _Key_num
(0452) Disp_Model(); //屏幕显示特效模式
0482 DED0 RCALL _Disp_Model
(0453) KEY_event(); //按键事件处理
0483 DF6B RCALL _KEY_event
(0454) Display_event(); //显示事件
0484 DF8B RCALL _Display_event
0485 D04A RCALL pop_lset
0486 9518 RETI
_usart_rcx:
uart_data --> R20
0487 D031 RCALL push_lset
0488 D019 RCALL push_gset1
(0455)
(0456) }
(0457)
(0458) /*************************************
(0459) USART 接受中断
(0460) ******************************/
(0461) void usart_rcx(void)
(0462) {
(0463) char uart_data;
(0464) uart_data =UDR;
0489 B14C IN R20,0x0C
(0465) uart_TX(0xAA);
048A EA0A LDI R16,0xAA
048B DE19 RCALL _uart_TX
(0466) data_store(uart_data);
FILE: <library>
048C 2F04 MOV R16,R20
048D DE52 RCALL _data_store
048E D016 RCALL pop_gset1
048F D040 RCALL pop_lset
0490 9518 RETI
asr16:
0491 2322 TST R18
0492 F021 BEQ 0x0497
0493 9515 ASR R17
0494 9507 ROR R16
0495 952A DEC R18
0496 CFFA RJMP asr16
0497 9508 RET
pop_gset2:
0498 E0E2 LDI R30,2
0499 C00C RJMP pop
push_gset5:
049A 92FA ST R15,-Y
049B 92EA ST R14,-Y
push_gset4:
049C 92DA ST R13,-Y
049D 92CA ST R12,-Y
push_gset3:
049E 92BA ST R11,-Y
049F 92AA ST R10,-Y
push_gset2:
04A0 937A ST R23,-Y
04A1 936A ST R22,-Y
push_gset1:
04A2 935A ST R21,-Y
04A3 934A ST R20,-Y
04A4 9508 RET
pop_gset1:
04A5 E0E1 LDI R30,1
pop:
04A6 9149 LD R20,Y+
04A7 9159 LD R21,Y+
04A8 FDE0 SBRC R30,0
04A9 9508 RET
04AA 9169 LD R22,Y+
04AB 9179 LD R23,Y+
04AC FDE1 SBRC R30,1
04AD 9508 RET
04AE 90A9 LD R10,Y+
04AF 90B9 LD R11,Y+
04B0 FDE2 SBRC R30,2
04B1 9508 RET
04B2 90C9 LD R12,Y+
04B3 90D9 LD R13,Y+
04B4 FDE3 SBRC R30,3
04B5 9508 RET
04B6 90E9 LD R14,Y+
04B7 90F9 LD R15,Y+
04B8 9508 RET
push_lset:
04B9 93FA ST R31,-Y
04BA 93EA ST R30,-Y
04BB 93BA ST R27,-Y
04BC 93AA ST R26,-Y
04BD 939A ST R25,-Y
04BE 938A ST R24,-Y
04BF 933A ST R19,-Y
04C0 932A ST R18,-Y
04C1 931A ST R17,-Y
04C2 930A ST R16,-Y
04C3 929A ST R9,-Y
04C4 928A ST R8,-Y
04C5 927A ST R7,-Y
04C6 926A ST R6,-Y
04C7 925A ST R5,-Y
04C8 924A ST R4,-Y
04C9 923A ST R3,-Y
04CA 922A ST R2,-Y
04CB 921A ST R1,-Y
04CC 920A ST R0,-Y
04CD B60F IN R0,0x3F
04CE 920A ST R0,-Y
04CF 9508 RET
pop_lset:
04D0 9009 LD R0,Y+
04D1 BE0F OUT 0x3F,R0
04D2 9009 LD R0,Y+
04D3 9019 LD R1,Y+
04D4 9029 LD R2,Y+
04D5 9039 LD R3,Y+
04D6 9049 LD R4,Y+
04D7 9059 LD R5,Y+
04D8 9069 LD R6,Y+
04D9 9079 LD R7,Y+
04DA 9089 LD R8,Y+
04DB 9099 LD R9,Y+
04DC 9109 LD R16,Y+
04DD 9119 LD R17,Y+
04DE 9129 LD R18,Y+
04DF 9139 LD R19,Y+
04E0 9189 LD R24,Y+
04E1 9199 LD R25,Y+
04E2 91A9 LD R26,Y+
04E3 91B9 LD R27,Y+
04E4 91E9 LD R30,Y+
04E5 91F9 LD R31,Y+
04E6 9508 RET
lsl16:
04E7 2322 TST R18
04E8 F021 BEQ 0x04ED
04E9 0F00 LSL R16
04EA 1F11 ROL R17
04EB 952A DEC R18
04EC CFFA RJMP lsl16
04ED 9508 RET
lsl8:
04EE 2311 TST R17
04EF F019 BEQ 0x04F3
04F0 0F00 LSL R16
04F1 951A DEC R17
04F2 CFFB RJMP lsl8
04F3 9508 RET
<created procedures>:
04F4 B382 IN R24,0x12
04F5 6E80 ORI R24,0xE0
04F6 BB82 OUT 0x12,R24
04F7 EF8F LDI R24,0xFF
04F8 BB8A OUT 0x1A,R24
04F9 01C8 MOVW R24,R16
04FA 7090 ANDI R25,0
04FB BB8B OUT 0x1B,R24
04FC 01C8 MOVW R24,R16
04FD 2F89 MOV R24,R25
04FE 2799 CLR R25
04FF FD87 SBRC R24,7
0500 9590 COM R25
0501 7090 ANDI R25,0
0502 BB85 OUT 0x15,R24
0503 B382 IN R24,0x12
0504 778F ANDI R24,0x7F
0505 BB82 OUT 0x12,R24
0506 B382 IN R24,0x12
0507 9508 RET
0508 9180007F LDS R24,PDataY
050A 91900080 LDS R25,PDataY+1
050C 9601 ADIW R24,1
050D 93900080 STS PDataY+1,R25
050F 9380007F STS PDataY,R24
0511 9508 RET
0512 E090 LDI R25,0
0513 91E00068 LDS R30,disp_key_count
0515 27FF CLR R31
0516 0FE8 ADD R30,R24
0517 1FF9 ADC R31,R25
0518 9508 RET
0519 93900082 STS PDataYMax+1,R25
051B 93800081 STS PDataYMax,R24
051D 91800083 LDS R24,PDataYMin
051F 91900084 LDS R25,PDataYMin+1
0521 9508 RET
0522 2E40 MOV R4,R16
0523 2455 CLR R5
0524 2C54 MOV R5,R4
0525 2444 CLR R4
0526 2433 CLR R3
0527 2024 AND R2,R4
0528 2035 AND R3,R5
0529 9508 RET
052A 90200081 LDS R2,PDataYMax
052C 90300082 LDS R3,PDataYMax+1
052E 9508 RET
052F 93900084 STS PDataYMin+1,R25
0531 93800083 STS PDataYMin,R24
0533 9508 RET
0534 9020007B LDS R2,delay_time_count
0536 9030007C LDS R3,delay_time_count+1
0538 2022 TST R2
0539 9508 RET
053A 2FE4 MOV R30,R20
053B 27FF CLR R31
053C 0FE8 ADD R30,R24
053D 1FF9 ADC R31,R25
053E 9508 RET
053F ED84 LDI R24,0xD4
0540 BD8D OUT 0x2D,R24
0541 EC8E LDI R24,0xCE
0542 BD8C OUT 0x2C,R24
0543 9508 RET
0544 9020008A LDS R2,FileLength
0546 9030008B LDS R3,FileLength+1
0548 9508 RET
0549 91800081 LDS R24,PDataYMax
054B 91900082 LDS R25,PDataYMax+1
054D 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -