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

📄 main.lis

📁 avr单片机ATMega16对三相异步电机的智能控制源码
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\_文档~1\easy-STQ-20080712\main.c
 0000                   .dbfunc e main _main fV
                        .even
 0000           _main::
 0000 2297              sbiw R28,2
 0002                   .dbline -1
 0002                   .dbline 12
 0002           ; 
 0002           ; 
 0002           ; #define MAIN_GLOBAL
 0002           ; #include "main.h"
 0002           ; 
 0002           ; 
 0002           ; static void InitPort(void);
 0002           ; static void InitDevices(void);
 0002           ; 
 0002           ; 
 0002           ; void main()
 0002           ; {
 0002                   .dbline 14
 0002           ; 
 0002           ;  InitDevices();                                 //设备初始化
 0002 26D0              xcall _InitDevices
 0004                   .dbline 16
 0004           ;                                  
 0004           ;  SCH_Add_Task(Motor, 900, 1);   //电机任务,10ms循环一次
 0004 81E0              ldi R24,1
 0006 90E0              ldi R25,0
 0008 9983              std y+1,R25
 000A 8883              std y+0,R24
 000C 24E8              ldi R18,900
 000E 33E0              ldi R19,3
 0010 00E0              ldi R16,<PL_Motor
 0012 10E0              ldi R17,>PL_Motor
 0014 0E940000          xcall _SCH_Add_Task
 0018                   .dbline 18
 0018           ;  
 0018           ;  SCH_Add_Task(Alarm,901,10);    //LED告警指示,100ms循环一次
 0018 8AE0              ldi R24,10
 001A 90E0              ldi R25,0
 001C 9983              std y+1,R25
 001E 8883              std y+0,R24
 0020 25E8              ldi R18,901
 0022 33E0              ldi R19,3
 0024 00E0              ldi R16,<PL_Alarm
 0026 10E0              ldi R17,>PL_Alarm
 0028 0E940000          xcall _SCH_Add_Task
 002C                   .dbline 20
 002C           ; 
 002C           ;  SCH_Add_Task(check,1,0);       //电机参数检测任务,只上电时执行一次
 002C 2224              clr R2
 002E 3324              clr R3
 0030 3982              std y+1,R3
 0032 2882              std y+0,R2
 0034 21E0              ldi R18,1
 0036 30E0              ldi R19,0
 0038 00E0              ldi R16,<PL_check
 003A 10E0              ldi R17,>PL_check
 003C 0E940000          xcall _SCH_Add_Task
 0040                   .dbline 22
 0040           ;  
 0040           ;  SCH_Start();   
 0040 0E940000          xcall _SCH_Start
 0044 02C0              xjmp L6
 0046           L5:
 0046                   .dbline 25
 0046                   .dbline 26
 0046 0E940000          xcall _SCH_Dispatch_Tasks
 004A                   .dbline 27
 004A           L6:
 004A                   .dbline 24
 004A FDCF              xjmp L5
 004C           X0:
 004C                   .dbline -2
 004C           L4:
 004C 2296              adiw R28,2
 004E                   .dbline 0 ; func end
 004E 0895              ret
 0050                   .dbend
 0050                   .dbfunc s InitDevices _InitDevices fV
                        .even
 0050           _InitDevices:
 0050                   .dbline -1
 0050                   .dbline 33
 0050           ; 
 0050           ;  while(1)
 0050           ;  { 
 0050           ;   SCH_Dispatch_Tasks();
 0050           ;  }
 0050           ;  
 0050           ; }
 0050           ; 
 0050           ; 
 0050           ; static void InitDevices(void)
 0050           ; {
 0050                   .dbline 34
 0050           ;  CLI();                                  //关中断
 0050 F894              cli
 0052                   .dbline 36
 0052           ;  
 0052           ;  InitPort();             //IO端口初始化
 0052 15D0              xcall _InitPort
 0054                   .dbline 38
 0054           ;   
 0054           ;  StopMotor();            //设置电机关
 0054 0E940000          xcall _StopMotor
 0058                   .dbline 41
 0058           ;  
 0058           ;  
 0058           ;  MotorFlag = STOP;       //状态标识
 0058 83E0              ldi R24,3
 005A 80930000          sts _MotorFlag,R24
 005E                   .dbline 42
 005E           ;  ControlFlag = IN_LOCAL;
 005E 81E0              ldi R24,1
 0060 80930000          sts _ControlFlag,R24
 0064                   .dbline 43
 0064           ;  limit_direction = 1;
 0064 80930000          sts _limit_direction,R24
 0068                   .dbline 45
 0068           ;  
 0068           ;  SetLocalLed();                  //本地LED指示
 0068 C598              cbi 0x18,5
 006A                   .dbline 46
 006A           ;  ClrRemoteLed(); 
 006A C69A              sbi 0x18,6
 006C                   .dbline 48
 006C           ;  
 006C           ;  MCUCR = 0x00;
 006C 2224              clr R2
 006E 25BE              out 0x35,R2
 0070                   .dbline 49
 0070           ;  GICR  = 0x00;
 0070 2BBE              out 0x3b,R2
 0072                   .dbline 50
 0072           ;  TIMSK = 0x04;                   //timer interrupt sources
 0072 84E0              ldi R24,4
 0074 89BF              out 0x39,R24
 0076                   .dbline 52
 0076           ;  
 0076           ;  InitTimer1();                   //调度定时器
 0076 0E940000          xcall _InitTimer1
 007A                   .dbline 54
 007A           ;  
 007A           ;  OutWdServer();       //喂外部看门狗
 007A 0ED0              xcall _OutWdServer
 007C                   .dbline -2
 007C           L8:
 007C                   .dbline 0 ; func end
 007C 0895              ret
 007E                   .dbend
 007E                   .dbfunc s InitPort _InitPort fV
                        .even
 007E           _InitPort:
 007E                   .dbline -1
 007E                   .dbline 59
 007E           ; }
 007E           ; 
 007E           ; 
 007E           ; static void InitPort(void)
 007E           ;  {  
 007E                   .dbline 60
 007E           ;     PORTB =(1<<LOCAL_LED)|(1<<REMOTE_LED)|(1<<OUT_WD);
 007E 80E7              ldi R24,112
 0080 88BB              out 0x18,R24
 0082                   .dbline 61
 0082           ;     DDRB=((1<<LOCAL_LED)|(1<<REMOTE_LED)|(1<<OUT_WD)); 
 0082 87BB              out 0x17,R24
 0084                   .dbline 63
 0084           ;               
 0084           ;       PORTA =0x00;
 0084 2224              clr R2
 0086 2BBA              out 0x1b,R2
 0088                   .dbline 64
 0088           ;     DDRA=0x00;
 0088 2ABA              out 0x1a,R2
 008A                   .dbline 66
 008A           ;       
 008A           ;     PORTC =0x00;
 008A 25BA              out 0x15,R2
 008C                   .dbline 67
 008C           ;     DDRC =(0<<LOCAL_CLOSE)|(0<<LOCAL_OPEN)|(1<<MOTOR_1)|(1<<MOTOR_2);
 008C 83E0              ldi R24,3
 008E 84BB              out 0x14,R24
 0090                   .dbline 69
 0090           ;           
 0090           ;       PORTD =0x00;
 0090 22BA              out 0x12,R2
 0092                   .dbline 70
 0092           ;     DDRD = ((0<<REMOTE_STOP)|(0<<REMOTE_CLOSE)|(0<<REMOTE_OPEN))|((1<<S1|(1<<S2))); 
 0092 80EC              ldi R24,192
 0094 81BB              out 0x11,R24
 0096                   .dbline -2
 0096           L9:
 0096                   .dbline 0 ; func end
 0096 0895              ret
 0098                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile D:\_文档~1\easy-STQ-20080712\main.c
 0000           L11:
 0000                   .blkb 1
                        .area idata
 0000 01                .byte 1
                        .area data(ram, con, rel)
 0001                   .dbfile D:\_文档~1\easy-STQ-20080712\main.c
                        .area text(rom, con, rel)
 0098                   .dbfile D:\_文档~1\easy-STQ-20080712\main.c
 0098                   .dbfunc e OutWdServer _OutWdServer fV
 0098                   .dbsym s WdFlag L11 c
                        .even
 0098           _OutWdServer::
 0098                   .dbline -1
 0098                   .dbline 76
 0098           ;       
 0098           ;  }
 0098           ;  
 0098           ;  
 0098           ; void OutWdServer(void)    //喂外部看门狗
 0098           ; {
 0098                   .dbline 79
 0098           ;       static uchar WdFlag=1;
 0098           ;       
 0098           ;     if (WdFlag)
 0098 20900000          lds R2,L11
 009C 2220              tst R2
 009E 29F0              breq L12
 00A0                   .dbline 80
 00A0           ;       {
 00A0                   .dbline 81
 00A0           ;           SetOutWd();
 00A0 C49A              sbi 0x18,4
 00A2                   .dbline 82
 00A2           ;           WdFlag=0;
 00A2 2224              clr R2
 00A4 20920000          sts L11,R2
 00A8                   .dbline 83
 00A8           ;     }
 00A8 04C0              xjmp L13
 00AA           L12:
 00AA                   .dbline 85
 00AA                   .dbline 86
 00AA C498              cbi 0x18,4
 00AC                   .dbline 87
 00AC 81E0              ldi R24,1
 00AE 80930000          sts L11,R24
 00B2                   .dbline 88
 00B2           L13:
 00B2                   .dbline -2
 00B2           L10:
 00B2                   .dbline 0 ; func end
 00B2 0895              ret
 00B4                   .dbend
                        .area func_lit
 0000 0000      PL_check:       .word `_check
 0002 0000      PL_Alarm:       .word `_Alarm
 0004 0000      PL_Motor:       .word `_Motor

⌨️ 快捷键说明

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