⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc.lis

📁 LCD1602来显示通过AVR ADC0采集的信号
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .area text(rom, con, rel)
 030C                   .dbfile D:\实验程序\模数转换\adc_1602\ADC.c
 030C                   .dbfunc e main _main fI
 030C           ;         adc_h1 -> <dead>
 030C           ;         adc_l1 -> <dead>
 030C           ;          ten_4 -> <dead>
 030C           ;         adc_h0 -> R12,R13
 030C           ;         adc_l0 -> R10,R11
 030C           ;      adc_data1 -> R20,R21
 030C           ;          ten_1 -> R10
 030C           ;          ten_2 -> R12
 030C           ;      adc_data0 -> R22,R23
 030C           ;          ten_3 -> R14
 030C           ;              i -> R20
                        .even
 030C           _main::
 030C 2497              sbiw R28,4
 030E                   .dbline -1
 030E                   .dbline 13
 030E           ; #include<iom16v.h>
 030E           ; #include <macros.h>
 030E           ; #include"1602.h"
 030E           ; #define uchar unsigned char 
 030E           ; #define uint unsigned int 
 030E           ; 
 030E           ; uchar adc_0[]={"ADC_0: .  V"};
 030E           ; uchar adc_1[]={"ADC_1: .  V"};
 030E           ; 
 030E           ; //ADC测试,使用1602显示ADC0和ADC1的值
 030E           ; //主函数
 030E           ; main()
 030E           ; {
 030E                   .dbline 18
 030E           ; uchar ten_1,ten_2,ten_3,ten_4,i;
 030E           ; uint adc_data0,adc_l0,adc_h0,adc_data1,adc_l1,adc_h1;
 030E           ; 
 030E           ; //初始化端口
 030E           ; DDRA=0xf0;
 030E 80EF              ldi R24,240
 0310 8ABB              out 0x1a,R24
 0312                   .dbline 19
 0312           ; PORTA=0x00;
 0312 2224              clr R2
 0314 2BBA              out 0x1b,R2
 0316                   .dbline 20
 0316           ; DDRB=0x00;
 0316 27BA              out 0x17,R2
 0318                   .dbline 21
 0318           ; DDRD=0xff;
 0318 8FEF              ldi R24,255
 031A 81BB              out 0x11,R24
 031C                   .dbline 22
 031C           ; PORTD=0x00;
 031C 22BA              out 0x12,R2
 031E                   .dbline 24
 031E           ; //1602初始化
 031E           ; LcdInit();   
 031E C0DE              xcall _LcdInit
 0320                   .dbline 25
 0320           ; WriteChar(1,2,11,adc_0);
 0320 80E0              ldi R24,<_adc_0
 0322 90E0              ldi R25,>_adc_0
 0324 9B83              std y+3,R25
 0326 8A83              std y+2,R24
 0328 8BE0              ldi R24,11
 032A 90E0              ldi R25,0
 032C 9983              std y+1,R25
 032E 8883              std y+0,R24
 0330 22E0              ldi R18,2
 0332 01E0              ldi R16,1
 0334 BADF              xcall _WriteChar
 0336                   .dbline 26
 0336           ; WriteChar(2,2,11,adc_1);
 0336 80E0              ldi R24,<_adc_1
 0338 90E0              ldi R25,>_adc_1
 033A 9B83              std y+3,R25
 033C 8A83              std y+2,R24
 033E 8BE0              ldi R24,11
 0340 90E0              ldi R25,0
 0342 9983              std y+1,R25
 0344 8883              std y+0,R24
 0346 22E0              ldi R18,2
 0348 02E0              ldi R16,2
 034A AFDF              xcall _WriteChar
 034C 88C0              xjmp L46
 034E           L45:
 034E                   .dbline 29
 034E           ; 
 034E           ; while(1)
 034E           ;      {
 034E                   .dbline 31
 034E           ;         //取ADC_0
 034E           ;       ADCSR=0x00;
 034E 2224              clr R2
 0350 26B8              out 0x6,R2
 0352                   .dbline 32
 0352           ;       ADMUX=0x40;
 0352 80E4              ldi R24,64
 0354 87B9              out 0x7,R24
 0356                   .dbline 33
 0356           ;       ADCSR=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|0x07;   //128分频,连续转换
 0356 87EE              ldi R24,231
 0358 86B9              out 0x6,R24
 035A                   .dbline 34
 035A           ;       s_ms(500);                                   //延时很重要,给出转换的时间
 035A 04EF              ldi R16,500
 035C 11E0              ldi R17,1
 035E 50DE              xcall _s_ms
 0360                   .dbline 35
 0360           ;       adc_l0=ADCL;
 0360 A4B0              in R10,0x4
 0362 BB24              clr R11
 0364                   .dbline 36
 0364           ;       adc_h0=ADCH;
 0364 C5B0              in R12,0x5
 0366 DD24              clr R13
 0368                   .dbline 37
 0368           ;       adc_data0=adc_h0<<8|adc_l0;                  
 0368 B601              movw R22,R12
 036A 762F              mov R23,R22
 036C 6627              clr R22
 036E 6A29              or R22,R10
 0370 7B29              or R23,R11
 0372                   .dbline 38
 0372           ;       adc_data0=adc_data0>>1;               //放弃一位的精度
 0372 7695              lsr R23
 0374 6795              ror R22
 0376                   .dbline 39
 0376           ;       adc_data0-=35;                        //修正
 0376 6352              subi R22,35
 0378 7040              sbci R23,0
 037A                   .dbline 51
 037A           ;         
 037A           ;         //取ADC_1
 037A           ;       //ADCSR=0x00;
 037A           ;       //ADMUX=0x41;
 037A           ;       //ADCSR=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|0x07;   
 037A           ;       //s_ms(500);                           
 037A           ;       //adc_l1=ADCL;
 037A           ;       //adc_h1=ADCH;
 037A           ;       //adc_data1=adc_h1<<8|adc_l1;  
 037A           ;       //adc_data1=adc_data1>>1;
 037A           ;       //adc_data1-=35;                       
 037A           ;         adc_data1=500;
 037A 44EF              ldi R20,500
 037C 51E0              ldi R21,1
 037E                   .dbline 54
 037E           ;         
 037E           ;         //显示ADC0
 037E           ;         ten_3=(adc_data0)/100;
 037E 24E6              ldi R18,100
 0380 30E0              ldi R19,0
 0382 8B01              movw R16,R22
 0384 0E940000          xcall div16u
 0388 E02E              mov R14,R16
 038A                   .dbline 55
 038A           ;         ten_2=(adc_data0-(ten_3*100))/10;
 038A 84E6              ldi R24,100
 038C 8E9D              mul R24,R14
 038E 8B01              movw R16,R22
 0390 0019              sub R16,R0
 0392 1109              sbc R17,R1
 0394 2AE0              ldi R18,10
 0396 30E0              ldi R19,0
 0398 0E940000          xcall div16u
 039C C02E              mov R12,R16
 039E                   .dbline 56
 039E           ;         ten_1=adc_data0-(ten_3*100)-ten_2*10;
 039E 84E6              ldi R24,100
 03A0 8E9D              mul R24,R14
 03A2 A62E              mov R10,R22
 03A4 A018              sub R10,R0
 03A6 B108              sbc R11,R1
 03A8 8AE0              ldi R24,10
 03AA 8C9D              mul R24,R12
 03AC A018              sub R10,R0
 03AE B108              sbc R11,R1
 03B0                   .dbline 57
 03B0           ;         WriteNum(1,8,(ten_3));
 03B0 2E2C              mov R2,R14
 03B2 3324              clr R3
 03B4 3982              std y+1,R3
 03B6 2882              std y+0,R2
 03B8 28E0              ldi R18,8
 03BA 30E0              ldi R19,0
 03BC 01E0              ldi R16,1
 03BE 10E0              ldi R17,0
 03C0 2CDF              xcall _WriteNum
 03C2                   .dbline 58
 03C2           ;         WriteNum(1,10,(ten_2));
 03C2 2C2C              mov R2,R12
 03C4 3324              clr R3
 03C6 3982              std y+1,R3
 03C8 2882              std y+0,R2
 03CA 2AE0              ldi R18,10
 03CC 30E0              ldi R19,0
 03CE 01E0              ldi R16,1
 03D0 10E0              ldi R17,0
 03D2 23DF              xcall _WriteNum
 03D4                   .dbline 59
 03D4           ;         WriteNum(1,11,(ten_1));
 03D4 2A2C              mov R2,R10
 03D6 3324              clr R3
 03D8 3982              std y+1,R3
 03DA 2882              std y+0,R2
 03DC 2BE0              ldi R18,11
 03DE 30E0              ldi R19,0
 03E0 01E0              ldi R16,1
 03E2 10E0              ldi R17,0
 03E4 1ADF              xcall _WriteNum
 03E6                   .dbline 62
 03E6           ;         
 03E6           ;         //显示ADC1
 03E6           ;         ten_3=(adc_data1)/100;
 03E6 24E6              ldi R18,100
 03E8 30E0              ldi R19,0
 03EA 8A01              movw R16,R20
 03EC 0E940000          xcall div16u
 03F0 E02E              mov R14,R16
 03F2                   .dbline 63
 03F2           ;         ten_2=(adc_data1-(ten_3*100))/10;
 03F2 84E6              ldi R24,100
 03F4 8E9D              mul R24,R14
 03F6 8A01              movw R16,R20
 03F8 0019              sub R16,R0
 03FA 1109              sbc R17,R1
 03FC 2AE0              ldi R18,10
 03FE 30E0              ldi R19,0
 0400 0E940000          xcall div16u
 0404 C02E              mov R12,R16
 0406                   .dbline 64
 0406           ;         ten_1=adc_data1-(ten_3*100)-ten_2*10;
 0406 84E6              ldi R24,100
 0408 8E9D              mul R24,R14
 040A A42E              mov R10,R20
 040C A018              sub R10,R0
 040E B108              sbc R11,R1
 0410 8AE0              ldi R24,10
 0412 8C9D              mul R24,R12
 0414 A018              sub R10,R0
 0416 B108              sbc R11,R1
 0418                   .dbline 65
 0418           ;         WriteNum(2,8,(ten_3));
 0418 2E2C              mov R2,R14
 041A 3324              clr R3
 041C 3982              std y+1,R3
 041E 2882              std y+0,R2
 0420 28E0              ldi R18,8
 0422 30E0              ldi R19,0
 0424 02E0              ldi R16,2
 0426 10E0              ldi R17,0
 0428 F8DE              xcall _WriteNum
 042A                   .dbline 66
 042A           ;         WriteNum(2,10,(ten_2));
 042A 2C2C              mov R2,R12
 042C 3324              clr R3
 042E 3982              std y+1,R3
 0430 2882              std y+0,R2
 0432 2AE0              ldi R18,10
 0434 30E0              ldi R19,0
 0436 02E0              ldi R16,2
 0438 10E0              ldi R17,0
 043A EFDE              xcall _WriteNum
 043C                   .dbline 67
 043C           ;         WriteNum(2,11,(ten_1));
 043C 2A2C              mov R2,R10
 043E 3324              clr R3
 0440 3982              std y+1,R3
 0442 2882              std y+0,R2
 0444 2BE0              ldi R18,11
 0446 30E0              ldi R19,0
 0448 02E0              ldi R16,2
 044A 10E0              ldi R17,0
 044C E6DE              xcall _WriteNum
 044E                   .dbline 69
 044E           ;         
 044E           ;         for(i=0;i<18;i++)
 044E 4427              clr R20
 0450 04C0              xjmp L51
 0452           L48:
 0452                   .dbline 70
 0452           ;            {
 0452                   .dbline 71
 0452           ;             s_ms(60000);
 0452 00E6              ldi R16,60000
 0454 1AEE              ldi R17,234
 0456 D4DD              xcall _s_ms
 0458                   .dbline 72
 0458           ;            }  
 0458           L49:
 0458                   .dbline 69
 0458 4395              inc R20
 045A           L51:
 045A                   .dbline 69
 045A 4231              cpi R20,18
 045C D0F3              brlo L48
 045E           X11:
 045E                   .dbline 73
 045E           ;        }
 045E           L46:
 045E                   .dbline 28
 045E 77CF              xjmp L45
 0460           X12:
 0460                   .dbline -2
 0460           L44:
 0460                   .dbline 0 ; func end
 0460 2496              adiw R28,4
 0462 0895              ret
 0464                   .dbsym l adc_h1 5 i
 0464                   .dbsym l adc_l1 5 i
 0464                   .dbsym l ten_4 5 c
 0464                   .dbsym r adc_h0 12 i
 0464                   .dbsym r adc_l0 10 i
 0464                   .dbsym r adc_data1 20 i
 0464                   .dbsym r ten_1 10 c
 0464                   .dbsym r ten_2 12 c
 0464                   .dbsym r adc_data0 22 i
 0464                   .dbsym r ten_3 14 c
 0464                   .dbsym r i 20 c
 0464                   .dbend
 0464           ; }
 0464           ; 
 0464           ; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -