📄 mix_exp.lst
字号:
(0212) unsigned char *char_p;
(0213) temp=(unsigned int)(((unsigned long)((unsigned long)adc*vref))/1024);
04C6 0115 MOVW R2,R10
04C7 2444 CLR R4
04C8 2455 CLR R5
04C9 ED49 LDI R20,0xD9
04CA E051 LDI R21,1
04CB E060 LDI R22,0
04CC E070 LDI R23,0
04CD 925A ST R5,-Y
04CE 924A ST R4,-Y
04CF 923A ST R3,-Y
04D0 922A ST R2,-Y
04D1 018A MOVW R16,R20
04D2 019B MOVW R18,R22
04D4 940E0D36 CALL empy32u
04D5 E08A LDI R24,0xA
04D6 E090 LDI R25,0
04D7 938A ST R24,-Y
04D9 940E0DE2 CALL lsr32
04DA 0178 MOVW R14,R16
(0214) for(i=0;i<3;i++)
04DB 24CC CLR R12
04DC C019 RJMP 0x04F6
(0215) {
(0216) adcval[3-i]=temp%10+0x30;
04DD 2C2C MOV R2,R12
04DE 2433 CLR R3
04DF E0E3 LDI R30,3
04E0 E0F0 LDI R31,0
04E1 19E2 SUB R30,R2
04E2 09F3 SBC R31,R3
04E3 EB8C LDI R24,0xBC
04E4 E091 LDI R25,1
04E5 0FE8 ADD R30,R24
04E6 1FF9 ADC R31,R25
04E7 E02A LDI R18,0xA
04E8 E030 LDI R19,0
04E9 0187 MOVW R16,R14
04EB 940E0D0A CALL mod16u
04EC 01C8 MOVW R24,R16
04ED 96C0 ADIW R24,0x30
04EE 8380 STD R24,0+Z
(0217) temp=temp/10;
04EF E02A LDI R18,0xA
04F0 E030 LDI R19,0
04F1 0187 MOVW R16,R14
04F3 940E0D0C CALL div16u
04F4 0178 MOVW R14,R16
04F5 94C3 INC R12
04F6 2D8C MOV R24,R12
04F7 3083 CPI R24,3
04F8 F320 BCS 0x04DD
(0218) }
(0219) adcval[0]=adcval[1];
04FA 902001BD LDS R2,_adcval+1
04FC 922001BC STS R2,_adcval
(0220) adcval[1]='.';
04FD E28E LDI R24,0x2E
04FF 938001BD STS R24,_adcval+1
(0221) adcval[4]='V';
0500 E586 LDI R24,0x56
0502 938001C0 STS R24,0x1C0
(0222) adcval[5]=0;
0503 2422 CLR R2
0505 922001C1 STS R2,0x1C1
(0223) char_p=adcval;
0506 EB8C LDI R24,0xBC
0507 E091 LDI R25,1
0508 015C MOVW R10,R24
(0224) return char_p;
0509 2F08 MOV R16,R24
050A 2F19 MOV R17,R25
050C 940E0DDF CALL pop_gset5
050D 9508 RET
(0225) }
(0226) /* OCMJ4X8LCD初始化 */
(0227) void ocmj_init(void)
(0228) {
(0229) MCUCR=0;
_ocmj_init:
050E 2422 CLR R2
050F BE25 OUT P35,R2
(0230) DDRA=0xff;
0510 EF8F LDI R24,0xFF
0511 BB8A OUT P1A,R24
(0231) PORTA=0xff;
0512 BB8B OUT P1B,R24
(0232) DDRE=0x80;
0513 E880 LDI R24,0x80
0514 B982 OUT P02,R24
(0233) PORTE=0xff;
0515 EF8F LDI R24,0xFF
0516 B983 OUT P03,R24
(0234) PORTC=0xff;
0517 BB85 OUT P15,R24
(0235) DDRD=0x00;
0518 BA21 OUT P11,R2
(0236) PORTD=0xff;
0519 BB82 OUT P12,R24
(0237) clr_reset;//LCD复位
051A 98AB CBI P15,3
(0238) delay_ms(10);
051B E00A LDI R16,0xA
051C E010 LDI R17,0
051E 940E0CE7 CALL _delay_ms
(0239) set_reset;
051F 9AAB SBI P15,3
(0240) clr_answer;
0520 981F CBI P03,7
(0241) delay_ms(10);
0521 E00A LDI R16,0xA
0522 E010 LDI R17,0
(0242) }
0524 940C0CE7 JMP _delay_ms
(0243) /* 写数据到LCD */
(0244) void ocmj_write(unsigned char data)
(0245) {
(0246) while(ask!=0)
_ocmj_write:
data --> R16
0525 990E SBIC P01,6
0526 CFFE RJMP 0x0525
(0247) ;
(0248) data_port=data;
0527 BB0B OUT P1B,R16
(0249) wait;
0528 0000 NOP
0529 0000 NOP
(0250) set_answer;
052A 9A1F SBI P03,7
(0251) wait;
052B 0000 NOP
052C 0000 NOP
(0252) while(ask==0)
052D 9B0E SBIS P01,6
052E CFFE RJMP 0x052D
(0253) ;
(0254) clr_answer;
052F 981F CBI P03,7
(0255) }
0530 9508 RET
_ico_tran:
j --> R20
i --> R14
ico_p --> R10
y --> R12
x --> R22
0532 940E0DD2 CALL push_gset5
0533 2EC2 MOV R12,R18
0534 2F60 MOV R22,R16
0535 84AA LDD R10,10+Y
0536 84BB LDD R11,11+Y
(0256) /* 传送32*32ICO点阵数据到LCD */
(0257) /* x:0~15(字节为单位) y:0~64 */
(0258) /* ico_p:指向图形数据的指针 */
(0259) void ico_tran(unsigned char x,unsigned char y,const unsigned char *ico_p)
(0260) {
(0261) unsigned char i,j;
(0262) x+=4;
0537 5F6C SUBI R22,0xFC
(0263) for(j=0;j<32;j++)
0538 2744 CLR R20
0539 C016 RJMP 0x0550
(0264) {
(0265) for(i=0;i<4;i++)
053A 24EE CLR R14
053B C00E RJMP 0x054A
(0266) {
(0267) ocmj_write(0xf3);
053C EF03 LDI R16,0xF3
053D DFE7 RCALL 0x0525
(0268) ocmj_write(x);
053E 2F06 MOV R16,R22
053F DFE5 RCALL 0x0525
(0269) ocmj_write(y);
0540 2D0C MOV R16,R12
0541 DFE3 RCALL 0x0525
(0270) ocmj_write(*ico_p);
0542 01F5 MOVW R30,R10
0543 9104 LD R16,0(Z)
0544 DFE0 RCALL 0x0525
(0271) ico_p++;
0545 01C5 MOVW R24,R10
0546 9601 ADIW R24,1
0547 015C MOVW R10,R24
(0272) x++;
0548 9563 INC R22
0549 94E3 INC R14
054A 2D8E MOV R24,R14
054B 3084 CPI R24,4
054C F378 BCS 0x053C
(0273) }
(0274) x-=4;
054D 5064 SUBI R22,4
(0275) y++;
054E 94C3 INC R12
054F 9543 INC R20
0550 3240 CPI R20,0x20
0551 F340 BCS 0x053A
(0276) }
(0277) }
0553 940E0DDF CALL pop_gset5
0554 9508 RET
_cls:
j --> R20
i --> R14
width --> R22
high --> R10
y --> R12
x --> Y+10
0556 940E0D7C CALL push_arg4
0558 940E0DD2 CALL push_gset5
0559 0169 MOVW R12,R18
055A 84AE LDD R10,14+Y
055B 8968 LDD R22,16+Y
(0278) /* 清除屏幕区域 */
(0279) void cls(unsigned x,unsigned y,unsigned char high,unsigned char width)
(0280) {
(0281) unsigned char i,j;
(0282) x+=2;
055C 858A LDD R24,10+Y
055D 859B LDD R25,11+Y
055E 9602 ADIW R24,2
055F 878A STD R24,10+Y
0560 879B STD R25,11+Y
(0283) for(j=0;j<high;j++)
0561 2744 CLR R20
0562 C021 RJMP 0x0584
(0284) {
(0285) for(i=0;i<width;i++)
0563 24EE CLR R14
0564 C011 RJMP 0x0576
(0286) {
(0287) ocmj_write(0xf0);
0565 EF00 LDI R16,0xF0
0566 DFBE RCALL 0x0525
(0288) ocmj_write(x);
0567 850A LDD R16,10+Y
0568 851B LDD R17,11+Y
0569 DFBB RCALL 0x0525
(0289) ocmj_write(y);
056A 2D0C MOV R16,R12
056B DFB9 RCALL 0x0525
(0290) ocmj_write(55);
056C E307 LDI R16,0x37
056D DFB7 RCALL 0x0525
(0291) ocmj_write(90);
056E E50A LDI R16,0x5A
056F DFB5 RCALL 0x0525
(0292) x++;
0570 858A LDD R24,10+Y
0571 859B LDD R25,11+Y
0572 9601 ADIW R24,1
0573 878A STD R24,10+Y
0574 879B STD R25,11+Y
0575 94E3 INC R14
0576 16E6 CP R14,R22
0577 F368 BCS 0x0565
(0293) }
(0294) x-=width;
0578 2E26 MOV R2,R22
0579 2433 CLR R3
057A 840A LDD R0,10+Y
057B 841B LDD R1,11+Y
057C 1802 SUB R0,R2
057D 0813 SBC R1,R3
057E 860A STD R0,10+Y
057F 861B STD R1,11+Y
(0295) y++;
0580 01C6 MOVW R24,R12
0581 9601 ADIW R24,1
0582 016C MOVW R12,R24
0583 9543 INC R20
0584 154A CP R20,R10
0585 F2E8 BCS 0x0563
(0296) }
(0297) }
0587 940E0DDF CALL pop_gset5
0588 9624 ADIW R28,4
0589 9508 RET
_bmp_tran:
j --> R20
i --> R14
bmp_p --> R22
width --> R10
high --> R12
y --> Y+12
x --> Y+10
058B 940E0D7C CALL push_arg4
058D 940E0DD2 CALL push_gset5
058E 84CE LDD R12,14+Y
058F 88A8 LDD R10,16+Y
0590 896A LDD R22,18+Y
0591 897B LDD R23,19+Y
(0298) /* 传送bmp点阵数据到LCD */
(0299) /* x:0~15(字节为单位) y:0~64 */
(0300) /* bmp_p:指向图形数据的指针 */
(0301) /* high:位图高度(点阵行为单位) */
(0302) /* width:位图宽度(以字节为单位)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -