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

📄 main.lis

📁 用ICCAVR编辑通过的
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module main.c
                        .area lit(rom, con, rel)
 0000           L2:
 0000 0000              .byte 0,0
 0002 0000              .byte 0,0
 0004           L3:
 0004 0000              .byte 0,0
 0006 0000              .byte 0,0
                        .area bss(ram, con, rel)
 0000           L4:
 0000                   .blkb 1
                        .area text(rom, con, rel)
 0000                   .dbfile F:\网络下载\AVR\完整应用\电流电压表\SOF\main.c
 0000                   .dbfunc e main _main fI
 0000                   .dbsym s chdot L4 c
 0000           ;          chS_V -> y+6
 0000           ;          chS_A -> y+2
                        .even
 0000           _main::
 0000 2A97              sbiw R28,10
 0002                   .dbline -1
 0002                   .dbline 33
 0002           ; //ICC-AVR application builder : 2006-12-28 11:58:18
 0002           ; // Target : M8
 0002           ; // Crystal: 4.0000Mhz
 0002           ; //本程序主要完成对外界输入的电流/电压进行AD转换并显示的功能
 0002           ; /*
 0002           ; * Copyright (c) 2005, 广州力源电器公司开发部
 0002           ; * All rights reserved.
 0002           ; * 文件名称:main.c   主函数
 0002           ; 
 0002           ; * 当前版本: 1.0
 0002           ; * 作者:       张洪强
 0002           ; * 完成日期: 2005.7.25
 0002           ; */
 0002           ; 
 0002           ; //#define   OS_GLOBALS
 0002           ; #include <iom8v.h>
 0002           ; #include <macros.h> 
 0002           ; //#include <interrupt.h>
 0002           ; #include <signal.h>
 0002           ; //#include <wdt.h>
 0002           ; #include <stdlib.h>
 0002           ; #include <eeprom.h>   
 0002           ; #include "init.h"
 0002           ; 
 0002           ; void convert_v( unsigned char* pch);
 0002           ; void convert_a( unsigned char* pch);
 0002           ; void SET_A( unsigned char* pch );
 0002           ; void CHECK_EDATA_A(void);
 0002           ; 
 0002           ; //char CS[4] = {0,2,1,0};
 0002           ; 
 0002           ; int main(void)
 0002           ; {
 0002                   .dbline 34
 0002           ;       unsigned char chS_V[]={0,0,0,0},chS_A[]={0,0,0,0};
 0002 80E0              ldi R24,<L2
 0004 90E0              ldi R25,>L2
 0006 FE01              movw R30,R28
 0008 3696              adiw R30,6
 000A 04E0              ldi R16,4
 000C 10E0              ldi R17,0
 000E FA93              st -y,R31
 0010 EA93              st -y,R30
 0012 9A93              st -y,R25
 0014 8A93              st -y,R24
 0016 00D0              rcall asgncblk
 0018                   .dbline 34
 0018 80E0              ldi R24,<L3
 001A 90E0              ldi R25,>L3
 001C FE01              movw R30,R28
 001E 3296              adiw R30,2
 0020 04E0              ldi R16,4
 0022 10E0              ldi R17,0
 0024 FA93              st -y,R31
 0026 EA93              st -y,R30
 0028 9A93              st -y,R25
 002A 8A93              st -y,R24
 002C 00D0              rcall asgncblk
 002E                   .dbline 36
 002E           ;       static unsigned char chdot;
 002E           ;       delayMS(250);                                                                   //延时250MS
 002E 0AEF              ldi R16,250
 0030 00D0              rcall _delayMS
 0032                   .dbline 37
 0032           ;       delayMS(250);                                                                   //延时250MS
 0032 0AEF              ldi R16,250
 0034 00D0              rcall _delayMS
 0036                   .dbline 38
 0036           ;       eeprom_busy_wait();
 0036 00D0              rcall _eeprom_busy_wait
 0038                   .dbline 39
 0038           ;       cli();
 0038 00D0              rcall _cli
 003A                   .dbline 40
 003A           ;       eeprom_read_block((char*)MAX_A,(char*)0x20,6 );
 003A 86E0              ldi R24,6
 003C 90E0              ldi R25,0
 003E 9983              std y+1,R25
 0040 8883              std y+0,R24
 0042 20E2              ldi R18,32
 0044 30E0              ldi R19,0
 0046 00E0              ldi R16,<_MAX_A
 0048 10E0              ldi R17,>_MAX_A
 004A 00D0              rcall _eeprom_read_block
 004C                   .dbline 41
 004C           ;       CHECK_EDATA_A();
 004C F5D2              rcall _CHECK_EDATA_A
 004E                   .dbline 42
 004E           ;       init_devices();                                                                 //初始化端口
 004E 00D0              rcall _init_devices
 0050                   .dbline 44
 0050           ;       
 0050           ;     for (;;)
 0050           L5:
 0050                   .dbline 45
 0050           ;     {   
 0050                   .dbline 46
 0050           ;               wdt_reset();                                                            //喂狗
 0050 00D0              rcall _wdt_reset
 0052                   .dbline 47
 0052           ;               convert_v( chS_V );
 0052 8E01              movw R16,R28
 0054 0A5F              subi R16,250  ; offset = 6
 0056 1F4F              sbci R17,255
 0058 3BD0              rcall _convert_v
 005A                   .dbline 48
 005A           ;               convert_a( chS_A );     
 005A 8E01              movw R16,R28
 005C 0E5F              subi R16,254  ; offset = 2
 005E 1F4F              sbci R17,255
 0060 79D0              rcall _convert_a
 0062                   .dbline 49
 0062           ;               key_board();
 0062 00D0              rcall _key_board
 0064                   .dbline 50
 0064           ;               if ( !SET_STATU )
 0064 20900800          lds R2,_SET_STATU
 0068 2220              tst R2
 006A 19F5              brne L9
 006C                   .dbline 51
 006C           ;               {
 006C                   .dbline 52
 006C           ;                       if ( KEY_A_V_STATE )
 006C 20900500          lds R2,_KEY_A_V_STATE
 0070 2220              tst R2
 0072 B1F0              breq L11
 0074                   .dbline 53
 0074           ;                       {
 0074                   .dbline 54
 0074           ;                               if ( MAX_A[0] >= 500 )
 0074 80910000          lds R24,_MAX_A
 0078 90910100          lds R25,_MAX_A+1
 007C 843F              cpi R24,244
 007E E1E0              ldi R30,1
 0080 9E07              cpc R25,R30
 0082 20F0              brlo L13
 0084                   .dbline 55
 0084           ;                               {
 0084                   .dbline 56
 0084           ;                                       chdot = NODOT;
 0084 80E4              ldi R24,64
 0086 80930000          sts L4,R24
 008A                   .dbline 57
 008A           ;                               }
 008A 03C0              rjmp L14
 008C           L13:
 008C                   .dbline 59
 008C           ;                               else
 008C           ;                               {
 008C                   .dbline 60
 008C           ;                                       chdot = ONEDOT;
 008C 81E0              ldi R24,1
 008E 80930000          sts L4,R24
 0092                   .dbline 61
 0092           ;                               }
 0092           L14:
 0092                   .dbline 62
 0092           ;                               display(chS_A,chdot);                           //显示电流值
 0092 20910000          lds R18,L4
 0096 8E01              movw R16,R28
 0098 0E5F              subi R16,254  ; offset = 2
 009A 1F4F              sbci R17,255
 009C 00D0              rcall _display
 009E                   .dbline 63
 009E           ;                       }
 009E D8CF              rjmp L5
 00A0           L11:
 00A0                   .dbline 65
 00A0           ;                       else
 00A0           ;                       {
 00A0                   .dbline 66
 00A0           ;                               chdot = TWODOT;
 00A0 82E0              ldi R24,2
 00A2 80930000          sts L4,R24
 00A6                   .dbline 67
 00A6           ;                               display(chS_V,chdot);                           //显示电压值
 00A6 282F              mov R18,R24
 00A8 8E01              movw R16,R28
 00AA 0A5F              subi R16,250  ; offset = 6
 00AC 1F4F              sbci R17,255
 00AE 00D0              rcall _display
 00B0                   .dbline 68
 00B0           ;                       }
 00B0                   .dbline 69
 00B0           ;               }
 00B0 CFCF              rjmp L5
 00B2           L9:
 00B2                   .dbline 71
 00B2                   .dbline 72
 00B2 8E01              movw R16,R28
 00B4 0E5F              subi R16,254  ; offset = 2
 00B6 1F4F              sbci R17,255
 00B8 8ED2              rcall _SET_A
 00BA                   .dbline 73
 00BA 80E4              ldi R24,64
 00BC 80930000          sts L4,R24
 00C0                   .dbline 74
 00C0 282F              mov R18,R24
 00C2 8E01              movw R16,R28
 00C4 0E5F              subi R16,254  ; offset = 2
 00C6 1F4F              sbci R17,255
 00C8 00D0              rcall _display
 00CA                   .dbline 75
 00CA                   .dbline 77
 00CA                   .dbline 44
 00CA                   .dbline 44
 00CA C2CF              rjmp L5
 00CC           X0:
 00CC                   .dbline -2
 00CC           L1:
 00CC 2A96              adiw R28,10
 00CE                   .dbline 0 ; func end
 00CE 0895              ret
 00D0                   .dbsym l chS_V 6 A[4:4]c
 00D0                   .dbsym l chS_A 2 A[4:4]c
 00D0                   .dbend
 00D0                   .dbfunc e convert_v _convert_v fV
 00D0           ;           intV -> R20,R21
 00D0           ;              i -> R22,R23
 00D0           ;            pch -> R10,R11
                        .even
 00D0           _convert_v::
 00D0 00D0              rcall push_gset3
 00D2 5801              movw R10,R16
 00D4                   .dbline -1
 00D4                   .dbline 81
 00D4           ;               else
 00D4           ;               {
 00D4           ;                       SET_A( chS_A );                                                 //进入设置电流值状态                            
 00D4           ;                       chdot = NODOT;
 00D4           ;                       display(chS_A,chdot);                                   //显示设定电流值
 00D4           ;               }
 00D4           ;               //delayMS(10);                                                          //延时10MS
 00D4           ;       }  
 00D4           ; }
 00D4           ;    
 00D4           ; void convert_v( unsigned char* pch )
 00D4           ; {
 00D4                   .dbline 83
 00D4           ;       unsigned int intV,i;
 00D4           ;       intV = (int) (((float)MAX_V * (float) adc_data[0]) /1024.0) ;
 00D4 00E0              ldi R16,<L16
 00D6 10E0              ldi R17,>L16
 00D8 00D0              rcall lpm32
 00DA 3A93              st -y,R19
 00DC 2A93              st -y,R18
 00DE 1A93              st -y,R17
 00E0 0A93              st -y,R16
 00E2 40900200          lds R4,_adc_data+2
 00E6 50900300          lds R5,_adc_data+2+1
 00EA 20900000          lds R2,_adc_data
 00EE 30900100          lds R3,_adc_data+1
 00F2 5A92              st -y,R5
 00F4 4A92              st -y,R4
 00F6 3A92              st -y,R3
 00F8 2A92              st -y,R2
 00FA 00D0              rcall empy32fs
 00FC 00E0              ldi R16,<L17
 00FE 10E0              ldi R17,>L17
 0100 00D0              rcall lpm32
 0102 3A93              st -y,R19
 0104 2A93              st -y,R18
 0106 1A93              st -y,R17
 0108 0A93              st -y,R16
 010A 00D0              rcall div32f
 010C 00D0              rcall fp2int
 010E A801              movw R20,R16
 0110                   .dbline 85
 0110           ;                                                                                                       //计算电压值                                                                            
 0110           ;       if ( intV > 70 )
 0110 86E4              ldi R24,70
 0112 90E0              ldi R25,0
 0114 8017              cp R24,R16
 0116 9107              cpc R25,R17
 0118 18F4              brsh L18
 011A                   .dbline 86
 011A           ;       {
 011A                   .dbline 87
 011A           ;               intV -= 70;
 011A 4654              subi R20,70
 011C 5040              sbci R21,0
 011E                   .dbline 88
 011E           ;       }
 011E 02C0              rjmp L19
 0120           L18:
 0120                   .dbline 90
 0120           ;       else
 0120           ;       {
 0120                   .dbline 91
 0120           ;               intV = 0;
 0120 4427              clr R20
 0122 5527              clr R21
 0124                   .dbline 92
 0124           ;       }
 0124           L19:
 0124                   .dbline 93
 0124           ;       for ( i = 0; i < 4; i++ )
 0124 6627              clr R22
 0126 7727              clr R23
 0128 0FC0              rjmp L23
 012A           L20:
 012A                   .dbline 94
 012A                   .dbline 95
 012A 2AE0              ldi R18,10
 012C 30E0              ldi R19,0
 012E 8A01              movw R16,R20
 0130 00D0              rcall mod16u
 0132 FB01              movw R30,R22
 0134 EA0D              add R30,R10
 0136 FB1D              adc R31,R11

⌨️ 快捷键说明

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