📄 main.lis
字号:
00F6 0196 adiw R24,1
00F8 90930100 sts _extint_count+1,R25
00FC 80930000 sts _extint_count,R24
0100 .dbline 62
0100 80910200 lds R24,_act_flag
0104 8130 cpi R24,1
0106 19F0 breq L16
0108 .dbline 63
0108 .dbline 64
0108 81E0 ldi R24,1
010A 80930200 sts _act_flag,R24
010E .dbline 65
010E L16:
010E .dbline -2
010E L15:
010E 8991 ld R24,y+
0110 8FBF out 0x3f,R24
0112 9991 ld R25,y+
0114 8991 ld R24,y+
0116 .dbline 0 ; func end
0116 1895 reti
0118 .dbend
0118 .dbfunc e adc_init _adc_init fV
.even
0118 _adc_init::
0118 .dbline -1
0118 .dbline 68
0118 ; }
0118 ;
0118 ; #pragma interrupt_handler int0_isr:2
0118 ; void int0_isr(void)
0118 ; {
0118 ; extint_count++;
0118 ; if (act_flag!=1)
0118 ; {
0118 ; act_flag = 1;
0118 ; }
0118 ; }
0118 ; void adc_init(void)
0118 ; {
0118 .dbline 69
0118 ; ADMUX = (1<<REFS1)|
0118 80EC ldi R24,192
011A 87B9 out 0x7,R24
011C .dbline 73
011C ; (1<<REFS0)| //选择内部2.56v作为参考电压
011C ; 0x00; //使用ad转换0通道
011C ; //ADLAR = 0,转换结果选择右对齐
011C ; ADCSRA = (1<<ADEN)| //ADC使能
011C 8EED ldi R24,222
011E 86B9 out 0x6,R24
0120 .dbline -2
0120 L18:
0120 .dbline 0 ; func end
0120 0895 ret
0122 .dbend
0122 .dbfunc e init_devices _init_devices fV
.even
0122 _init_devices::
0122 .dbline -1
0122 .dbline 81
0122 ; (1<<ADSC)| //开始一次ad转换
0122 ; (1<<ADIF)| //写1,将ADIF位清0
0122 ; (1<<ADIE)| //允许ADC中断
0122 ; 0x06; //时钟分频系数为64
0122 ; }
0122 ; //call this routine to initialize all peripherals
0122 ; void init_devices(void)
0122 ; {
0122 .dbline 82
0122 ; CLI(); //关闭全局中断
0122 F894 cli
0124 .dbline 83
0124 ; port_init(); //CPU端口初始化
0124 6DDF xcall _port_init
0126 .dbline 85
0126 ; /**/
0126 ; MCUCR = 0x02; //INT0引脚上的下降沿触发中断
0126 82E0 ldi R24,2
0128 85BF out 0x35,R24
012A .dbline 86
012A ; GICR = 0x40; //外部中断0请求使能
012A 80E4 ldi R24,64
012C 8BBF out 0x3b,R24
012E .dbline 100
012E ; /**/
012E ; /** /
012E ; MCUCR = 0x00; //INT0引脚上的低电平触发中断
012E ; GICR = 0x40; //外部中断0请求使能
012E ; /**/
012E ; /** /
012E ; MCUCR = 0x01; //INT0引脚上的上升沿和下降沿都触发中断
012E ; GICR = 0x40; //外部中断0请求使能
012E ; /**/
012E ; /** /
012E ; MCUCR = 0x03; //INT0引脚上的上升沿触发中断
012E ; GICR = 0x40; //外部中断0请求使能
012E ; /**/
012E ; adc_init();
012E F4DF xcall _adc_init
0130 .dbline 101
0130 ; SEI(); //打开全局中断
0130 7894 sei
0132 .dbline -2
0132 L19:
0132 .dbline 0 ; func end
0132 0895 ret
0134 .dbend
0134 .dbfunc e main _main fV
0134 ; temp -> <dead>
0134 ; temp_show -> y+2
0134 ; i -> R20
.even
0134 _main::
0134 2797 sbiw R28,7
0136 .dbline -1
0136 .dbline 105
0136 ;
0136 ; }
0136 ; void main(void)
0136 ; {
0136 .dbline 109
0136 ; char temp_show[5]; //定义数组用作在液晶屏上进行显示
0136 ; unsigned char i;
0136 ; unsigned int temp;
0136 ; for(i=0;i<5;i++)
0136 4427 clr R20
0138 09C0 xjmp L24
013A L21:
013A .dbline 110
013A .dbline 111
013A CE01 movw R24,R28
013C 0296 adiw R24,2
013E E42F mov R30,R20
0140 FF27 clr R31
0142 E80F add R30,R24
0144 F91F adc R31,R25
0146 2224 clr R2
0148 2082 std z+0,R2
014A .dbline 112
014A L22:
014A .dbline 109
014A 4395 inc R20
014C L24:
014C .dbline 109
014C 4530 cpi R20,5
014E A8F3 brlo L21
0150 .dbline 113
0150 ; {
0150 ; temp_show[i] = 0;
0150 ; }
0150 ; temp_show[4] = 0xff; //显示结束标志
0150 8FEF ldi R24,255
0152 8E83 std y+6,R24
0154 .dbline 115
0154 ; /**/
0154 ; init_devices();
0154 E6DF xcall _init_devices
0156 .dbline 116
0156 ; LCDReady();
0156 0E940000 xcall _LCDReady
015A .dbline 117
015A ; LcdInit(); //LCD初始化
015A 0E940000 xcall _LcdInit
015E .dbline 118
015E ; CharsWrite(0,1,"AD0 VOLTAGE:"); //在LCD的第一行显示"AD0 VOLTAGE:"
015E 80E0 ldi R24,<L26
0160 90E0 ldi R25,>L26
0162 9983 std y+1,R25
0164 8883 std y+0,R24
0166 21E0 ldi R18,1
0168 0027 clr R16
016A 0E940000 xcall _CharsWrite
016E .dbline 119
016E ; CharsWrite(0,2,"0.0V"); //在第二行显示“0.0V”
016E 80E0 ldi R24,<L27
0170 90E0 ldi R25,>L27
0172 9983 std y+1,R25
0174 8883 std y+0,R24
0176 22E0 ldi R18,2
0178 0027 clr R16
017A 0E940000 xcall _CharsWrite
017E .dbline 120
017E ; uart_init(); //串口初始化
017E 0E940000 xcall _uart_init
0182 .dbline 121
0182 ; delay_ms(1000);
0182 08EE ldi R16,1000
0184 13E0 ldi R17,3
0186 0E940000 xcall _delay_ms
018A 1BC0 xjmp L29
018C L28:
018C .dbline 124
018C .dbline 125
018C 0E940000 xcall _ClearLcd
0190 .dbline 126
0190 00E5 ldi R16,80
0192 10E0 ldi R17,0
0194 0E940000 xcall _delay_us
0198 .dbline 127
0198 80E0 ldi R24,<L26
019A 90E0 ldi R25,>L26
019C 9983 std y+1,R25
019E 8883 std y+0,R24
01A0 21E0 ldi R18,1
01A2 0027 clr R16
01A4 0E940000 xcall _CharsWrite
01A8 .dbline 128
01A8 56DF xcall _data_con
01AA .dbline 129
01AA 80E0 ldi R24,<_adc_show
01AC 90E0 ldi R25,>_adc_show
01AE 9983 std y+1,R25
01B0 8883 std y+0,R24
01B2 22E0 ldi R18,2
01B4 0027 clr R16
01B6 0E940000 xcall _CharsWrite
01BA .dbline 130
01BA 0CE2 ldi R16,300
01BC 11E0 ldi R17,1
01BE 0E940000 xcall _delay_ms
01C2 .dbline 131
01C2 L29:
01C2 .dbline 123
01C2 E4CF xjmp L28
01C4 X0:
01C4 .dbline -2
01C4 L20:
01C4 2796 adiw R28,7
01C6 .dbline 0 ; func end
01C6 0895 ret
01C8 .dbsym l temp 3 i
01C8 .dbsym l temp_show 2 A[5:5]c
01C8 .dbsym r i 20 c
01C8 .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\radio\第十一篇\test-adc\main.c
0000 _adc_show::
0000 .blkb 6
0006 .dbsym e adc_show _adc_show A[6:6]c
0006 _adc_result::
0006 .blkb 2
0008 .dbsym e adc_result _adc_result i
.area data(ram, con, rel)
0003 .dbfile F:\radio\第十一篇\test-adc\main.c
0003 L27:
0003 .blkb 5
.area idata
0003 302E305600 .byte 48,46,48,'V,0
.area data(ram, con, rel)
0008 .dbfile F:\radio\第十一篇\test-adc\main.c
0008 L26:
0008 .blkb 13
.area idata
0008 41443020564F4C544147453A00 .byte 'A,'D,48,32,'V,'O,'L,'T,'A,'G,'E,58,0
.area data(ram, con, rel)
0015 .dbfile F:\radio\第十一篇\test-adc\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -