📄 chengxu.lis
字号:
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 + -