📄 test_1602.lst
字号:
013F EB8E LDI R24,0xBE
0140 E090 LDI R25,0
0141 1784 CP R24,R20
0142 0795 CPC R25,R21
0143 F0A4 BLT 0x0158
0144 3747 CPI R20,0x77
0145 E0E0 LDI R30,0
0146 075E CPC R21,R30
0147 F409 BNE 0x0149
0148 C054 RJMP 0x019D
0149 374B CPI R20,0x7B
014A E0E0 LDI R30,0
014B 075E CPC R21,R30
014C F409 BNE 0x014E
014D C047 RJMP 0x0195
014E 374D CPI R20,0x7D
014F E0E0 LDI R30,0
0150 075E CPC R21,R30
0151 F409 BNE 0x0153
0152 C03A RJMP 0x018D
0153 374E CPI R20,0x7E
0154 E0E0 LDI R30,0
0155 075E CPC R21,R30
0156 F171 BEQ 0x0185
0157 C047 RJMP 0x019F
0158 3D47 CPI R20,0xD7
0159 E0E0 LDI R30,0
015A 075E CPC R21,R30
015B F409 BNE 0x015D
015C C03C RJMP 0x0199
015D 3D4B CPI R20,0xDB
015E E0E0 LDI R30,0
015F 075E CPC R21,R30
0160 F181 BEQ 0x0191
0161 3D4D CPI R20,0xDD
0162 E0E0 LDI R30,0
0163 075E CPC R21,R30
0164 F121 BEQ 0x0189
0165 3D4E CPI R20,0xDE
0166 E0E0 LDI R30,0
0167 075E CPC R21,R30
0168 F0C1 BEQ 0x0181
0169 3D47 CPI R20,0xD7
016A E0E0 LDI R30,0
016B 075E CPC R21,R30
016C F40C BGE 0x016E
016D C031 RJMP 0x019F
016E 3E47 CPI R20,0xE7
016F E0E0 LDI R30,0
0170 075E CPC R21,R30
0171 F129 BEQ 0x0197
0172 3E4B CPI R20,0xEB
0173 E0E0 LDI R30,0
0174 075E CPC R21,R30
0175 F0C9 BEQ 0x018F
0176 3E4D CPI R20,0xED
0177 E0E0 LDI R30,0
0178 075E CPC R21,R30
0179 F069 BEQ 0x0187
017A 3E4E CPI R20,0xEE
017B E0E0 LDI R30,0
017C 075E CPC R21,R30
017D F009 BEQ 0x017F
017E C020 RJMP 0x019F
(0054) // case 0x00: return 0x00;
(0055) case 0xEE: return 1;
017F E001 LDI R16,1
0180 C01F RJMP 0x01A0
(0056) case 0xDE: return 2;
0181 E002 LDI R16,2
0182 C01D RJMP 0x01A0
(0057) case 0xBE: return 3;
0183 E003 LDI R16,3
0184 C01B RJMP 0x01A0
(0058) case 0x7E: return 4;
0185 E004 LDI R16,4
0186 C019 RJMP 0x01A0
(0059) case 0xED: return 5;
0187 E005 LDI R16,5
0188 C017 RJMP 0x01A0
(0060) case 0xDD: return 6;
0189 E006 LDI R16,6
018A C015 RJMP 0x01A0
(0061) case 0xBD: return 7;
018B E007 LDI R16,7
018C C013 RJMP 0x01A0
(0062) case 0x7D: return 8;
018D E008 LDI R16,0x8
018E C011 RJMP 0x01A0
(0063) case 0xEB: return 9;
018F E009 LDI R16,0x9
0190 C00F RJMP 0x01A0
(0064) case 0xDB: return 44;
0191 E20C LDI R16,0x2C
0192 C00D RJMP 0x01A0
(0065) case 0xBB: return 55;
0193 E307 LDI R16,0x37
0194 C00B RJMP 0x01A0
(0066) case 0x7B: return 66;
0195 E402 LDI R16,0x42
0196 C009 RJMP 0x01A0
(0067) case 0xE7: return 77;
0197 E40D LDI R16,0x4D
0198 C007 RJMP 0x01A0
(0068) case 0xD7: return 88;
0199 E508 LDI R16,0x58
019A C005 RJMP 0x01A0
(0069) case 0xB7: return 99;
019B E603 LDI R16,0x63
019C C003 RJMP 0x01A0
(0070) case 0x77: return 100;
019D E604 LDI R16,0x64
019E C001 RJMP 0x01A0
(0071) default : return 0x00;
019F 2700 CLR R16
01A0 940E052C CALL pop_gset1
01A2 9508 RET
_get_key:
i --> R20
01A3 940E0529 CALL push_gset1
(0072) }
(0073) }
(0074)
(0075) /*
(0076) 按键获取函数
(0077) 获取按键信号,其中包含有状态记录及按键去颤抖。
(0078) 有正确按键按下返回相应按键值
(0079) 无正确按键按下返回"0x00"
(0080) */
(0081) unsigned char get_key(void){
(0082) unsigned char i;
(0083) static unsigned char j;/*按键记录*/
(0084) i = key_read();
01A5 DF69 RCALL _key_read
01A6 2F40 MOV R20,R16
(0085) if (i == 0x00){/*无有效按键按下*/
01A7 2300 TST R16
01A8 F429 BNE 0x01AE
(0086) j = 0x00;/*清除按键记录*/
01A9 2422 CLR R2
01AA 92200071 STS j,R2
(0087) return 0x00;/*程序退出*/
01AC 2700 CLR R16
01AD C011 RJMP 0x01BF
(0088) }
(0089) if (j == 0x00) {/*为新按键*/
01AE 90200071 LDS R2,j
01B0 2022 TST R2
01B1 F461 BNE 0x01BE
(0090) j = i;/*保存本次采样结果*/
01B2 93400071 STS j,R20
(0091) delay_ms(10);/*去按键颤抖*/
01B4 E00A LDI R16,0xA
01B5 E010 LDI R17,0
01B6 DEBD RCALL _delay_ms
(0092) i = key_read();
01B7 DF57 RCALL _key_read
01B8 2F40 MOV R20,R16
(0093) if(i == j) {
01B9 90200071 LDS R2,j
01BB 1502 CP R16,R2
01BC F409 BNE 0x01BE
(0094) return i;
01BD C001 RJMP 0x01BF
(0095) }
(0096) }
(0097) return 0x00;
01BE 2700 CLR R16
01BF 940E052C CALL pop_gset1
01C1 9508 RET
_get_ad:
hh --> Y+1
ll --> R20
num --> R22
01C2 940E0527 CALL push_gset2
(0098) }
(0099)
(0100)
(0101) /*ADC采样函数,采样第7通道信号,采样分辨率256*/
(0102) unsigned int get_ad(void) { //3.69KHZ
(0103) unsigned char hh,ll;
(0104) unsigned int num=0;
01C4 2766 CLR R22
01C5 2777 CLR R23
(0105) // _CLI();
(0106) asm("cli");
01C6 94F8 BCLR 7
(0107) DDRA = 0x00; /*方向输入*/
01C7 2422 CLR R2
01C8 BA2A OUT 0x1A,R2
(0108) PORTA = 0x7F; /*打开上拉*/
01C9 E78F LDI R24,0x7F
01CA BB8B OUT 0x1B,R24
(0109) // delay_us(1); //10us
(0110)
(0111)
(0112) ADMUX = 0x47; /*基准AVCC、10位、通道7*/
01CB E487 LDI R24,0x47
01CC B987 OUT 0x07,R24
(0113) ADCSRA = 0xC0; /*使能、开启、4分频*/
01CD EC80 LDI R24,0xC0
01CE B986 OUT 0x06,R24
(0114) while(!(ADCSRA & (1 << ADIF))); /*等待*/
01CF 9B34 SBIS 0x06,4
01D0 CFFE RJMP 0x01CF
(0115) ll=ADCL;
01D1 B144 IN R20,0x04
(0116) num = ADCH;
01D2 B165 IN R22,0x05
01D3 2777 CLR R23
(0117) num=num*256+ll;
01D4 E000 LDI R16,0
01D5 E011 LDI R17,1
01D6 019B MOVW R18,R22
01D7 940E050B CALL empy16s
01D9 01B8 MOVW R22,R16
01DA 2E24 MOV R2,R20
01DB 2433 CLR R3
01DC 0D62 ADD R22,R2
01DD 1D73 ADC R23,R3
(0118) ADCSRA &= ~(1 << ADIF); /*清标志*/
01DE 9834 CBI 0x06,4
(0119) ADCSRA &= ~(1 << ADEN); /*关闭转换*/
01DF 9837 CBI 0x06,7
(0120)
(0121) DDRA=0XFF;
01E0 EF8F LDI R24,0xFF
01E1 BB8A OUT 0x1A,R24
(0122) PORTA=0X00;
01E2 2422 CLR R2
01E3 BA2B OUT 0x1B,R2
(0123) //SEI();
(0124) asm("sei");
01E4 9478 BSET 7
(0125) return num;
01E5 018B MOVW R16,R22
01E6 940E051B CALL pop_gset2
01E8 9508 RET
_lcd_process:
01E9 940E0529 CALL push_gset1
01EB 9725 SBIW R28,5
(0126)
(0127) }
(0128)
(0129) unsigned char lcd_process(void)
(0130) {
(0131)
(0132) if( disp_num2<=3.3&&disp_num2>=1)
01EC E60C LDI R16,0x6C
01ED E010 LDI R17,0
01EE 940E0549 CALL lpm32
01F0 933A ST R19,-Y
01F1 932A ST R18,-Y
01F2 931A ST R17,-Y
01F3 930A ST R16,-Y
01F4 90400074 LDS R4,disp_num2+2
01F6 90500075 LDS R5,disp_num2+3
01F8 90200072 LDS R2,disp_num2
01FA 90300073 LDS R3,disp_num2+1
01FC 925A ST R5,-Y
01FD 924A ST R4,-Y
01FE 923A ST R3,-Y
01FF 922A ST R2,-Y
0200 940E06BD CALL cmp32f
0202 F40C BGE 0x0204
0203 C0CB RJMP 0x02CF
0204 90400074 LDS R4,disp_num2+2
0206 90500075 LDS R5,disp_num2+3
0208 90200072 LDS R2,disp_num2
020A 90300073 LDS R3,disp_num2+1
020C 925A ST R5,-Y
020D 924A ST R4,-Y
020E 923A ST R3,-Y
020F 922A ST R2,-Y
0210 E608 LDI R16,0x68
0211 E010 LDI R17,0
0212 940E0549 CALL lpm32
0214 933A ST R19,-Y
0215 932A ST R18,-Y
0216 931A ST R17,-Y
0217 930A ST R16,-Y
0218 940E06BD CALL cmp32f
021A F40C BGE 0x021C
021B C0B3 RJMP 0x02CF
(0133) {
(0134) LCD_write_char(1,0,'U');
021C E585 LDI R24,0x55
021D 8388 STD Y+0,R24
021E 2722 CLR R18
021F E001 LDI R16,1
0220 DEA7 RCALL _LCD_write_char
(0135) LCD_write_char(2,0,'=');
0221 E38D LDI R24,0x3D
0222 8388 STD Y+0,R24
0223 2722 CLR R18
0224 E002 LDI R16,2
0225 DEA2 RCALL _LCD_write_char
(0136) LCD_write_num(3,0,(disp_num2*100)/100);
0226 E604 LDI R16,0x64
0227 E010 LDI R17,0
0228 940E0549 CALL lpm32
022A 933A ST R19,-Y
022B 932A ST R18,-Y
022C 931A ST R17,-Y
022D 930A ST R16,-Y
022E 90400074 LDS R4,disp_num2+2
0230 90500075 LDS R5,disp_num2+3
0232 90200072 LDS R2,disp_num2
0234 90300073 LDS R3,disp_num2+1
0236 925A ST R5,-Y
0237 924A ST R4,-Y
0238 923A ST R3,-Y
0239 922A ST R2,-Y
023A 940E06EE CALL empy32fs
023C E604 LDI R16,0x64
023D E010 LDI R17,0
023E 940E0549 CALL lpm32
0240 933A ST R19,-Y
0241 932A ST R18,-Y
0242 931A ST R17,-Y
0243 930A ST R16,-Y
0244 940E0663 CALL div32f
0246 01FE MOVW R30,R28
0247 8301 STD Z+1,R16
0248 8312 STD Z+2,R17
0249 8323 STD Z+3,R18
024A 8334 STD Z+4,R19
024B 01FE MOVW R30,R28
024C 8021 LDD R2,Z+1
024D 8032 LDD R3,Z+2
024E 8043 LDD R4,Z+3
024F 8054 LDD R5,Z+4
0250 925A ST R5,-Y
0251 924A ST R4,-Y
0252 923A ST R3,-Y
0253 922A ST R2,-Y
0254 E600 LDI R16,0x60
0255 E010 LDI R17,0
0256 940E0549 CALL lpm32
0258 933A ST R19,-Y
0259 932A ST R18,-Y
025A 931A ST R17,-Y
025B 930A ST R16,-Y
025C 940E06BD CALL cmp32f
025E F0CC BLT 0x0278
025F 01FE MOVW R30,R28
0260 8021 LDD R2,Z+1
0261 8032 LDD R3,Z+2
0262 8043 LDD R4,Z+3
0263 8054 LDD R5,Z+4
0264 925A ST R5,-Y
0265 924A ST R4,-Y
0266 923A ST R3,-Y
0267 922A ST R2,-Y
0268 E600 LDI R16,0x60
0269 E010 LDI R17,0
026A 940E0549 CALL lpm32
026C 933A ST R19,-Y
026D 932A ST R18,-Y
026E 931A ST R17,-Y
026F 930A ST R16,-Y
0270 940E060A CALL sub32f
0272 940E055D CALL fp2int
0274 01A8 MOVW R20,R16
0275 5040 SUBI R20,0
0276 4850 SBCI R21,0x80
0277 C008 RJMP 0x0280
0278 01FE MOVW R30,R28
0279 8101 LDD R16,Z+1
027A 8112 LDD R17,Z+2
027B 8123 LDD R18,Z+3
027C 8134 LDD R19,Z+4
027D 940E055D CALL fp2int
027F 01A8 MOVW R20,R16
0280 8348 STD Y+0,R20
0281 2722 CLR R18
0282 E003 LDI R16,3
0283 DE56 RCALL _LCD_write_num
(0137) LCD_write_char(4,0,'.');
0284 E28E LDI R24,0x2E
0285 8388 STD Y+0,R24
0286 2722 CLR R18
0287 E004 LDI R16,4
0288 DE3F RCALL _LCD_write_char
(0138) LCD_write_num(5,0,(int)(disp_num2*10)%10);
0289 E50C LDI R16,0x5C
028A E010 LDI R17,0
028B 940E0549 CALL lpm32
028D 933A ST R19,-Y
028E 932A ST R18,-Y
028F 931A ST R17,-Y
0290 930A ST R16,-Y
0291 90400074 LDS R4,disp_num2+2
0293 90500075 LDS R5,disp_num2+3
0295 90200072 LDS R2,disp_num2
0297 90300073 LDS R3,disp_num2+1
0299 925A ST R5,-Y
029A 924A ST R4,-Y
029B 923A ST R3,-Y
029C 922A ST R2,-Y
029D 940E06F1 CALL empy32f
029F 940E055D CALL fp2int
02A1 E02A LDI R18,0xA
02A2 E030 LDI R19,0
02A3 940E04D1 CALL mod16s
02A5 8308 STD Y+0,R16
02A6 2722 CLR R18
02A7 E005 LDI R16,5
02A8 DE31 RCALL _LCD_write_num
(0139) LCD_write_num(6,0,(int)(disp_num2*100)%10);
02A9 E604 LDI R16,0x64
02AA E010 LDI R17,0
02AB 940E0549 CALL lpm32
02AD 933A ST R19,-Y
02AE 932A ST R18,-Y
02AF 931A ST R17,-Y
02B0 930A ST R16,-Y
02B1 90400074 LDS R4,disp_num2+2
02B3 90500075 LDS R5,disp_num2+3
02B5 90200072 LDS R2,disp_num2
02B7 90300073 LDS R3,disp_num2+1
02B9 925A ST R5,-Y
02BA 924A ST R4,-Y
02BB 923A ST R3,-Y
02BC 922A ST R2,-Y
02BD 940E06F1 CALL empy32f
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -