📄 ir_test.lis
字号:
060C ; LCD_DATA_PORT|=data_temp&0xf0; //写高四位
060C CB01 movw R24,R22
060E 807F andi R24,240
0610 9070 andi R25,0
0612 25B2 in R2,0x15
0614 3324 clr R3
0616 282A or R2,R24
0618 392A or R3,R25
061A 25BA out 0x15,R2
061C .dbline 86
061C ; LCD_en_write();
061C E1DF xcall _LCD_en_write
061E .dbline 87
061E ; data_temp=data_temp<<4;
061E 660F lsl R22
0620 771F rol R23
0622 660F lsl R22
0624 771F rol R23
0626 660F lsl R22
0628 771F rol R23
062A 660F lsl R22
062C 771F rol R23
062E .dbline 88
062E ; LCD_DATA_PORT&=0X0f;
062E 85B3 in R24,0x15
0630 8F70 andi R24,15
0632 85BB out 0x15,R24
0634 .dbline 89
0634 ; LCD_DATA_PORT|=data_temp&0xf0; //写低四位
0634 CB01 movw R24,R22
0636 807F andi R24,240
0638 9070 andi R25,0
063A 25B2 in R2,0x15
063C 3324 clr R3
063E 282A or R2,R24
0640 392A or R3,R25
0642 25BA out 0x15,R2
0644 .dbline 90
0644 ; LCD_en_write();
0644 CDDF xcall _LCD_en_write
0646 .dbline 91
0646 ; }
0646 21C0 xjmp L110
0648 L109:
0648 .dbline 93
0648 ; else
0648 ; {
0648 .dbline 94
0648 ; LCD_RS_PORT&=~LCD_RS; //RS=0
0648 AA98 cbi 0x15,2
064A .dbline 95
064A ; LCD_DATA_PORT&=0X0f;
064A 85B3 in R24,0x15
064C 8F70 andi R24,15
064E 85BB out 0x15,R24
0650 .dbline 96
0650 ; LCD_DATA_PORT|=command_temp&0xf0; //写高四位
0650 CA01 movw R24,R20
0652 807F andi R24,240
0654 9070 andi R25,0
0656 25B2 in R2,0x15
0658 3324 clr R3
065A 282A or R2,R24
065C 392A or R3,R25
065E 25BA out 0x15,R2
0660 .dbline 97
0660 ; LCD_en_write();
0660 BFDF xcall _LCD_en_write
0662 .dbline 98
0662 ; command_temp=command_temp<<4;
0662 440F lsl R20
0664 551F rol R21
0666 440F lsl R20
0668 551F rol R21
066A 440F lsl R20
066C 551F rol R21
066E 440F lsl R20
0670 551F rol R21
0672 .dbline 99
0672 ; LCD_DATA_PORT&=0x0f;
0672 85B3 in R24,0x15
0674 8F70 andi R24,15
0676 85BB out 0x15,R24
0678 .dbline 100
0678 ; LCD_DATA_PORT|=command_temp&0xf0; //写低四位
0678 CA01 movw R24,R20
067A 807F andi R24,240
067C 9070 andi R25,0
067E 25B2 in R2,0x15
0680 3324 clr R3
0682 282A or R2,R24
0684 392A or R3,R25
0686 25BA out 0x15,R2
0688 .dbline 101
0688 ; LCD_en_write();
0688 ABDF xcall _LCD_en_write
068A .dbline 102
068A ; }
068A L110:
068A .dbline -2
068A L108:
068A .dbline 0 ; func end
068A 0C940000 xjmp pop_xgsetF03C
068E .dbsym r data_temp 22 i
068E .dbsym r command_temp 20 i
068E .dbsym r data 12 i
068E .dbsym r command 10 i
068E .dbend
068E .dbfunc e clear _clear fV
068E ; i -> R20
.even
068E _clear::
068E 4A93 st -y,R20
0690 .dbline -1
0690 .dbline 108
0690 ; }
0690 ; /*-------------------------------------------------------------
0690 ; 函数: 清屏lcd1602
0690 ; ---------------------------------------------------------------*/
0690 ; void clear(void)
0690 ; {
0690 .dbline 110
0690 ; unsigned char i;
0690 ; LCD_set_xy(0,0);
0690 2227 clr R18
0692 0027 clr R16
0694 93DF xcall _LCD_set_xy
0696 .dbline 111
0696 ; for(i=0;i<16;i++)
0696 4427 clr R20
0698 06C0 xjmp L115
069A L112:
069A .dbline 112
069A ; LCD_write_char(0,' ');
069A 20E2 ldi R18,32
069C 30E0 ldi R19,0
069E 0027 clr R16
06A0 1127 clr R17
06A2 A4DF xcall _LCD_write_char
06A4 L113:
06A4 .dbline 111
06A4 4395 inc R20
06A6 L115:
06A6 .dbline 111
06A6 4031 cpi R20,16
06A8 C0F3 brlo L112
06AA X105:
06AA .dbline 113
06AA ; LCD_set_xy(0,1);
06AA 21E0 ldi R18,1
06AC 0027 clr R16
06AE 86DF xcall _LCD_set_xy
06B0 .dbline 114
06B0 ; for(i=0;i<16;i++)
06B0 4427 clr R20
06B2 06C0 xjmp L119
06B4 L116:
06B4 .dbline 115
06B4 ; LCD_write_char(0,' ');
06B4 20E2 ldi R18,32
06B6 30E0 ldi R19,0
06B8 0027 clr R16
06BA 1127 clr R17
06BC 97DF xcall _LCD_write_char
06BE L117:
06BE .dbline 114
06BE 4395 inc R20
06C0 L119:
06C0 .dbline 114
06C0 4031 cpi R20,16
06C2 C0F3 brlo L116
06C4 X106:
06C4 .dbline -2
06C4 L111:
06C4 .dbline 0 ; func end
06C4 4991 ld R20,y+
06C6 0895 ret
06C8 .dbsym r i 20 c
06C8 .dbend
06C8 .dbfunc e LCD_write_string _LCD_write_string fV
06C8 ; s -> R20,R21
06C8 ; Y -> R12
06C8 ; X -> R10
.even
06C8 _LCD_write_string::
06C8 0E940000 xcall push_xgset303C
06CC C22E mov R12,R18
06CE A02E mov R10,R16
06D0 4E81 ldd R20,y+6
06D2 5F81 ldd R21,y+7
06D4 .dbline -1
06D4 .dbline 123
06D4 ; }
06D4 ; /*-------------------------------------------------------------
06D4 ; 函数: 写字符串
06D4 ; 参数:列---X=0~15,行---Y=0~1 写地址
06D4 ; s为所要写的字符串
06D4 ; ---------------------------------------------------------------*/
06D4 ; void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
06D4 ; {
06D4 .dbline 124
06D4 ; LCD_set_xy(X,Y);
06D4 2C2D mov R18,R12
06D6 0A2D mov R16,R10
06D8 71DF xcall _LCD_set_xy
06DA 08C0 xjmp L122
06DC L121:
06DC .dbline 126
06DC ; while(*s)
06DC ; {
06DC .dbline 127
06DC ; LCD_write_char(0,*s);
06DC FA01 movw R30,R20
06DE 2081 ldd R18,z+0
06E0 3327 clr R19
06E2 0027 clr R16
06E4 1127 clr R17
06E6 82DF xcall _LCD_write_char
06E8 .dbline 128
06E8 ; s++;
06E8 4F5F subi R20,255 ; offset = 1
06EA 5F4F sbci R21,255
06EC .dbline 129
06EC ; }
06EC L122:
06EC .dbline 125
06EC FA01 movw R30,R20
06EE 2080 ldd R2,z+0
06F0 2220 tst R2
06F2 A1F7 brne L121
06F4 X107:
06F4 .dbline -2
06F4 L120:
06F4 .dbline 0 ; func end
06F4 0C940000 xjmp pop_xgset303C
06F8 .dbsym r s 20 pc
06F8 .dbsym r Y 12 c
06F8 .dbsym r X 10 c
06F8 .dbend
06F8 .dbfunc e LCD_write_data _LCD_write_data fV
06F8 ; data -> y+0
06F8 ; i -> R20
06F8 ; dat -> R14,R15
06F8 ; Y -> R12
06F8 ; X -> R10
.even
06F8 _LCD_write_data::
06F8 0E940000 xcall push_xgset30FC
06FC C22E mov R12,R18
06FE A02E mov R10,R16
0700 2497 sbiw R28,4
0702 EC84 ldd R14,y+12
0704 FD84 ldd R15,y+13
0706 .dbline -1
0706 .dbline 138
0706 ; }
0706 ;
0706 ; /*-------------------------------------------------------------
0706 ; 函数: 写数字
0706 ; 参数:列---X=0~15,行---Y=0~1 写地址
0706 ; dat为所要写的数字
0706 ; ---------------------------------------------------------------*/
0706 ; void LCD_write_data(unsigned char X,unsigned char Y,int dat)
0706 ; {
0706 .dbline 151
0706 ; //unsigned char fuhao;
0706 ; unsigned char data[4];
0706 ; unsigned char i;
0706 ;
0706 ; /*if(dat<0)
0706 ; {
0706 ; fuhao='-';
0706 ; dat=0-dat;
0706 ; }
0706 ; else
0706 ; fuhao=' ';
0706 ; data[0]=fuhao;*/
0706 ; data[0]=dat/1000+0x30; dat%=1000;
0706 28EE ldi R18,1000
0708 33E0 ldi R19,3
070A 8701 movw R16,R14
070C 0E940000 xcall div16s
0710 C801 movw R24,R16
0712 C096 adiw R24,48
0714 8883 std y+0,R24
0716 .dbline 151
0716 28EE ldi R18,1000
0718 33E0 ldi R19,3
071A 8701 movw R16,R14
071C 0E940000 xcall mod16s
0720 7801 movw R14,R16
0722 .dbline 152
0722 ; data[1]=dat/100+0x30; dat%=100;
0722 24E6 ldi R18,100
0724 30E0 ldi R19,0
0726 0E940000 xcall div16s
072A C801 movw R24,R16
072C C096 adiw R24,48
072E 8983 std y+1,R24
0730 .dbline 152
0730 24E6 ldi R18,100
0732 30E0 ldi R19,0
0734 8701 movw R16,R14
0736 0E940000 xcall mod16s
073A 7801 movw R14,R16
073C .dbline 153
073C ; data[2]=dat/10+0x30;
073C 2AE0 ldi R18,10
073E 30E0 ldi R19,0
0740 0E940000 xcall div16s
0744 C801 movw R24,R16
0746 C096 adiw R24,48
0748 8A83 std y+2,R24
074A .dbline 154
074A ; data[3]=dat%10+0x30;
074A 2AE0 ldi R18,10
074C 30E0 ldi R19,0
074E 8701 movw R16,R14
0750 0E940000 xcall mod16s
0754 C801 movw R24,R16
0756 C096 adiw R24,48
0758 8B83 std y+3,R24
075A .dbline 156
075A ;
075A ; LCD_set_xy(X,Y);
075A 2C2D mov R18,R12
075C 0A2D mov R16,R10
075E 2EDF xcall _LCD_set_xy
0760 .dbline 157
0760 ; for(i=0;i<4;i++)
0760 4427 clr R20
0762 0BC0 xjmp L131
0764 L128:
0764 .dbline 158
0764 ; LCD_write_char(0,data[i]);
0764 CE01 movw R24,R28
0766 E42F mov R30,R20
0768 FF27 clr R31
076A E80F add R30,R24
076C F91F adc R31,R25
076E 2081 ldd R18,z+0
0770 3327 clr R19
0772 0027 clr R16
0774 1127 clr R17
0776 3ADF xcall _LCD_write_char
0778 L129:
0778 .dbline 157
0778 4395 inc R20
077A L131:
077A .dbline 157
077A 4430 cpi R20,4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -