📄 chengxu.lis
字号:
.module chengxu.c
.area data(ram, con, rel)
0000 _Table::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .dbfile E:\Proteus\AVR单片机应用系统开发经典实例\015、AD转换的c语言编程\icc\chengxu.c
000A .dbsym e Table _Table A[10:10]c
000A _Data::
000A .blkb 2
.area idata
000A 0000 .byte 0,0
.area data(ram, con, rel)
000C .dbfile E:\Proteus\AVR单片机应用系统开发经典实例\015、AD转换的c语言编程\icc\chengxu.c
000C .blkb 2
.area idata
000C 0000 .byte 0,0
.area data(ram, con, rel)
000E .dbfile E:\Proteus\AVR单片机应用系统开发经典实例\015、AD转换的c语言编程\icc\chengxu.c
000E .dbsym e Data _Data A[4:4]c
.area text(rom, con, rel)
0000 .dbfile E:\Proteus\AVR单片机应用系统开发经典实例\015、AD转换的c语言编程\icc\chengxu.c
0000 .dbfunc e DelayMs _DelayMs fV
0000 ; j -> R20
0000 ; i -> R16,R17
.even
0000 _DelayMs::
0000 0E940000 xcall push_gset1
0004 .dbline -1
0004 .dbline 14
0004 ; #include <iom16v.h>
0004 ; #include <macros.h>
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ; /**********************************************************************
0004 ; 定义数组
0004 ; **********************************************************************/
0004 ; uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
0004 ; uchar Data[4]={0,0,0,0};
0004 ; /**********************************************************************
0004 ; 延时函数
0004 ; **********************************************************************/
0004 ; void DelayMs(uint i) //0.25ms
0004 ; {uchar j;
0004 .dbline 15
0004 ; for(;i!=0;i--)
0004 07C0 xjmp L5
0006 L2:
0006 .dbline 16
0006 .dbline 16
0006 4AEF ldi R20,250
0008 01C0 xjmp L9
000A L6:
000A .dbline 16
000A .dbline 16
000A .dbline 16
000A L7:
000A .dbline 16
000A 4A95 dec R20
000C L9:
000C .dbline 16
000C 4423 tst R20
000E E9F7 brne L6
0010 .dbline 16
0010 L3:
0010 .dbline 15
0010 0150 subi R16,1
0012 1040 sbci R17,0
0014 L5:
0014 .dbline 15
0014 0030 cpi R16,0
0016 0107 cpc R16,R17
0018 B1F7 brne L2
001A X0:
001A .dbline -2
001A L1:
001A 0E940000 xcall pop_gset1
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbsym r j 20 c
0020 .dbsym r i 16 i
0020 .dbend
0020 .dbfunc e Display _Display fV
0020 ; sel -> R20
0020 ; i -> R22
0020 ; p -> R10,R11
.even
0020 _Display::
0020 0E940000 xcall push_gset3
0024 5801 movw R10,R16
0026 .dbline -1
0026 .dbline 23
0026 ; {for(j=250;j!=0;j--) {;}}
0026 ; }
0026 ; /**********************************************************************
0026 ; 显示函数
0026 ; 注意:使用开发板时sel=0xef;
0026 ; **********************************************************************/
0026 ; void Display(uchar *p) //动态显示函数,参数p为待显示的数组名
0026 ; {uchar i,sel=0x01;
0026 .dbline 23
0026 41E0 ldi R20,1
0028 .dbline 24
0028 ; for(i=0;i<4;i++)
0028 6627 clr R22
002A 18C0 xjmp L14
002C L11:
002C .dbline 25
002C ; {PORTD=sel; //选通最右边的数码管
002C .dbline 25
002C 42BB out 0x12,R20
002E .dbline 26
002E ; PORTB=~Table[p[i]]; //送字型码
002E E62F mov R30,R22
0030 FF27 clr R31
0032 EA0D add R30,R10
0034 FB1D adc R31,R11
0036 E081 ldd R30,z+0
0038 FF27 clr R31
003A 80E0 ldi R24,<_Table
003C 90E0 ldi R25,>_Table
003E E80F add R30,R24
0040 F91F adc R31,R25
0042 2080 ldd R2,z+0
0044 2094 com R2
0046 28BA out 0x18,R2
0048 .dbline 27
0048 ; if(i==0){PORTB=PORTB&0X7f;} //增加小数点
0048 6623 tst R22
004A 19F4 brne L15
004C .dbline 27
004C .dbline 27
004C 88B3 in R24,0x18
004E 8F77 andi R24,127
0050 88BB out 0x18,R24
0052 .dbline 27
0052 L15:
0052 .dbline 28
0052 01E0 ldi R16,1
0054 10E0 ldi R17,0
0056 D4DF xcall _DelayMs
0058 .dbline 29
0058 440F lsl R20
005A .dbline 30
005A L12:
005A .dbline 24
005A 6395 inc R22
005C L14:
005C .dbline 24
005C 6430 cpi R22,4
005E 30F3 brlo L11
0060 .dbline -2
0060 L10:
0060 0E940000 xcall pop_gset3
0064 .dbline 0 ; func end
0064 0895 ret
0066 .dbsym r sel 20 c
0066 .dbsym r i 22 c
0066 .dbsym r p 10 pc
0066 .dbend
0066 .dbfunc e ADC_Convert _ADC_Convert fi
0066 ; temp1 -> R22,R23
0066 ; temp2 -> R20,R21
.even
0066 _ADC_Convert::
0066 0E940000 xcall push_gset2
006A .dbline -1
006A .dbline 36
006A ; DelayMs(1); //显示延时
006A ; sel=sel<<1; //移位以显示前一位
006A ; }
006A ; }
006A ; /**********************************************************************
006A ; 电压值处理函数
006A ; **********************************************************************/
006A ; uint ADC_Convert(void)
006A ; {uint temp1,temp2;
006A .dbline 37
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -