📄 adc.lis
字号:
010C ; EICRA = 0xaa; //fall edge trigger
010C 8AEA ldi R24,170
010E 80936A00 sts 106,R24
0112 .dbline 237
0112 ; EICRB = 0x00; //no influence
0112 2224 clr R2
0114 2ABE out 0x3a,R2
0116 .dbline 238
0116 ; EIMSK = 0x0f;
0116 8FE0 ldi R24,15
0118 89BF out 0x39,R24
011A .dbline 240
011A ;
011A ; SEI();
011A 7894 sei
011C .dbline -2
011C .dbline 242
011C ;
011C ; }
011C L40:
011C .dbline 0 ; func end
011C 0895 ret
011E .dbend
011E .dbfunc e UART_initialize _UART_initialize fV
.even
011E _UART_initialize::
011E .dbline -1
011E .dbline 244
011E ; void UART_initialize(void)
011E ; {
011E .dbline 245
011E ; CLI();
011E F894 cli
0120 .dbline 247
0120 ;
0120 ; UBRR0H = 0x00;
0120 2224 clr R2
0122 20929000 sts 144,R2
0126 .dbline 248
0126 ; UBRR0L = 0x67; //波特率9600bps
0126 87E6 ldi R24,103
0128 89B9 out 0x9,R24
012A .dbline 249
012A ; UCSR0A = 0x00;
012A 2BB8 out 0xb,R2
012C .dbline 250
012C ; UCSR0B = 0x98; //11011000接收与发送使能
012C 88E9 ldi R24,152
012E 8AB9 out 0xa,R24
0130 .dbline 251
0130 ; UCSR0C = 0x26; //00100110帧格式: 8bits,1stop bit,P 校验
0130 86E2 ldi R24,38
0132 80939500 sts 149,R24
0136 .dbline 253
0136 ;
0136 ; SEI();
0136 7894 sei
0138 .dbline -2
0138 .dbline 254
0138 ; }
0138 L41:
0138 .dbline 0 ; func end
0138 0895 ret
013A .dbend
013A .dbfunc e Delay _Delay fV
013A ; i -> R16,R17
.even
013A _Delay::
013A .dbline -1
013A .dbline 256
013A ; void Delay(void)
013A ; {
013A .dbline 259
013A ; unsigned int i;
013A ;
013A ; for ( i = 0; i < 6000; i++ )
013A 0027 clr R16
013C 1127 clr R17
013E 03C0 xjmp L46
0140 L43:
0140 .dbline 260
0140 .dbline 261
0140 0000 nop
0142 .dbline 262
0142 L44:
0142 .dbline 259
0142 0F5F subi R16,255 ; offset = 1
0144 1F4F sbci R17,255
0146 L46:
0146 .dbline 259
0146 0037 cpi R16,112
0148 E7E1 ldi R30,23
014A 1E07 cpc R17,R30
014C C8F3 brlo L43
014E .dbline -2
014E .dbline 263
014E ; {
014E ; NOP();
014E ; }
014E ; }
014E L42:
014E .dbline 0 ; func end
014E 0895 ret
0150 .dbsym r i 16 i
0150 .dbend
0150 .dbfunc e External_INT_0 _External_INT_0 fV
.even
0150 _External_INT_0::
0150 8A93 st -y,R24
0152 8FB7 in R24,0x3f
0154 8A93 st -y,R24
0156 .dbline -1
0156 .dbline 268
0156 ;
0156 ;
0156 ;
0156 ; void External_INT_0(void)
0156 ; {
0156 .dbline 270
0156 ;
0156 ; ADCSR |= ADC_start;
0156 369A sbi 0x6,6
0158 .dbline 272
0158 ;
0158 ; DDRB |=0xF0; //放在这个位置是错误的,中断回到入口之处
0158 87B3 in R24,0x17
015A 806F ori R24,240
015C 87BB out 0x17,R24
015E .dbline 274
015E ;
015E ; Display_flag = 1;
015E 81E0 ldi R24,1
0160 80930500 sts _Display_flag,R24
0164 .dbline -2
0164 .dbline 278
0164 ;
0164 ; /*UCSR0B |= 0x40;
0164 ; UCSR0B &= ~(0x80);*/
0164 ; }
0164 L47:
0164 8991 ld R24,y+
0166 8FBF out 0x3f,R24
0168 8991 ld R24,y+
016A .dbline 0 ; func end
016A 1895 reti
016C .dbend
016C .dbfunc e ADC_INT _ADC_INT fV
.even
016C _ADC_INT::
016C 2A92 st -y,R2
016E 3A92 st -y,R3
0170 0A93 st -y,R16
0172 1A93 st -y,R17
0174 EA93 st -y,R30
0176 2FB6 in R2,0x3f
0178 2A92 st -y,R2
017A .dbline -1
017A .dbline 281
017A ;
017A ; void ADC_INT(void)
017A ; {
017A .dbline 282
017A ; AD_sample_value = ADC;
017A 24B0 in R2,0x4
017C 35B0 in R3,0x5
017E 30920700 sts _AD_sample_value+1,R3
0182 20920600 sts _AD_sample_value,R2
0186 .dbline 284
0186 ; //PORTB = Blue_LED_on;
0186 ; switch (Type_flag)
0186 00910000 lds R16,_Type_flag
018A 1127 clr R17
018C 0130 cpi R16,1
018E E0E0 ldi R30,0
0190 1E07 cpc R17,R30
0192 49F0 breq L52
0194 0230 cpi R16,2
0196 E0E0 ldi R30,0
0198 1E07 cpc R17,R30
019A 49F0 breq L53
019C 0330 cpi R16,3
019E E0E0 ldi R30,0
01A0 1E07 cpc R17,R30
01A2 49F0 breq L54
01A4 0CC0 xjmp L49
01A6 X2:
01A6 .dbline 285
01A6 ; {
01A6 L52:
01A6 .dbline 287
01A6 ; case 1:
01A6 ; {
01A6 .dbline 288
01A6 ; channel_1_flag = 0;
01A6 2224 clr R2
01A8 20920200 sts _channel_1_flag,R2
01AC .dbline 290
01AC ;
01AC ; }break;
01AC .dbline 290
01AC 0BC0 xjmp L50
01AE L53:
01AE .dbline 293
01AE ;
01AE ; case 2:
01AE ; {
01AE .dbline 294
01AE ; channel_2_flag = 0;
01AE 2224 clr R2
01B0 20920300 sts _channel_2_flag,R2
01B4 .dbline 296
01B4 ;
01B4 ; }break;
01B4 .dbline 296
01B4 07C0 xjmp L50
01B6 L54:
01B6 .dbline 299
01B6 ;
01B6 ; case 3:
01B6 ; {
01B6 .dbline 300
01B6 ; channel_3_flag = 0;
01B6 2224 clr R2
01B8 20920400 sts _channel_3_flag,R2
01BC .dbline 302
01BC ;
01BC ; }break;
01BC .dbline 302
01BC 03C0 xjmp L50
01BE L49:
01BE .dbline 305
01BE .dbline 306
01BE 2224 clr R2
01C0 20920100 sts _channel_0_flag,R2
01C4 .dbline 308
01C4 .dbline 308
01C4 L50:
01C4 .dbline -2
01C4 .dbline 310
01C4 ;
01C4 ; default:
01C4 ; {
01C4 ; channel_0_flag = 0;
01C4 ;
01C4 ; }break;
01C4 ; }
01C4 ; }
01C4 L48:
01C4 2990 ld R2,y+
01C6 2FBE out 0x3f,R2
01C8 E991 ld R30,y+
01CA 1991 ld R17,y+
01CC 0991 ld R16,y+
01CE 3990 ld R3,y+
01D0 2990 ld R2,y+
01D2 .dbline 0 ; func end
01D2 1895 reti
01D4 .dbend
01D4 .dbfunc e External_INT_1 _External_INT_1 fV
.even
01D4 _External_INT_1::
01D4 2A92 st -y,R2
01D6 8A93 st -y,R24
01D8 9A93 st -y,R25
01DA 2FB6 in R2,0x3f
01DC 2A92 st -y,R2
01DE .dbline -1
01DE .dbline 313
01DE ;
01DE ; void External_INT_1(void)
01DE ; {
01DE .dbline 314
01DE ; if (Type_flag < 3 )
01DE 80910000 lds R24,_Type_flag
01E2 8330 cpi R24,3
01E4 20F4 brsh L56
01E6 .dbline 315
01E6 ; {
01E6 .dbline 316
01E6 ; Type_flag += 1;
01E6 8F5F subi R24,255 ; addi 1
01E8 80930000 sts _Type_flag,R24
01EC .dbline 317
01EC ; }
01EC 03C0 xjmp L57
01EE L56:
01EE .dbline 319
01EE ; else
01EE ; {
01EE .dbline 320
01EE ; Type_flag = 0;
01EE 2224 clr R2
01F0 20920000 sts _Type_flag,R2
01F4 .dbline 321
01F4 ; }
01F4 L57:
01F4 .dbline 323
01F4 ;
01F4 ; ADMUX = (ADMUX&0xf8)|Type_flag; //0x41; //
01F4 20900000 lds R2,_Type_flag
01F8 87B1 in R24,0x7
01FA 887F andi R24,248
01FC 8229 or R24,R2
01FE 87B9 out 0x7,R24
0200 .dbline 324
0200 ; Display_flag = 0;
0200 2224 clr R2
0202 20920500 sts _Display_flag,R2
0206 .dbline 325
0206 ; DDRB &=0x1F;
0206 87B3 in R24,0x17
0208 8F71 andi R24,31
020A 87BB out 0x17,R24
020C .dbline -2
020C .dbline 326
020C ; }
020C L55:
020C 2990 ld R2,y+
020E 2FBE out 0x3f,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -