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

📄 adc-1602.lis

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

⌨️ 快捷键说明

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