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

📄 chengxu.lis

📁 015、AD转换的c语言编程
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 006A           ;  temp1=(uint)ADCL;//先读ADCL
 006A 64B1              in R22,0x4
 006C 7727              clr R23
 006E                   .dbline 38
 006E           ;  temp2=(uint)ADCH;//再读ADCH
 006E 45B1              in R20,0x5
 0070 5527              clr R21
 0072                   .dbline 39
 0072           ;  temp2=(temp2<<8)+temp1;//求值
 0072 1A01              movw R2,R20
 0074 322C              mov R3,R2
 0076 2224              clr R2
 0078 260E              add R2,R22
 007A 371E              adc R3,R23
 007C                   .dbline 40
 007C           ;  temp2=temp2*49/10;//求显示的电压值(0~5.12)V
 007C 01E3              ldi R16,49
 007E 10E0              ldi R17,0
 0080 9101              movw R18,R2
 0082 0E940000          xcall empy16s
 0086 2AE0              ldi R18,10
 0088 30E0              ldi R19,0
 008A 0E940000          xcall div16u
 008E A801              movw R20,R16
 0090                   .dbline 41
 0090           ;  return(temp2);
 0090                   .dbline -2
 0090           L17:
 0090 0E940000          xcall pop_gset2
 0094                   .dbline 0 ; func end
 0094 0895              ret
 0096                   .dbsym r temp1 22 i
 0096                   .dbsym r temp2 20 i
 0096                   .dbend
 0096                   .dbfunc e Process _Process fV
 0096           ;              p -> R20,R21
 0096           ;              i -> R22,R23
                        .even
 0096           _Process::
 0096 0E940000          xcall push_gset2
 009A A901              movw R20,R18
 009C B801              movw R22,R16
 009E                   .dbline -1
 009E                   .dbline 47
 009E           ; }
 009E           ; /**********************************************************************
 009E           ;                                                               显示处理函数                                                                                    
 009E           ; **********************************************************************/
 009E           ; void Process(uint i,uchar *p)
 009E           ; {p[0]=i/1000;
 009E                   .dbline 47
 009E 28EE              ldi R18,1000
 00A0 33E0              ldi R19,3
 00A2 8B01              movw R16,R22
 00A4 0E940000          xcall div16u
 00A8 FA01              movw R30,R20
 00AA 0083              std z+0,R16
 00AC                   .dbline 48
 00AC           ;  i=i%1000;
 00AC 28EE              ldi R18,1000
 00AE 33E0              ldi R19,3
 00B0 8B01              movw R16,R22
 00B2 0E940000          xcall mod16u
 00B6 B801              movw R22,R16
 00B8                   .dbline 49
 00B8           ;  p[1]=i/100;
 00B8 24E6              ldi R18,100
 00BA 30E0              ldi R19,0
 00BC 0E940000          xcall div16u
 00C0 FA01              movw R30,R20
 00C2 0183              std z+1,R16
 00C4                   .dbline 50
 00C4           ;  i=i%100;
 00C4 24E6              ldi R18,100
 00C6 30E0              ldi R19,0
 00C8 8B01              movw R16,R22
 00CA 0E940000          xcall mod16u
 00CE B801              movw R22,R16
 00D0                   .dbline 51
 00D0           ;  p[2]=i/10;
 00D0 2AE0              ldi R18,10
 00D2 30E0              ldi R19,0
 00D4 0E940000          xcall div16u
 00D8 FA01              movw R30,R20
 00DA 0283              std z+2,R16
 00DC                   .dbline 52
 00DC           ;  i=i%10;
 00DC 2AE0              ldi R18,10
 00DE 30E0              ldi R19,0
 00E0 8B01              movw R16,R22
 00E2 0E940000          xcall mod16u
 00E6 B801              movw R22,R16
 00E8                   .dbline 53
 00E8           ;  p[3]=i;
 00E8 FA01              movw R30,R20
 00EA 6383              std z+3,R22
 00EC                   .dbline -2
 00EC           L18:
 00EC 0E940000          xcall pop_gset2
 00F0                   .dbline 0 ; func end
 00F0 0895              ret
 00F2                   .dbsym r p 20 pc
 00F2                   .dbsym r i 22 i
 00F2                   .dbend
 00F2                   .dbfunc e Init_IO _Init_IO fV
                        .even
 00F2           _Init_IO::
 00F2                   .dbline -1
 00F2                   .dbline 59
 00F2           ; }
 00F2           ; /**********************************************************************
 00F2           ;                       初始化I/O口
 00F2           ; **********************************************************************/
 00F2           ; void Init_IO(void)             //初始化I/O口
 00F2           ; {
 00F2                   .dbline 60
 00F2           ;  DDRA=0x00;                    //设置A口为不带上拉输入;
 00F2 2224              clr R2
 00F4 2ABA              out 0x1a,R2
 00F6                   .dbline 61
 00F6           ;  PORTA=0x00;
 00F6 2BBA              out 0x1b,R2
 00F8                   .dbline 62
 00F8           ;  DDRB=0xff;                    //设置B口为推挽1输出;
 00F8 8FEF              ldi R24,255
 00FA 87BB              out 0x17,R24
 00FC                   .dbline 63
 00FC           ;  PORTB=0xff;
 00FC 88BB              out 0x18,R24
 00FE                   .dbline 64
 00FE           ;  DDRD=0xff;                    //设置C口为推挽1输出;
 00FE 81BB              out 0x11,R24
 0100                   .dbline 65
 0100           ;  PORTD=0xff;
 0100 82BB              out 0x12,R24
 0102                   .dbline -2
 0102           L19:
 0102                   .dbline 0 ; func end
 0102 0895              ret
 0104                   .dbend
 0104                   .dbfunc e main _main fV
 0104           ;              i -> R20,R21
                        .even
 0104           _main::
 0104                   .dbline -1
 0104                   .dbline 71
 0104           ; }
 0104           ; /**********************************************************************
 0104           ;                                                               主函数                                                                  
 0104           ; **********************************************************************/
 0104           ; void main(void)
 0104           ; {uint i;
 0104                   .dbline 72
 0104           ;  Init_IO();
 0104 F6DF              xcall _Init_IO
 0106                   .dbline 73
 0106           ;  ADMUX=0x00;                   //选择第一通道;
 0106 2224              clr R2
 0108 27B8              out 0x7,R2
 010A                   .dbline 75
 010A           ;  /**********************转换速率应在50~200K****************************/
 010A           ;  ADCSR=0xe6;                   //125K转换速率,自由转换模式;启动AD转换器;
 010A 86EE              ldi R24,230
 010C 86B9              out 0x6,R24
 010E                   .dbline 76
 010E           ;  DelayMs(300);                //延时待系统稳定;
 010E 0CE2              ldi R16,300
 0110 11E0              ldi R17,1
 0112 76DF              xcall _DelayMs
 0114 08C0              xjmp L22
 0116           L21:
 0116                   .dbline 78
 0116                   .dbline 79
 0116 A7DF              xcall _ADC_Convert
 0118 A801              movw R20,R16
 011A                   .dbline 80
 011A 20E0              ldi R18,<_Data
 011C 30E0              ldi R19,>_Data
 011E BBDF              xcall _Process
 0120                   .dbline 81
 0120 00E0              ldi R16,<_Data
 0122 10E0              ldi R17,>_Data
 0124 7DDF              xcall _Display
 0126                   .dbline 82
 0126           L22:
 0126                   .dbline 77
 0126 F7CF              xjmp L21
 0128           X1:
 0128                   .dbline -2
 0128           L20:
 0128                   .dbline 0 ; func end
 0128 0895              ret
 012A                   .dbsym r i 20 i
 012A                   .dbend

⌨️ 快捷键说明

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