📄 main.lis
字号:
005A ; {
005A .dbline 77
005A ; temp1 |=(1<<i);
005A 01E0 ldi R16,1
005C 10E0 ldi R17,0
005E 9B01 movw R18,R22
0060 0E940000 xcall lsl16
0064 242E mov R2,R20
0066 3324 clr R3
0068 202A or R2,R16
006A 312A or R3,R17
006C 422D mov R20,R2
006E .dbline 79
006E ;
006E ; }
006E L7:
006E .dbline 80
006E ; if((temp%2)==0)
006E A0FC sbrc R10,0
0070 0DC0 rjmp L9
0072 .dbline 81
0072 ; {
0072 .dbline 82
0072 ; temp1 &=~(1<<i);
0072 01E0 ldi R16,1
0074 10E0 ldi R17,0
0076 9B01 movw R18,R22
0078 0E940000 xcall lsl16
007C 1801 movw R2,R16
007E 2094 com R2
0080 3094 com R3
0082 442E mov R4,R20
0084 5524 clr R5
0086 4220 and R4,R2
0088 5320 and R5,R3
008A 442D mov R20,R4
008C .dbline 83
008C ; }
008C L9:
008C .dbline 84
008C B694 lsr R11
008E A794 ror R10
0090 .dbline 85
0090 L4:
0090 .dbline 73
0090 6F5F subi R22,255 ; offset = 1
0092 7F4F sbci R23,255
0094 L6:
0094 .dbline 73
0094 6830 cpi R22,8
0096 E0E0 ldi R30,0
0098 7E07 cpc R23,R30
009A C0F2 brlo L3
009C .dbline 87
009C ; temp =temp/2;
009C ; }
009C ;
009C ; return (temp1);
009C 042F mov R16,R20
009E .dbline -2
009E L2:
009E 0E940000 xcall pop_gset4
00A2 .dbline 0 ; func end
00A2 0895 ret
00A4 .dbsym r temp1 20 c
00A4 .dbsym r i 22 i
00A4 .dbsym r temp 10 i
00A4 .dbsym r data 12 i
00A4 .dbend
00A4 .dbfunc e Display_VOL _Display_VOL fV
.even
00A4 _Display_VOL::
00A4 0E940000 xcall push_gset2
00A8 .dbline -1
00A8 .dbline 91
00A8 ; }
00A8 ;
00A8 ; void Display_VOL(void)
00A8 ; {
00A8 .dbline 93
00A8 ; // Set_Value=10*SET_VALUE[1]+SET_VALUE[3];
00A8 ; Set_Value_H=Set_Value/10+0x30;
00A8 2AE0 ldi R18,10
00AA 30E0 ldi R19,0
00AC 00911600 lds R16,_Set_Value
00B0 10911700 lds R17,_Set_Value+1
00B4 0E940000 xcall div16u
00B8 C801 movw R24,R16
00BA C096 adiw R24,48
00BC 80931100 sts _Set_Value_H,R24
00C0 .dbline 94
00C0 ; Set_Value_L=Set_Value%10+0x30;
00C0 2AE0 ldi R18,10
00C2 30E0 ldi R19,0
00C4 00911600 lds R16,_Set_Value
00C8 10911700 lds R17,_Set_Value+1
00CC 0E940000 xcall mod16u
00D0 C801 movw R24,R16
00D2 C096 adiw R24,48
00D4 80931000 sts _Set_Value_L,R24
00D8 .dbline 95
00D8 ; Write_Position(1,1);
00D8 21E0 ldi R18,1
00DA 30E0 ldi R19,0
00DC 01E0 ldi R16,1
00DE 10E0 ldi R17,0
00E0 0E940000 xcall _Write_Position
00E4 .dbline 96
00E4 ; Write_String(setting);
00E4 00E0 ldi R16,<_setting
00E6 10E0 ldi R17,>_setting
00E8 0E940000 xcall _Write_String
00EC .dbline 98
00EC ;
00EC ; Write_Position(1,5);
00EC 25E0 ldi R18,5
00EE 30E0 ldi R19,0
00F0 01E0 ldi R16,1
00F2 10E0 ldi R17,0
00F4 0E940000 xcall _Write_Position
00F8 .dbline 99
00F8 ; Write_Data(Set_Value_H);
00F8 00911100 lds R16,_Set_Value_H
00FC 1127 clr R17
00FE 0E940000 xcall _Write_Data
0102 .dbline 100
0102 ; Write_String(".");
0102 00E0 ldi R16,<L12
0104 10E0 ldi R17,>L12
0106 0E940000 xcall _Write_String
010A .dbline 101
010A ; Write_Data(Set_Value_L);
010A 00911000 lds R16,_Set_Value_L
010E 1127 clr R17
0110 0E940000 xcall _Write_Data
0114 .dbline 102
0114 ; Write_String("v");
0114 00E0 ldi R16,<L13
0116 10E0 ldi R17,>L13
0118 0E940000 xcall _Write_String
011C .dbline 104
011C ;
011C ; adc_vol=Adverage_vol*2+40;//作为补偿电压值
011C 20911200 lds R18,_Adverage_vol
0120 30911300 lds R19,_Adverage_vol+1
0124 02E0 ldi R16,2
0126 10E0 ldi R17,0
0128 0E940000 xcall empy16s
012C C801 movw R24,R16
012E 8896 adiw R24,40
0130 1C01 movw R2,R24
0132 4424 clr R4
0134 5524 clr R5
0136 30920100 sts _adc_vol+1,R3
013A 20920000 sts _adc_vol,R2
013E 50920300 sts _adc_vol+2+1,R5
0142 40920200 sts _adc_vol+2,R4
0146 .dbline 105
0146 ; VOL_H0=adc_vol/1000+0x30;
0146 48EE ldi R20,232
0148 53E0 ldi R21,3
014A 60E0 ldi R22,0
014C 70E0 ldi R23,0
014E 7A93 st -y,R23
0150 6A93 st -y,R22
0152 5A93 st -y,R21
0154 4A93 st -y,R20
0156 8101 movw R16,R2
0158 9201 movw R18,R4
015A 0E940000 xcall div32s
015E 1801 movw R2,R16
0160 2901 movw R4,R18
0162 40E3 ldi R20,48
0164 50E0 ldi R21,0
0166 60E0 ldi R22,0
0168 70E0 ldi R23,0
016A 240E add R2,R20
016C 351E adc R3,R21
016E 461E adc R4,R22
0170 571E adc R5,R23
0172 30921D00 sts _VOL_H0+1,R3
0176 20921C00 sts _VOL_H0,R2
017A .dbline 106
017A ; VOL_H=adc_vol/100%10+0x30;
017A 44E6 ldi R20,100
017C 50E0 ldi R21,0
017E 60E0 ldi R22,0
0180 70E0 ldi R23,0
0182 40900200 lds R4,_adc_vol+2
0186 50900300 lds R5,_adc_vol+2+1
018A 20900000 lds R2,_adc_vol
018E 30900100 lds R3,_adc_vol+1
0192 7A93 st -y,R23
0194 6A93 st -y,R22
0196 5A93 st -y,R21
0198 4A93 st -y,R20
019A 8101 movw R16,R2
019C 9201 movw R18,R4
019E 0E940000 xcall div32s
01A2 4AE0 ldi R20,10
01A4 50E0 ldi R21,0
01A6 60E0 ldi R22,0
01A8 70E0 ldi R23,0
01AA 7A93 st -y,R23
01AC 6A93 st -y,R22
01AE 5A93 st -y,R21
01B0 4A93 st -y,R20
01B2 0E940000 xcall mod32s
01B6 1801 movw R2,R16
01B8 2901 movw R4,R18
01BA 40E3 ldi R20,48
01BC 50E0 ldi R21,0
01BE 60E0 ldi R22,0
01C0 70E0 ldi R23,0
01C2 240E add R2,R20
01C4 351E adc R3,R21
01C6 461E adc R4,R22
01C8 571E adc R5,R23
01CA 30921B00 sts _VOL_H+1,R3
01CE 20921A00 sts _VOL_H,R2
01D2 .dbline 109
01D2 ; // VOL_L0=adc_vol/10%10+0x30;
01D2 ;
01D2 ; Write_Position(2,1);
01D2 21E0 ldi R18,1
01D4 30E0 ldi R19,0
01D6 02E0 ldi R16,2
01D8 10E0 ldi R17,0
01DA 0E940000 xcall _Write_Position
01DE .dbline 110
01DE ; Write_String("real_vol:");
01DE 00E0 ldi R16,<L14
01E0 10E0 ldi R17,>L14
01E2 0E940000 xcall _Write_String
01E6 .dbline 111
01E6 ; Write_Position(2,10);
01E6 2AE0 ldi R18,10
01E8 30E0 ldi R19,0
01EA 02E0 ldi R16,2
01EC 10E0 ldi R17,0
01EE 0E940000 xcall _Write_Position
01F2 .dbline 112
01F2 ; Write_Data(VOL_H0);
01F2 00911C00 lds R16,_VOL_H0
01F6 10911D00 lds R17,_VOL_H0+1
01FA 0E940000 xcall _Write_Data
01FE .dbline 113
01FE ; Write_Data(0x2e);
01FE 0EE2 ldi R16,46
0200 10E0 ldi R17,0
0202 0E940000 xcall _Write_Data
0206 .dbline 114
0206 ; Write_Data(VOL_H);
0206 00911A00 lds R16,_VOL_H
020A 10911B00 lds R17,_VOL_H+1
020E 0E940000 xcall _Write_Data
0212 .dbline 116
0212 ; // Write_Data(VOL_L0);
0212 ; Write_Position(2,13);
0212 2DE0 ldi R18,13
0214 30E0 ldi R19,0
0216 02E0 ldi R16,2
0218 10E0 ldi R17,0
021A 0E940000 xcall _Write_Position
021E .dbline 117
021E ; Write_String("v");
021E 00E0 ldi R16,<L13
0220 10E0 ldi R17,>L13
0222 0E940000 xcall _Write_String
0226 .dbline -2
0226 L11:
0226 0E940000 xcall pop_gset2
022A .dbline 0 ; func end
022A 0895 ret
022C .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\张秋伟\我的实验\数控电压源\main.c
0000 L16:
0000 .blkb 2
0002 L17:
0002 .blkb 2
.area text(rom, con, rel)
022C .dbfile E:\张秋伟\我的实验\数控电压源\main.c
022C .dbfunc e KeyScan _KeyScan fi
022C .dbsym s key_line L17 i
022C .dbsym s key_value L16 i
022C ; key_return -> R20,R21
022C ; i -> R22
.even
022C _KeyScan::
022C 0E940000 xcall push_gset2
0230 .dbline -1
0230 .dbline 122
0230 ;
0230 ; }
0230 ; #define key_mask 0b00001111
0230 ; uint KeyScan(void)
0230 ; {
0230 .dbline 124
0230 ; static uint key_value,key_line;
0230 ; uint key_return=16;
0230 40E1 ldi R20,16
0232 50E0 ldi R21,0
0234 .dbline 126
0234 ; uchar i;
0234 ; DDRD=0xf0;
0234 80EF ldi R24,240
0236 81BB out 0x11,R24
0238 .dbline 127
0238 ; key_line=0b00010000;
0238 80E1 ldi R24,16
023A 90E0 ldi R25,0
023C 90930300 sts L17+1,R25
0240 80930200 sts L17,R24
0244 .dbline 128
0244 ; for(i=1;i<=4;i++)
0244 61E0 ldi R22,1
0246 25C0 xjmp L21
0248 L18:
0248 .dbline 129
0248 ; {
0248 .dbline 130
0248 ; PORTD=~key_line;
0248 20900200 lds R2,L17
024C 30900300 lds R3,L17+1
0250 2094 com R2
0252 3094 com R3
0254 22BA out 0x12,R2
0256 .dbline 131
0256 ; PORTD=~key_line;
0256 20900200 lds R2,L17
025A 30900300 lds R3,L17+1
025E 2094 com R2
0260 3094 com R3
0262 22BA out 0x12,R2
0264 .dbline 132
0264 ; key_value=key_mask&PIND;
0264 80B3 in R24,0x10
0266 9927 clr R25
0268 8F70 andi R24,15
026A 9070 andi R25,0
026C 90930100 sts L16+1,R25
0270 80930000 sts L16,R24
0274 .dbline 133
0274 ; if(key_value==key_mask)
0274 8F30 cpi R24,15
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -