err.lis

来自「平缝机的单片机伺服控制系统源代码。本程序为用单片机控制永磁同步电机的低成本方案」· LIS 代码 · 共 1,351 行 · 第 1/4 页

LIS
1,351
字号
                        .module Err.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\niutao\MYDOCU~1\永磁电机\平缝机\新建文件夹\函数库\ERR\Err.c
 0000                   .dbfunc e det_err _det_err fV
 0000           ;           sign -> R20
                        .even
 0000           _det_err::
 0000 00D0              rcall push_gset1
 0002                   .dbline -1
 0002                   .dbline 29
 0002           ; /*****************************************************************
 0002           ;  *  文件名:                  Err.c
 0002           ;  *  版本号:      
 0002           ;  *  创作日期:        2005.7.13
 0002           ;  *  作者:                    Zhoujie
 0002           ;  *  功能说明:        故障检测与故障处理
 0002           ;  *  其它说明:    
 0002           ;  
 0002           ;  *****************************************************************/
 0002           ;  
 0002           ; 
 0002           ; /*****************************************************************
 0002           ; 
 0002           ;  *   修改日期:     
 0002           ;  *   修改人:
 0002           ;  *   修改原因:
 0002           ; 
 0002           ; *******************************************************************/
 0002           ; 
 0002           ; #include "Err.h"
 0002           ; 
 0002           ; // 检测以及处理故障函数
 0002           ; // 依次检测是否出现各种故障
 0002           ; // 按照检测到的先后顺序
 0002           ; // 控制LED 灯显示最先检测到的故障
 0002           ; // 随后检测到的故障将相应的错误位置起来
 0002           ; // 怎样清除故障显示 ?
 0002           ; void det_err(void)
 0002           ; {
 0002                   .dbline 32
 0002           ;       byte sign;
 0002           ; 
 0002           ;       if (g_Err_Det_Disable)
 0002 20900000          lds R2,_g_Err_Det_Disable
 0006 2220              tst R2
 0008 09F0              breq L2
 000A                   .dbline 33
 000A           ;               return;
 000A 71C0              rjmp L1
 000C           L2:
 000C                   .dbline 35
 000C           ;       
 000C           ;       sign = 1;
 000C 41E0              ldi R20,1
 000E                   .dbline 37
 000E           ;       
 000E           ;       if (det_err_over_flow())
 000E 71D0              rcall _det_err_over_flow
 0010 0023              tst R16
 0012 31F0              breq L4
 0014                   .dbline 38
 0014           ;       {
 0014                   .dbline 39
 0014           ;               RED_ON();
 0014 4298              cbi 0x8,2
 0016                   .dbline 40
 0016           ;               GREEN_OFF();
 0016 439A              sbi 0x8,3
 0018                   .dbline 41
 0018           ;               sign = 0;
 0018 4427              clr R20
 001A                   .dbline 42
 001A           ;               g_Err_Det_Disable = 1;
 001A 81E0              ldi R24,1
 001C 80930000          sts _g_Err_Det_Disable,R24
 0020                   .dbline 43
 0020           ;       }
 0020           L4:
 0020                   .dbline 44
 0020           ;       if ( (det_err_inver_protect()) && sign )
 0020 73D0              rcall _det_err_inver_protect
 0022 0023              tst R16
 0024 51F0              breq L6
 0026 4423              tst R20
 0028 41F0              breq L6
 002A                   .dbline 45
 002A           ;       {
 002A                   .dbline 46
 002A           ;               led_flicker(1,2);
 002A 22E0              ldi R18,2
 002C 01E0              ldi R16,1
 002E D4D0              rcall _led_flicker
 0030                   .dbline 47
 0030           ;               GREEN_OFF();
 0030 439A              sbi 0x8,3
 0032                   .dbline 48
 0032           ;               sign = 0;
 0032 4427              clr R20
 0034                   .dbline 49
 0034           ;               g_Err_Det_Disable = 1;
 0034 81E0              ldi R24,1
 0036 80930000          sts _g_Err_Det_Disable,R24
 003A                   .dbline 50
 003A           ;       }
 003A           L6:
 003A                   .dbline 51
 003A           ;       if ((det_err_low_vol()) && sign )
 003A 75D0              rcall _det_err_low_vol
 003C 0023              tst R16
 003E 51F0              breq L8
 0040 4423              tst R20
 0042 41F0              breq L8
 0044                   .dbline 52
 0044           ;       {
 0044                   .dbline 53
 0044           ;               led_flicker(1,3);
 0044 23E0              ldi R18,3
 0046 01E0              ldi R16,1
 0048 C7D0              rcall _led_flicker
 004A                   .dbline 54
 004A           ;               GREEN_OFF();
 004A 439A              sbi 0x8,3
 004C                   .dbline 55
 004C           ;               sign = 0;
 004C 4427              clr R20
 004E                   .dbline 56
 004E           ;               g_Err_Det_Disable = 1;
 004E 81E0              ldi R24,1
 0050 80930000          sts _g_Err_Det_Disable,R24
 0054                   .dbline 57
 0054           ;       }
 0054           L8:
 0054                   .dbline 58
 0054           ;       if ((   det_err_no_stop_needle()) && sign)
 0054 75D0              rcall _det_err_no_stop_needle
 0056 0023              tst R16
 0058 51F0              breq L10
 005A 4423              tst R20
 005C 41F0              breq L10
 005E                   .dbline 59
 005E           ;       {
 005E                   .dbline 60
 005E           ;               led_flicker(1,4);
 005E 24E0              ldi R18,4
 0060 01E0              ldi R16,1
 0062 BAD0              rcall _led_flicker
 0064                   .dbline 61
 0064           ;               GREEN_OFF();
 0064 439A              sbi 0x8,3
 0066                   .dbline 62
 0066           ;               sign = 0;
 0066 4427              clr R20
 0068                   .dbline 63
 0068           ;               g_Err_Det_Disable = 1;
 0068 81E0              ldi R24,1
 006A 80930000          sts _g_Err_Det_Disable,R24
 006E                   .dbline 64
 006E           ;       }
 006E           L10:
 006E                   .dbline 65
 006E           ;       if ((det_err_over_vol()) && sign )
 006E 75D0              rcall _det_err_over_vol
 0070 0023              tst R16
 0072 51F0              breq L12
 0074 4423              tst R20
 0076 41F0              breq L12
 0078                   .dbline 66
 0078           ;       {
 0078                   .dbline 67
 0078           ;               led_flicker(1,5);
 0078 25E0              ldi R18,5
 007A 01E0              ldi R16,1
 007C ADD0              rcall _led_flicker
 007E                   .dbline 68
 007E           ;               GREEN_OFF();
 007E 439A              sbi 0x8,3
 0080                   .dbline 69
 0080           ;               sign = 0;
 0080 4427              clr R20
 0082                   .dbline 70
 0082           ;               g_Err_Det_Disable = 1;
 0082 81E0              ldi R24,1
 0084 80930000          sts _g_Err_Det_Disable,R24
 0088                   .dbline 71
 0088           ;       }
 0088           L12:
 0088                   .dbline 72
 0088           ;       if ((det_err_solenoid_short()) && sign )
 0088 75D0              rcall _det_err_solenoid_short
 008A 0023              tst R16
 008C 51F0              breq L14
 008E 4423              tst R20
 0090 41F0              breq L14
 0092                   .dbline 73
 0092           ;       {
 0092                   .dbline 74
 0092           ;               RED_ON();
 0092 4298              cbi 0x8,2
 0094                   .dbline 75
 0094           ;               led_flicker(0,1);
 0094 21E0              ldi R18,1
 0096 0027              clr R16
 0098 9FD0              rcall _led_flicker
 009A                   .dbline 76
 009A           ;               sign = 0;
 009A 4427              clr R20
 009C                   .dbline 77
 009C           ;               g_Err_Det_Disable = 1;
 009C 81E0              ldi R24,1
 009E 80930000          sts _g_Err_Det_Disable,R24
 00A2                   .dbline 78
 00A2           ;       }
 00A2           L14:
 00A2                   .dbline 79
 00A2           ;       if ((det_err_syn_encoder()) && sign )
 00A2 73D0              rcall _det_err_syn_encoder
 00A4 0023              tst R16
 00A6 51F0              breq L16
 00A8 4423              tst R20
 00AA 41F0              breq L16
 00AC                   .dbline 80
 00AC           ;       {
 00AC                   .dbline 81
 00AC           ;               RED_ON();
 00AC 4298              cbi 0x8,2
 00AE                   .dbline 82
 00AE           ;               led_flicker(0,2);
 00AE 22E0              ldi R18,2
 00B0 0027              clr R16
 00B2 92D0              rcall _led_flicker
 00B4                   .dbline 83
 00B4           ;               sign = 0;
 00B4 4427              clr R20
 00B6                   .dbline 84
 00B6           ;               g_Err_Det_Disable = 1;
 00B6 81E0              ldi R24,1
 00B8 80930000          sts _g_Err_Det_Disable,R24
 00BC                   .dbline 85
 00BC           ;       }
 00BC           L16:
 00BC                   .dbline 86
 00BC           ;       if ((det_err_motor_block()) && sign )
 00BC 73D0              rcall _det_err_motor_block
 00BE 0023              tst R16
 00C0 51F0              breq L18
 00C2 4423              tst R20
 00C4 41F0              breq L18
 00C6                   .dbline 87
 00C6           ;       {
 00C6                   .dbline 88
 00C6           ;               RED_ON();
 00C6 4298              cbi 0x8,2
 00C8                   .dbline 89
 00C8           ;               led_flicker(0,3);
 00C8 23E0              ldi R18,3
 00CA 0027              clr R16
 00CC 85D0              rcall _led_flicker
 00CE                   .dbline 90
 00CE           ;               sign = 0;
 00CE 4427              clr R20
 00D0                   .dbline 91
 00D0           ;               g_Err_Det_Disable = 1;
 00D0 81E0              ldi R24,1
 00D2 80930000          sts _g_Err_Det_Disable,R24
 00D6                   .dbline 92
 00D6           ;       }
 00D6           L18:
 00D6                   .dbline 93
 00D6 73D0              rcall _det_err_motor_hall
 00D8 0023              tst R16
 00DA 49F0              breq L20
 00DC 4423              tst R20
 00DE 39F0              breq L20
 00E0                   .dbline 94
 00E0                   .dbline 95
 00E0 4298              cbi 0x8,2
 00E2                   .dbline 96
 00E2 24E0              ldi R18,4
 00E4 0027              clr R16
 00E6 78D0              rcall _led_flicker
 00E8                   .dbline 97
 00E8 81E0              ldi R24,1
 00EA 80930000          sts _g_Err_Det_Disable,R24
 00EE                   .dbline 98
 00EE           L20:
 00EE                   .dbline -2
 00EE           L1:
 00EE 00D0              rcall pop_gset1
 00F0                   .dbline 0 ; func end
 00F0 0895              ret
 00F2                   .dbsym r sign 20 c
 00F2                   .dbend
 00F2                   .dbfunc e det_err_over_flow _det_err_over_flow fc
                        .even
 00F2           _det_err_over_flow::
 00F2                   .dbline -1
 00F2                   .dbline 106
 00F2           ;       if (det_err_motor_hall() && sign)
 00F2           ;       {
 00F2           ;               RED_ON();
 00F2           ;               led_flicker(0,4);
 00F2           ;               g_Err_Det_Disable = 1;
 00F2           ;       }
 00F2           ;       
 00F2           ; }
 00F2           ; 
 00F2           ; 
 00F2           ; // 硬件过流检测
 00F2           ; // 需要A/D 模块控制当母线电流大于20A,FO_MCU由低电平转到高电平
 00F2           ; byte det_err_over_flow(void)
 00F2           ; {
 00F2                   .dbline 107
 00F2           ;       if ( FO_MCU() != 0 )
 00F2 319B              sbis 0x6,1
 00F4 07C0              rjmp L23
 00F6                   .dbline 108
 00F6           ;       {
 00F6                   .dbline 109
 00F6           ;               g_ErrCode01  |= 0x01;
 00F6 80910000          lds R24,_g_ErrCode01
 00FA 8160              ori R24,1
 00FC 80930000          sts _g_ErrCode01,R24
 0100                   .dbline 110
 0100           ;               return 1;
 0100 01E0              ldi R16,1
 0102 01C0              rjmp L22
 0104           L23:
 0104                   .dbline 113
 0104           ;       }
 0104           ;       else
 0104           ;               return 0;
 0104 0027              clr R16
 0106                   .dbline -2
 0106           L22:
 0106                   .dbline 0 ; func end
 0106 0895              ret
 0108                   .dbend
 0108                   .dbfunc e det_err_inver_protect _det_err_inver_protect fc

⌨️ 快捷键说明

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