?? alarmprocess.lis
字號:
.module alarmprocess.c
.area text(rom, con, rel)
0000 .dbfile D:\報警系統設計資料\報警系統軟件\測量模塊基于CAN的系統網程序\CAN網可配置型報警燈板程序\alarmprocess.c
0000 .dbfunc e current_jisuan _current_jisuan fi
0000 ; tt -> R10,R11
0000 ; k1 -> y+12
0000 ; temp -> y+8
0000 ; result -> y+4
0000 ; k0 -> y+0
0000 ; current -> R12,R13
0000 ; fullscal -> R10,R11
.even
0000 _current_jisuan::
0000 0E940000 xcall push_gset4
0004 6901 movw R12,R18
0006 5801 movw R10,R16
0008 6097 sbiw R28,16
000A .dbline -1
000A .dbline 7
000A ; #include "main.h"
000A ;
000A ; extern VCI_CAN_OBJ rece_data[50];
000A ; extern SHD_LED pannel_led[48];
000A ;
000A ; unsigned int current_jisuan(unsigned fullscal,unsigned int current)
000A ; {
000A .dbline 10
000A ; float result,temp,k0,k1;
000A ; unsigned int tt;
000A ; CLI();
000A F894 cli
000C .dbline 11
000C ; WDR();
000C A895 wdr
000E .dbline 13
000E ;
000E ; temp = (float)(current/100.0); //電流測量值計算
000E 00E0 ldi R16,<L3
0010 10E0 ldi R17,>L3
0012 0E940000 xcall lpm32
0016 1801 movw R2,R16
0018 2901 movw R4,R18
001A 8601 movw R16,R12
001C 1695 lsr R17
001E 0795 ror R16
0020 0E940000 xcall int2fp
0024 3A93 st -y,R19
0026 2A93 st -y,R18
0028 1A93 st -y,R17
002A 0A93 st -y,R16
002C 8101 movw R16,R2
002E 9201 movw R18,R4
0030 0E940000 xcall fpmule2
0034 1801 movw R2,R16
0036 2901 movw R4,R18
0038 8601 movw R16,R12
003A 0170 andi R16,1
003C 1070 andi R17,0
003E 0E940000 xcall int2fp
0042 3A93 st -y,R19
0044 2A93 st -y,R18
0046 1A93 st -y,R17
0048 0A93 st -y,R16
004A 8101 movw R16,R2
004C 9201 movw R18,R4
004E 0E940000 xcall fpadd2
0052 1801 movw R2,R16
0054 2901 movw R4,R18
0056 00E0 ldi R16,<L4
0058 10E0 ldi R17,>L4
005A 0E940000 xcall lpm32
005E 3A93 st -y,R19
0060 2A93 st -y,R18
0062 1A93 st -y,R17
0064 0A93 st -y,R16
0066 8101 movw R16,R2
0068 9201 movw R18,R4
006A 0E940000 xcall fpdiv2
006E 0887 std y+8,R16
0070 1987 std y+9,R17
0072 2A87 std y+10,R18
0074 3B87 std y+11,R19
0076 .dbline 15
0076 ;
0076 ; k1 = fullscal;
0076 00E0 ldi R16,<L3
0078 10E0 ldi R17,>L3
007A 0E940000 xcall lpm32
007E 1801 movw R2,R16
0080 2901 movw R4,R18
0082 8501 movw R16,R10
0084 1695 lsr R17
0086 0795 ror R16
0088 0E940000 xcall int2fp
008C 3A93 st -y,R19
008E 2A93 st -y,R18
0090 1A93 st -y,R17
0092 0A93 st -y,R16
0094 8101 movw R16,R2
0096 9201 movw R18,R4
0098 0E940000 xcall fpmule2
009C 1801 movw R2,R16
009E 2901 movw R4,R18
00A0 8501 movw R16,R10
00A2 0170 andi R16,1
00A4 1070 andi R17,0
00A6 0E940000 xcall int2fp
00AA 3A93 st -y,R19
00AC 2A93 st -y,R18
00AE 1A93 st -y,R17
00B0 0A93 st -y,R16
00B2 8101 movw R16,R2
00B4 9201 movw R18,R4
00B6 0E940000 xcall fpadd2
00BA 0C87 std y+12,R16
00BC 1D87 std y+13,R17
00BE 2E87 std y+14,R18
00C0 3F87 std y+15,R19
00C2 .dbline 17
00C2 ;
00C2 ; k0 = k1/16.0; //斜率計算
00C2 2C84 ldd R2,y+12
00C4 3D84 ldd R3,y+13
00C6 4E84 ldd R4,y+14
00C8 5F84 ldd R5,y+15
00CA 00E0 ldi R16,<L5
00CC 10E0 ldi R17,>L5
00CE 0E940000 xcall lpm32
00D2 3A93 st -y,R19
00D4 2A93 st -y,R18
00D6 1A93 st -y,R17
00D8 0A93 st -y,R16
00DA 8101 movw R16,R2
00DC 9201 movw R18,R4
00DE 0E940000 xcall fpdiv2
00E2 0883 std y+0,R16
00E4 1983 std y+1,R17
00E6 2A83 std y+2,R18
00E8 3B83 std y+3,R19
00EA .dbline 19
00EA ;
00EA ; result = k0*temp -4*k0; //顯示值計算
00EA 0881 ldd R16,y+0
00EC 1981 ldd R17,y+1
00EE 2A81 ldd R18,y+2
00F0 3B81 ldd R19,y+3
00F2 CE01 movw R24,R28
00F4 0896 adiw R24,8
00F6 9A93 st -y,R25
00F8 8A93 st -y,R24
00FA 0E940000 xcall fpmule1
00FE 1801 movw R2,R16
0100 2901 movw R4,R18
0102 00E0 ldi R16,<L6
0104 10E0 ldi R17,>L6
0106 0E940000 xcall lpm32
010A CE01 movw R24,R28
010C 9A93 st -y,R25
010E 8A93 st -y,R24
0110 0E940000 xcall fpmule1x
0114 8101 movw R16,R2
0116 9201 movw R18,R4
0118 0E940000 xcall fpsub2
011C 0C83 std y+4,R16
011E 1D83 std y+5,R17
0120 2E83 std y+6,R18
0122 3F83 std y+7,R19
0124 .dbline 21
0124 ;
0124 ; tt = (unsigned int )(result);
0124 2C80 ldd R2,y+4
0126 3D80 ldd R3,y+5
0128 4E80 ldd R4,y+6
012A 5F80 ldd R5,y+7
012C 00E0 ldi R16,<L9
012E 10E0 ldi R17,>L9
0130 0E940000 xcall lpm32
0134 3A93 st -y,R19
0136 2A93 st -y,R18
0138 1A93 st -y,R17
013A 0A93 st -y,R16
013C 8101 movw R16,R2
013E 9201 movw R18,R4
0140 0E940000 xcall fpcmp2
0144 BCF0 brlt L7
0146 2C80 ldd R2,y+4
0148 3D80 ldd R3,y+5
014A 4E80 ldd R4,y+6
014C 5F80 ldd R5,y+7
014E 00E0 ldi R16,<L9
0150 10E0 ldi R17,>L9
0152 0E940000 xcall lpm32
0156 3A93 st -y,R19
0158 2A93 st -y,R18
015A 1A93 st -y,R17
015C 0A93 st -y,R16
015E 8101 movw R16,R2
0160 9201 movw R18,R4
0162 0E940000 xcall fpsub2
0166 0E940000 xcall fpint
016A C801 movw R24,R16
016C 8050 subi R24,0 ; offset = 32768
016E 9048 sbci R25,128
0170 6C01 movw R12,R24
0172 07C0 xjmp L8
0174 L7:
0174 0C81 ldd R16,y+4
0176 1D81 ldd R17,y+5
0178 2E81 ldd R18,y+6
017A 3F81 ldd R19,y+7
017C 0E940000 xcall fpint
0180 6801 movw R12,R16
0182 L8:
0182 5601 movw R10,R12
0184 .dbline 23
0184 ;
0184 ; SEI();
0184 7894 sei
0186 .dbline 24
0186 ; WDR();
0186 A895 wdr
0188 .dbline 26
0188 ;
0188 ; return tt;
0188 8501 movw R16,R10
018A .dbline -2
018A L2:
018A 6096 adiw R28,16
018C 0E940000 xcall pop_gset4
0190 .dbline 0 ; func end
0190 0895 ret
0192 .dbsym r tt 10 i
0192 .dbsym l k1 12 D
0192 .dbsym l temp 8 D
0192 .dbsym l result 4 D
0192 .dbsym l k0 0 D
0192 .dbsym r current 12 i
0192 .dbsym r fullscal 10 i
0192 .dbend
0192 .dbfunc e alarm_out _alarm_out fV
0192 ; i -> R20
.even
0192 _alarm_out::
0192 0E940000 xcall push_gset1
0196 .dbline -1
0196 .dbline 30
0196 ; }
0196 ;
0196 ; void alarm_out(void) //報警輸出
0196 ; {
0196 .dbline 33
0196 ; unsigned char i;
0196 ;
0196 ; for(i=0;i<48;i++)
0196 4427 clr R20
0198 37C0 xjmp L14
019A L11:
019A .dbline 34
019A ; {
019A .dbline 35
019A ; WDR();
019A A895 wdr
019C .dbline 36
019C ; if(pannel_led[i].state!=normal)
019C 84E1 ldi R24,20
019E 849F mul R24,R20
01A0 F001 movw R30,R0
01A2 80E0 ldi R24,<_pannel_led+13
01A4 90E0 ldi R25,>_pannel_led+13
01A6 E80F add R30,R24
01A8 F91F adc R31,R25
01AA 2080 ldd R2,z+0
01AC 2220 tst R2
01AE F1F0 breq L15
01B0 .dbline 37
01B0 ; {
01B0 .dbline 38
01B0 ; if(pannel_led[i].soundoff!=acked)
01B0 84E1 ldi R24,20
01B2 849F mul R24,R20
01B4 F001 movw R30,R0
01B6 80E0 ldi R24,<_pannel_led+17
01B8 90E0 ldi R25,>_pannel_led+17
01BA E80F add R30,R24
01BC F91F adc R31,R25
01BE 8081 ldd R24,z+0
01C0 8230 cpi R24,2
01C2 51F0 breq L18
01C4 .dbline 39
01C4 ; {
01C4 .dbline 40
01C4 ; pannel_led[i].soundoff = noack;
01C4 84E1 ldi R24,20
01C6 849F mul R24,R20
01C8 F001 movw R30,R0
01CA 80E0 ldi R24,<_pannel_led+17
01CC 90E0 ldi R25,>_pannel_led+17
01CE E80F add R30,R24
01D0 F91F adc R31,R25
01D2 81E0 ldi R24,1
01D4 8083 std z+0,R24
01D6 .dbline 41
01D6 ; }
01D6 17C0 xjmp L16
01D8 L18:
01D8 .dbline 44
01D8 ;
01D8 ; else
01D8 ; {
01D8 .dbline 45
01D8 ; pannel_led[i].soundoff = acked;
01D8 84E1 ldi R24,20
01DA 849F mul R24,R20
01DC F001 movw R30,R0
01DE 80E0 ldi R24,<_pannel_led+17
01E0 90E0 ldi R25,>_pannel_led+17
01E2 E80F add R30,R24
01E4 F91F adc R31,R25
01E6 82E0 ldi R24,2
01E8 8083 std z+0,R24
01EA .dbline 46
01EA ; }
01EA .dbline 47
01EA ; }
01EA 0DC0 xjmp L16
01EC L15:
01EC .dbline 50
01EC ;
01EC ; else
01EC ; {
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -