📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile ..\mydesign1\cfile\main.c
.area data(ram, con, rel)
0000 .dbfile ..\mydesign1\cfile\main.c
0000 _value:
0000 .blkw 1
.area idata
0000 0200 .word L1
.area data(ram, con, rel)
0002 .dbfile ..\mydesign1\cfile\main.c
0002 .dbfile F:\file\数控电源3\ad_da\mydesign1\cfile\main.c
0002 .dbsym s value _value pc
.area text(rom, con, rel)
0000 .dbfile F:\file\数控电源3\ad_da\mydesign1\cfile\main.c
0000 .dbfunc e ADtoBCD _ADtoBCD fV
0000 ; Vref -> R20,R21
0000 ; j -> y+0
0000 ; count -> R10,R11
0000 ; tmp -> R10,R11
.even
0000 _ADtoBCD::
0000 00D0 rcall push_xgset300C
0002 5801 movw R10,R16
0004 2497 sbiw R28,4
0006 .dbline -1
0006 .dbline 7
0006 ; #define MAIN_C
0006 ; #include "includes.h"
0006 ;
0006 ; static unsigned char *value = "00.000 V";
0006 ;
0006 ; void ADtoBCD(unsigned int tmp)//将AD值转换成BCD码,并写入value
0006 ; {
0006 .dbline 10
0006 ; float j;
0006 ; unsigned int count;
0006 ; unsigned int Vref=50000;
0006 40E5 ldi R20,50000
0008 53EC ldi R21,195
000A .dbline 12
000A ;
000A ; j = (float)(((float)((Vref/341)))*tmp)/1000.00;//1022-149853.3724-149.853
000A 25E5 ldi R18,341
000C 31E0 ldi R19,1
000E 8A01 movw R16,R20
0010 00D0 rcall div16u
0012 00D0 rcall uint2fp
0014 1801 movw R2,R16
0016 2901 movw R4,R18
0018 8501 movw R16,R10
001A 00D0 rcall uint2fp
001C 3A93 st -y,R19
001E 2A93 st -y,R18
0020 1A93 st -y,R17
0022 0A93 st -y,R16
0024 8101 movw R16,R2
0026 9201 movw R18,R4
0028 00D0 rcall fpmule2
002A 1801 movw R2,R16
002C 2901 movw R4,R18
002E 00E0 ldi R16,<L3
0030 10E0 ldi R17,>L3
0032 00D0 rcall lpm32
0034 3A93 st -y,R19
0036 2A93 st -y,R18
0038 1A93 st -y,R17
003A 0A93 st -y,R16
003C 8101 movw R16,R2
003E 9201 movw R18,R4
0040 00D0 rcall fpdiv2
0042 0883 std y+0,R16
0044 1983 std y+1,R17
0046 2A83 std y+2,R18
0048 3B83 std y+3,R19
004A .dbline 13
004A ; count = j*100; //14985
004A 00E0 ldi R16,<L4
004C 10E0 ldi R17,>L4
004E 00D0 rcall lpm32
0050 CE01 movw R24,R28
0052 9A93 st -y,R25
0054 8A93 st -y,R24
0056 00D0 rcall fpmule1
0058 00D0 rcall fpint
005A 5801 movw R10,R16
005C .dbline 14
005C ; value[0] = count /10000+0x30; //1
005C 20E1 ldi R18,10000
005E 37E2 ldi R19,39
0060 00D0 rcall div16u
0062 C801 movw R24,R16
0064 C096 adiw R24,48
0066 E0910000 lds R30,_value
006A F0910100 lds R31,_value+1
006E 8083 std z+0,R24
0070 .dbline 15
0070 ; count = count %10000; //4985
0070 20E1 ldi R18,10000
0072 37E2 ldi R19,39
0074 8501 movw R16,R10
0076 00D0 rcall mod16u
0078 5801 movw R10,R16
007A .dbline 16
007A ; value[1] = count /1000+0x30;//4
007A 28EE ldi R18,1000
007C 33E0 ldi R19,3
007E 00D0 rcall div16u
0080 C801 movw R24,R16
0082 C096 adiw R24,48
0084 E0910000 lds R30,_value
0088 F0910100 lds R31,_value+1
008C 8183 std z+1,R24
008E .dbline 17
008E ; count = count %1000; //985
008E 28EE ldi R18,1000
0090 33E0 ldi R19,3
0092 8501 movw R16,R10
0094 00D0 rcall mod16u
0096 5801 movw R10,R16
0098 .dbline 18
0098 ; value[3] = count /100 + 0x30; //9
0098 24E6 ldi R18,100
009A 30E0 ldi R19,0
009C 00D0 rcall div16u
009E C801 movw R24,R16
00A0 C096 adiw R24,48
00A2 E0910000 lds R30,_value
00A6 F0910100 lds R31,_value+1
00AA 8383 std z+3,R24
00AC .dbline 19
00AC ; count = count %100; //85
00AC 24E6 ldi R18,100
00AE 30E0 ldi R19,0
00B0 8501 movw R16,R10
00B2 00D0 rcall mod16u
00B4 5801 movw R10,R16
00B6 .dbline 20
00B6 ; value[4] = count /10 + 0x30; //8
00B6 2AE0 ldi R18,10
00B8 30E0 ldi R19,0
00BA 00D0 rcall div16u
00BC C801 movw R24,R16
00BE C096 adiw R24,48
00C0 E0910000 lds R30,_value
00C4 F0910100 lds R31,_value+1
00C8 8483 std z+4,R24
00CA .dbline 21
00CA ; value[5] = count %10 + 0x30; //5
00CA 2AE0 ldi R18,10
00CC 30E0 ldi R19,0
00CE 8501 movw R16,R10
00D0 00D0 rcall mod16u
00D2 C801 movw R24,R16
00D4 C096 adiw R24,48
00D6 E0910000 lds R30,_value
00DA F0910100 lds R31,_value+1
00DE 8583 std z+5,R24
00E0 .dbline -2
00E0 L2:
00E0 .dbline 0 ; func end
00E0 2496 adiw R28,4
00E2 00C0 rjmp pop_xgset300C
00E4 .dbsym r Vref 20 i
00E4 .dbsym l j 0 D
00E4 .dbsym r count 10 i
00E4 .dbsym r tmp 10 i
00E4 .dbend
00E4 .dbfunc e main _main fV
00E4 ; tmp -> R10,R11
00E4 ; i -> R10,R11
00E4 ; key_press_num -> R22
00E4 ; num -> R20,R21
.even
00E4 _main::
00E4 2297 sbiw R28,2
00E6 .dbline -1
00E6 .dbline 25
00E6 ; }
00E6 ; //主函数
00E6 ; void main(void)
00E6 ; { unsigned int i=0;
00E6 .dbline 25
00E6 AA24 clr R10
00E8 BB24 clr R11
00EA .dbline 27
00EA ; unsigned char key_press_num;
00EA ; unsigned int num=0;
00EA 4427 clr R20
00EC 5527 clr R21
00EE .dbline 29
00EE ;
00EE ; DDRB=0XFF; //PB口输出SPI信号
00EE 8FEF ldi R24,255
00F0 87BB out 0x17,R24
00F2 .dbline 30
00F2 ; DDRA&=~BIT(PA2);//PA2输入,检测加
00F2 D298 cbi 0x1a,2
00F4 .dbline 31
00F4 ; PORTA|=BIT(PA2);//PA2上拉电阻
00F4 DA9A sbi 0x1b,2
00F6 .dbline 32
00F6 ; DDRA&=~BIT(PA3);//PA3输入,检测减
00F6 D398 cbi 0x1a,3
00F8 .dbline 33
00F8 ; PORTA|=BIT(PA3);//PA3上拉电阻
00F8 DB9A sbi 0x1b,3
00FA .dbline 35
00FA ;
00FA ; spi_init();
00FA 00D0 rcall _spi_init
00FC .dbline 36
00FC ; spi_io_init();
00FC 00D0 rcall _spi_io_init
00FE .dbline 37
00FE ; Init_LCD();
00FE 00D0 rcall _Init_LCD
0100 .dbline 38
0100 ; LCD_Clear();
0100 00D0 rcall _LCD_Clear
0102 .dbline 39
0102 ; delay_nms(10);
0102 0AE0 ldi R16,10
0104 10E0 ldi R17,0
0106 00D0 rcall _delay_nms
0108 .dbline 41
0108 ;
0108 ; LCD_DisplayString(2,1,value);//显示"00.000 V";
0108 20900000 lds R2,_value
010C 30900100 lds R3,_value+1
0110 3982 std y+1,R3
0112 2882 std y+0,R2
0114 21E0 ldi R18,1
0116 02E0 ldi R16,2
0118 00D0 rcall _LCD_DisplayString
011A .dbline 42
011A ; delay_nms(1000);
011A 08EE ldi R16,1000
011C 13E0 ldi R17,3
011E 00D0 rcall _delay_nms
0120 5AC0 rjmp L7
0122 L6:
0122 .dbline 45
0122 ;
0122 ; while (1) //主循环
0122 ; {
0122 .dbline 47
0122 ; unsigned int tmp;
0122 ; tmp=adc();//启动AD并返回temp值
0122 00D0 rcall _adc
0124 5801 movw R10,R16
0126 .dbline 48
0126 ; ADtoBCD(tmp);//将temp值转换成BCD码并写入value
0126 6CDF rcall _ADtoBCD
0128 .dbline 49
0128 ; LCD_DisplayString(2,1,value);
0128 20900000 lds R2,_value
012C 30900100 lds R3,_value+1
0130 3982 std y+1,R3
0132 2882 std y+0,R2
0134 21E0 ldi R18,1
0136 02E0 ldi R16,2
0138 00D0 rcall _LCD_DisplayString
013A .dbline 51
013A ;
013A ; if( (PINA&0x04)==0 ) //检测到加
013A CA99 sbic 0x19,2
013C 26C0 rjmp L9
013E X0:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -