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

📄 main.lis

📁 ATmega16-ad1602
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -