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

📄 adc.lis

📁 这是atmega128单片机的模数转换程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module ADC.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\wdd\桌面\模数转换\ADC.c
 0000                   .dbfile C:\DOCUME~1\wdd\桌面\模数转换\1602.h
 0000                   .dbfunc e s_ms _s_ms fV
 0000           ;             ms -> R16,R17
                        .even
 0000           _s_ms::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; #include<iom128v.h>
 0000           ; #include"1602.h"
 0000           ; #define uchar unsigned char 
 0000           ; #define uint unsigned int 
 0000           ; 
 0000           ; uchar adc_0[]={"ADC_0: .  V"};
 0000           ; uchar adc_1[]={"ADC_1: .  V"};
 0000           ; 
 0000           ; 
 0000                   .dbline 10
 0000           ; 
 0000 02C0              xjmp L5
 0002           L2:
 0002                   .dbline 10
 0002           L3:
 0002                   .dbline 10
 0002 0150              subi R16,1
 0004 1040              sbci R17,0
 0006           L5:
 0006                   .dbline 10
 0006 81E0              ldi R24,1
 0008 90E0              ldi R25,0
 000A 8017              cp R24,R16
 000C 9107              cpc R25,R17
 000E C8F3              brlo L2
 0010           X0:
 0010                   .dbline -2
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbsym r ms 16 i
 0012                   .dbend
 0012                   .dbfunc e busy _busy fV
 0012           ;           temp -> R20
                        .even
 0012           _busy::
 0012 4A93              st -y,R20
 0014                   .dbline -1
 0014                   .dbline 15
 0014           ; 
 0014           ; 
 0014           ; //ADC测试
 0014           ; //主函数
 0014           ; main()
 0014                   .dbline 17
 0014           ; {
 0014           ; uchar ten_1,ten_2,ten_3,ten_4,i;
 0014 04EF              ldi R16,500
 0016 11E0              ldi R17,1
 0018 F3DF              xcall _s_ms
 001A                   .dbline 18
 001A           ; uint adc_data0,adc_l0,adc_h0,adc_data1,adc_l1,adc_h1;
 001A 80916500          lds R24,101
 001E 8E7F              andi R24,254
 0020 80936500          sts 101,R24
 0024                   .dbline 19
 0024           ; DDRA=0xff;
 0024 04EF              ldi R16,500
 0026 11E0              ldi R17,1
 0028 EBDF              xcall _s_ms
 002A                   .dbline 20
 002A           ; PORTA=0x00;
 002A 80916500          lds R24,101
 002E 8260              ori R24,2
 0030 80936500          sts 101,R24
 0034                   .dbline 21
 0034           ; DDRB=0xff;
 0034 04EF              ldi R16,500
 0036 11E0              ldi R17,1
 0038 E3DF              xcall _s_ms
 003A 22C0              xjmp L8
 003C           L7:
 003C                   .dbline 23
 003C           ; DDRD=0xff;
 003C           ; PORTD=0x00;
 003C                   .dbline 24
 003C           ; DDRF=0x00;
 003C 80916500          lds R24,101
 0040 8460              ori R24,4
 0042 80936500          sts 101,R24
 0046                   .dbline 25
 0046           ; PORTF=0x00;
 0046 04EF              ldi R16,500
 0048 11E0              ldi R17,1
 004A DADF              xcall _s_ms
 004C                   .dbline 26
 004C           ; DDRG=0xff;
 004C 2224              clr R2
 004E 2ABA              out 0x1a,R2
 0050                   .dbline 27
 0050           ; PORTG=0xff;
 0050 8FEF              ldi R24,255
 0052 8BBB              out 0x1b,R24
 0054                   .dbline 28
 0054           ; 
 0054 04EF              ldi R16,500
 0056 11E0              ldi R17,1
 0058 D3DF              xcall _s_ms
 005A                   .dbline 29
 005A           ; LcdInit();   //1602初始化
 005A 49B3              in R20,0x19
 005C 4078              andi R20,128
 005E                   .dbline 30
 005E           ; WriteChar(1,2,11,adc_0);
 005E 04EF              ldi R16,500
 0060 11E0              ldi R17,1
 0062 CEDF              xcall _s_ms
 0064                   .dbline 31
 0064           ; WriteChar(2,2,11,adc_1);
 0064 8FEF              ldi R24,255
 0066 8ABB              out 0x1a,R24
 0068                   .dbline 32
 0068           ; while(1)
 0068 8BBB              out 0x1b,R24
 006A                   .dbline 33
 006A           ;      {
 006A 04EF              ldi R16,500
 006C 11E0              ldi R17,1
 006E C8DF              xcall _s_ms
 0070                   .dbline 34
 0070           ;         //取ADC_0
 0070 80916500          lds R24,101
 0074 8B7F              andi R24,251
 0076 80936500          sts 101,R24
 007A                   .dbline 35
 007A           ;       ADCSRA=0x00;
 007A 04EF              ldi R16,500
 007C 11E0              ldi R17,1
 007E C0DF              xcall _s_ms
 0080                   .dbline 36
 0080           ;       ADMUX=0x40;
 0080           L8:
 0080                   .dbline 22
 0080 4423              tst R20
 0082 E1F6              brne L7
 0084           X1:
 0084                   .dbline -2
 0084           L6:
 0084                   .dbline 0 ; func end
 0084 4991              ld R20,y+
 0086 0895              ret
 0088                   .dbsym r temp 20 c
 0088                   .dbend
 0088                   .dbfunc e writecom _writecom fV
 0088           ;            com -> R10
                        .even
 0088           _writecom::
 0088 AA92              st -y,R10
 008A A02E              mov R10,R16
 008C                   .dbline -1
 008C                   .dbline 41
 008C           ;       ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|0x07;   //128分频
 008C           ;       s_ms(500);                        //延时很重要
 008C           ;       adc_l0=ADCL;
 008C           ;       adc_h0=ADCH;
 008C           ;       adc_data0=adc_h0<<8|adc_l0;  
 008C                   .dbline 42
 008C           ;       adc_data0=adc_data0>>1;
 008C C2DF              xcall _busy
 008E                   .dbline 43
 008E           ;       adc_data0-=35;                        //修正
 008E 04EF              ldi R16,500
 0090 11E0              ldi R17,1
 0092 B6DF              xcall _s_ms
 0094                   .dbline 44
 0094           ;         //取ADC_1
 0094 80916500          lds R24,101
 0098 8E7F              andi R24,254
 009A 80936500          sts 101,R24
 009E                   .dbline 45
 009E           ;       ADCSRA=0x00;
 009E 04EF              ldi R16,500
 00A0 11E0              ldi R17,1
 00A2 AEDF              xcall _s_ms
 00A4                   .dbline 46
 00A4           ;       ADMUX=0x41;
 00A4 80916500          lds R24,101
 00A8 8D7F              andi R24,253
 00AA 80936500          sts 101,R24
 00AE                   .dbline 47
 00AE           ;       ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|0x07;   //128分频
 00AE 04EF              ldi R16,500
 00B0 11E0              ldi R17,1
 00B2 A6DF              xcall _s_ms
 00B4                   .dbline 48
 00B4           ;       s_ms(500);                        //延时很重要
 00B4 80916500          lds R24,101
 00B8 8460              ori R24,4
 00BA 80936500          sts 101,R24
 00BE                   .dbline 49
 00BE           ;       adc_l1=ADCL;
 00BE 04EF              ldi R16,500
 00C0 11E0              ldi R17,1
 00C2 9EDF              xcall _s_ms
 00C4                   .dbline 50
 00C4           ;       adc_h1=ADCH;
 00C4 ABBA              out 0x1b,R10
 00C6                   .dbline 51
 00C6           ;       adc_data1=adc_h1<<8|adc_l1;  
 00C6 04EF              ldi R16,500
 00C8 11E0              ldi R17,1
 00CA 9ADF              xcall _s_ms
 00CC                   .dbline 52
 00CC           ;       adc_data1=adc_data1>>1;
 00CC 80916500          lds R24,101
 00D0 8B7F              andi R24,251
 00D2 80936500          sts 101,R24
 00D6                   .dbline 53
 00D6           ;       adc_data1-=35;                        //修正
 00D6 04EF              ldi R16,500
 00D8 11E0              ldi R17,1
 00DA 92DF              xcall _s_ms
 00DC                   .dbline -2
 00DC           L10:
 00DC                   .dbline 0 ; func end
 00DC A990              ld R10,y+
 00DE 0895              ret
 00E0                   .dbsym r com 10 c
 00E0                   .dbend
 00E0                   .dbfunc e LcdInit _LcdInit fV
                        .even
 00E0           _LcdInit::
 00E0                   .dbline -1
 00E0                   .dbline 58
 00E0           ;         
 00E0           ;         
 00E0           ;         //显示ADC0
 00E0           ;         ten_3=(adc_data0)/100;
 00E0           ;         ten_2=(adc_data0-(ten_3*100))/10;
 00E0                   .dbline 59
 00E0           ;         ten_1=adc_data0-(ten_3*100)-ten_2*10;
 00E0 08E3              ldi R16,56
 00E2 D2DF              xcall _writecom
 00E4                   .dbline 60
 00E4           ;         ten_1+=0x30;
 00E4 08EE              ldi R16,1000
 00E6 13E0              ldi R17,3
 00E8 8BDF              xcall _s_ms
 00EA                   .dbline 61
 00EA           ;         ten_2+=0x30;
 00EA 01E0              ldi R16,1
 00EC CDDF              xcall _writecom
 00EE                   .dbline 62
 00EE           ;         ten_3+=0x30;
 00EE 00E1              ldi R16,10000
 00F0 17E2              ldi R17,39
 00F2 86DF              xcall _s_ms
 00F4                   .dbline 63
 00F4           ;         WriteNum(1,8,(ten_3));
 00F4 08EE              ldi R16,1000
 00F6 13E0              ldi R17,3
 00F8 83DF              xcall _s_ms
 00FA                   .dbline 64
 00FA           ;         WriteNum(1,10,(ten_2));
 00FA 08EE              ldi R16,1000
 00FC 13E0              ldi R17,3
 00FE 80DF              xcall _s_ms
 0100                   .dbline 65
 0100           ;         WriteNum(1,11,(ten_1));
 0100 08EE              ldi R16,1000
 0102 13E0              ldi R17,3
 0104 7DDF              xcall _s_ms
 0106                   .dbline 66
 0106           ;         //显示ADC1
 0106 08EE              ldi R16,1000
 0108 13E0              ldi R17,3
 010A 7ADF              xcall _s_ms
 010C                   .dbline 67
 010C           ;         ten_3=(adc_data1)/100;
 010C 08EE              ldi R16,1000
 010E 13E0              ldi R17,3
 0110 77DF              xcall _s_ms
 0112                   .dbline 68
 0112           ;         ten_2=(adc_data1-(ten_3*100))/10;
 0112 08EE              ldi R16,1000
 0114 13E0              ldi R17,3
 0116 74DF              xcall _s_ms
 0118                   .dbline 69
 0118           ;         ten_1=adc_data1-(ten_3*100)-ten_2*10;
 0118 02E0              ldi R16,2
 011A B6DF              xcall _writecom
 011C                   .dbline 70
 011C           ;         ten_1+=0x30;
 011C 08EE              ldi R16,1000
 011E 13E0              ldi R17,3
 0120 6FDF              xcall _s_ms
 0122                   .dbline 71
 0122           ;         ten_2+=0x30;
 0122 06E0              ldi R16,6
 0124 B1DF              xcall _writecom
 0126                   .dbline 72
 0126           ;         ten_3+=0x30;
 0126 08EE              ldi R16,1000
 0128 13E0              ldi R17,3
 012A 6ADF              xcall _s_ms
 012C                   .dbline 73
 012C           ;         WriteNum(2,8,(ten_3));
 012C 0CE0              ldi R16,12
 012E ACDF              xcall _writecom
 0130                   .dbline 74
 0130           ;         WriteNum(2,10,(ten_2));
 0130 08EE              ldi R16,1000
 0132 13E0              ldi R17,3
 0134 65DF              xcall _s_ms
 0136                   .dbline 75
 0136           ;         WriteNum(2,11,(ten_1));
 0136 08E3              ldi R16,56
 0138 A7DF              xcall _writecom
 013A                   .dbline 76
 013A           ;         
 013A 08EE              ldi R16,1000
 013C 13E0              ldi R17,3
 013E 60DF              xcall _s_ms
 0140                   .dbline -2
 0140           L11:
 0140                   .dbline 0 ; func end
 0140 0895              ret
 0142                   .dbend
 0142                   .dbfunc e writedata _writedata fV
 0142           ;           data -> R10
                        .even
 0142           _writedata::
 0142 AA92              st -y,R10
 0144 A02E              mov R10,R16
 0146                   .dbline -1
 0146                   .dbline 81
 0146           ;         for(i=0;i<18;i++)
 0146           ;            {
 0146           ;             s_ms(60000);
 0146           ;            }  
 0146           ;        }
 0146                   .dbline 82
 0146           ; }
 0146 65DF              xcall _busy
 0148                   .dbline 83
 0148           ; 
 0148 04EF              ldi R16,500
 014A 11E0              ldi R17,1
 014C 59DF              xcall _s_ms
 014E                   .dbline 84
 014E           ; 
 014E 80916500          lds R24,101
 0152 8160              ori R24,1
 0154 80936500          sts 101,R24
 0158                   .dbline 85
 0158 04EF              ldi R16,500
 015A 11E0              ldi R17,1
 015C 51DF              xcall _s_ms
 015E                   .dbline 86
 015E 80916500          lds R24,101
 0162 8D7F              andi R24,253
 0164 80936500          sts 101,R24
 0168                   .dbline 87
 0168 04EF              ldi R16,500
 016A 11E0              ldi R17,1
 016C 49DF              xcall _s_ms
 016E                   .dbline 88
 016E 80916500          lds R24,101
 0172 8460              ori R24,4
 0174 80936500          sts 101,R24
 0178                   .dbline 89
 0178 04EF              ldi R16,500
 017A 11E0              ldi R17,1

⌨️ 快捷键说明

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