📄 relay_out.s
字号:
.module relay_out.c
.area text(rom, con, rel)
.dbfile E:\mysoft\DH980\relay_out.c
.dbfunc e relay_init _relay_init fV
.even
_relay_init::
.dbline -1
.dbline 71
; #include <iom169v.h>
; #include <macros.h>
; #include <stdio.h>
; #include "main.h"
;
; #define RELAY1_0 PORTF|=0b00000001 //PF0
; #define RELAY1_1 PORTF&=0b11111110 //PF0
; #define RELAY2_0 PORTF|=0b00000010 //PF1
; #define RELAY2_1 PORTF&=0b11111101 //PF1
; #define RELAY3_0 PORTF|=0b00000100 //PF2
; #define RELAY3_1 PORTF&=0b11111011 //PF2
; #define RELAY4_0 PORTF|=0b00001000 //PF3
; #define RELAY4_1 PORTF&=0b11110111 //PF3
; #define RELAY5_0 PORTA|=0b00000001 //PA0
; #define RELAY5_1 PORTA&=0b11111110 //PA0
; #define RELAY6_0 PORTA|=0b00000010 //PA1
; #define RELAY6_1 PORTA&=0b11111101 //PA1
; #define RELAY7_0 PORTA|=0b00000100 //PA2
; #define RELAY7_1 PORTA&=0b11111011 //PA2
; #define RELAY8_0 PORTA|=0b00001000 //PA3
; #define RELAY8_1 PORTA&=0b11110111 //PA3
; #define RELAY9_0 PORTA|=0b00010000 //PA4
; #define RELAY9_1 PORTA&=0b11101111 //PA4
; #define RELAY10_0 PORTA|=0b00100000 //PA5
; #define RELAY10_1 PORTA&=0b11011111 //PA5
; #define RELAY11_0 PORTA|=0b01000000 //PA6
; #define RELAY11_1 PORTA&=0b10111111 //PA6
; #define RELAY12_0 PORTA|=0b10000000 //PA7
; #define RELAY12_1 PORTA&=0b01111111 //PA7
; #define RELAY13_0 PORTG|=0b00000100 //PG2
; #define RELAY13_1 PORTG&=0b11111011 //PG2
; #define RELAY14_0 PORTC|=0b10000000 //PC7
; #define RELAY14_1 PORTC&=0b01111111 //PC7
; #define RELAY15_0 PORTC|=0b01000000 //PC6
; #define RELAY15_1 PORTC&=0b10111111 //PC6
; #define RELAY16_0 PORTC|=0b00100000 //PC5
; #define RELAY16_1 PORTC&=0b11011111 //PC5
; #define RELAY17_0 PORTC|=0b00010000 //PC4
; #define RELAY17_1 PORTC&=0b11101111 //PC4
; #define RELAY18_0 PORTC|=0b00001000 //PC3
; #define RELAY18_1 PORTC&=0b11110111 //PC3
; #define RELAY19_0 PORTC|=0b00000100 //PC2
; #define RELAY19_1 PORTC&=0b11111011 //PC2
; #define RELAY20_0 PORTC|=0b00000010 //PC1
; #define RELAY20_1 PORTC&=0b11111101 //PC1
; #define RELAY21_0 PORTC|=0b00000001 //PC0
; #define RELAY21_1 PORTC&=0b11111110 //PC0
; #define RELAY22_0 PORTG|=0b00000010 //PG1
; #define RELAY22_1 PORTG&=0b11111101 //PG1
; #define RELAY23_0 PORTG|=0b00000001 //PG0
; #define RELAY23_1 PORTG&=0b11111110 //PG0
; #define RELAY24_0 PORTD|=0b10000000 //PD7
; #define RELAY24_1 PORTD&=0b01111111 //PD7
; #define RELAY25_0 PORTD|=0b01000000 //PD6
; #define RELAY25_1 PORTD&=0b10111111 //PD6
; #define RELAY26_0 PORTD|=0b00100000 //PD5
; #define RELAY26_1 PORTD&=0b11011111 //PD5
; #define RELAY27_0 PORTD|=0b00010000 //PD4
; #define RELAY27_1 PORTD&=0b11101111 //PD4
; #define RELAY28_0 PORTD|=0b00001000 //PD3
; #define RELAY28_1 PORTD&=0b11110111 //PD3
; #define RELAY29_0 PORTD|=0b00000100 //PD2
; #define RELAY29_1 PORTD&=0b11111011 //PD2
; #define RELAY30_0 PORTD|=0b00000010 //PD1
; #define RELAY30_1 PORTD&=0b11111101 //PD1
; #define RELAY31_0 PORTD|=0b00000001 //PD0
; #define RELAY31_1 PORTD&=0b11111110 //PD0
; #define RELAY32_0 PORTG|=0b00010000 //PG4
; #define RELAY32_1 PORTG&=0b11101111 //PG4
; void relay_init()
; {
.dbline 72
; RELAY1_0;
sbi 0x11,0
.dbline 73
; RELAY2_0;
sbi 0x11,1
.dbline 74
; RELAY3_0;
sbi 0x11,2
.dbline 75
; RELAY4_0;
sbi 0x11,3
.dbline 76
; RELAY5_0;
sbi 0x2,0
.dbline 77
; RELAY6_0;
sbi 0x2,1
.dbline 78
; RELAY7_0;
sbi 0x2,2
.dbline 79
; RELAY8_0;
sbi 0x2,3
.dbline 80
; RELAY9_0;
sbi 0x2,4
.dbline 81
; RELAY10_0;
sbi 0x2,5
.dbline 82
; RELAY11_0;
sbi 0x2,6
.dbline 83
; RELAY12_0;
sbi 0x2,7
.dbline 84
; RELAY13_0;
sbi 0x14,2
.dbline 85
; RELAY14_0;
sbi 0x8,7
.dbline 86
; RELAY15_0;
sbi 0x8,6
.dbline 87
; RELAY16_0;
sbi 0x8,5
.dbline 88
; RELAY17_0;
sbi 0x8,4
.dbline 89
; RELAY18_0;
sbi 0x8,3
.dbline 90
; RELAY19_0;
sbi 0x8,2
.dbline 91
; RELAY20_0;
sbi 0x8,1
.dbline 92
; RELAY21_0;
sbi 0x8,0
.dbline 93
; RELAY22_0;
sbi 0x14,1
.dbline 94
; RELAY23_0;
sbi 0x14,0
.dbline 95
; RELAY24_0;
sbi 0xb,7
.dbline 96
; RELAY25_0;
sbi 0xb,6
.dbline 97
; RELAY26_0;
sbi 0xb,5
.dbline 98
; RELAY27_0;
sbi 0xb,4
.dbline 99
; RELAY28_0;
sbi 0xb,3
.dbline 100
; RELAY29_0;
sbi 0xb,2
.dbline 101
; RELAY30_0;
sbi 0xb,1
.dbline 102
; RELAY31_0;
sbi 0xb,0
.dbline 103
; RELAY32_0;
sbi 0x14,4
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e RELAY_out _RELAY_out fV
.area func_lit(rom, con, rel)
L48:
.word `L16
.word `L17
.word `L18
.word `L19
.word `L20
.word `L21
.word `L22
.word `L23
.word `L24
.word `L25
.word `L26
.word `L27
.word `L28
.word `L29
.word `L30
.word `L31
.word `L32
.word `L33
.word `L34
.word `L35
.word `L36
.word `L37
.word `L38
.word `L39
.word `L40
.word `L41
.word `L42
.word `L43
.word `L44
.word `L45
.word `L46
.word `L47
.area text(rom, con, rel)
.dbfile E:\mysoft\DH980\relay_out.c
.area func_lit(rom, con, rel)
L85:
.word `L53
.word `L54
.word `L55
.word `L56
.word `L57
.word `L58
.word `L59
.word `L60
.word `L61
.word `L62
.word `L63
.word `L64
.word `L65
.word `L66
.word `L67
.word `L68
.word `L69
.word `L70
.word `L71
.word `L72
.word `L73
.word `L74
.word `L75
.word `L76
.word `L77
.word `L78
.word `L79
.word `L80
.word `L81
.word `L82
.word `L83
.word `L84
.area text(rom, con, rel)
.dbfile E:\mysoft\DH980\relay_out.c
; b -> R22
; n -> y+0
; l -> R12
; temp -> R14
; p -> y+11
.even
_RELAY_out::
st -y,r17
st -y,r16
xcall push_gset5
sbiw R28,1
.dbline -1
.dbline 106
; }
; void RELAY_out(unsigned char *p)
; {
.dbline 107
; unsigned char b,l,n=1,temp;
clr R0
inc R0
std y+0,R0
.dbline 108
; updating=0; //刷新后复位
clr R2
sts _updating,R2
.dbline 109
; for(b=0;b<4;b++)
clr R22
xjmp L6
L3:
.dbline 110
; {
.dbline 111
; temp=*p;
ldd R30,y+11
ldd R31,y+12
ldd R14,z+0
.dbline 112
; for(l=0;l<8;l++)
clr R12
xjmp L10
L7:
.dbline 113
; {
.dbline 114
; if((temp&0b10000000)!=0)
sbrs R14,7
rjmp L11
.dbline 115
; {
.dbline 116
; switch(n)
ldd R10,y+0
clr R11
movw R24,R10
cpi R24,1
ldi R30,0
cpc R25,R30
brge X2
xjmp L12
X2:
ldi R24,32
cp R24,R10
cpc R25,R11
brge X3
xjmp L12
X3:
ldi R16,2
ldi R17,0
movw R18,R10
xcall empy16s
movw R30,R16
ldi R24,<L48-2
ldi R25,>L48-2
add R30,R24
adc R31,R25
lpm R0,Z+
lpm R1,Z
movw R30,R0
ijmp
X0:
.dbline 117
; {
L16:
.dbline 118
; case 1:RELAY1_1;break;
in R24,0x11
andi R24,254
out 0x11,R24
.dbline 118
xjmp L12
L17:
.dbline 119
; case 2:RELAY2_1;break;
in R24,0x11
andi R24,253
out 0x11,R24
.dbline 119
xjmp L12
L18:
.dbline 120
; case 3:RELAY3_1;break;
in R24,0x11
andi R24,251
out 0x11,R24
.dbline 120
xjmp L12
L19:
.dbline 121
; case 4:RELAY4_1;break;
in R24,0x11
andi R24,247
out 0x11,R24
.dbline 121
xjmp L12
L20:
.dbline 122
; case 5:RELAY5_1;break;
in R24,0x2
andi R24,254
out 0x2,R24
.dbline 122
xjmp L12
L21:
.dbline 123
; case 6:RELAY6_1;break;
in R24,0x2
andi R24,253
out 0x2,R24
.dbline 123
xjmp L12
L22:
.dbline 124
; case 7:RELAY7_1;break;
in R24,0x2
andi R24,251
out 0x2,R24
.dbline 124
xjmp L12
L23:
.dbline 125
; case 8:RELAY8_1;break;
in R24,0x2
andi R24,247
out 0x2,R24
.dbline 125
xjmp L12
L24:
.dbline 126
; case 9:RELAY9_1;break;
in R24,0x2
andi R24,239
out 0x2,R24
.dbline 126
xjmp L12
L25:
.dbline 127
; case 10:RELAY10_1;break;
in R24,0x2
andi R24,223
out 0x2,R24
.dbline 127
xjmp L12
L26:
.dbline 128
; case 11:RELAY11_1;break;
in R24,0x2
andi R24,191
out 0x2,R24
.dbline 128
xjmp L12
L27:
.dbline 129
; case 12:RELAY12_1;break;
in R24,0x2
andi R24,127
out 0x2,R24
.dbline 129
xjmp L12
L28:
.dbline 130
; case 13:RELAY13_1;break;
in R24,0x14
andi R24,251
out 0x14,R24
.dbline 130
xjmp L12
L29:
.dbline 131
; case 14:RELAY14_1;break;
in R24,0x8
andi R24,127
out 0x8,R24
.dbline 131
xjmp L12
L30:
.dbline 132
; case 15:RELAY15_1;break;
in R24,0x8
andi R24,191
out 0x8,R24
.dbline 132
xjmp L12
L31:
.dbline 133
; case 16:RELAY16_1;break;
in R24,0x8
andi R24,223
out 0x8,R24
.dbline 133
xjmp L12
L32:
.dbline 134
; case 17:RELAY17_1;break;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 134
xjmp L12
L33:
.dbline 135
; case 18:RELAY18_1;break;
in R24,0x8
andi R24,247
out 0x8,R24
.dbline 135
xjmp L12
L34:
.dbline 136
; case 19:RELAY19_1;break;
in R24,0x8
andi R24,251
out 0x8,R24
.dbline 136
xjmp L12
L35:
.dbline 137
; case 20:RELAY20_1;break;
in R24,0x8
andi R24,253
out 0x8,R24
.dbline 137
xjmp L12
L36:
.dbline 138
; case 21:RELAY21_1;break;
in R24,0x8
andi R24,254
out 0x8,R24
.dbline 138
xjmp L12
L37:
.dbline 139
; case 22:RELAY22_1;break;
in R24,0x14
andi R24,253
out 0x14,R24
.dbline 139
xjmp L12
L38:
.dbline 140
; case 23:RELAY23_1;break;
in R24,0x14
andi R24,254
out 0x14,R24
.dbline 140
xjmp L12
L39:
.dbline 141
; case 24:RELAY24_1;break;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline 141
xjmp L12
L40:
.dbline 142
; case 25:RELAY25_1;break;
in R24,0xb
andi R24,191
out 0xb,R24
.dbline 142
xjmp L12
L41:
.dbline 143
; case 26:RELAY26_1;break;
in R24,0xb
andi R24,223
out 0xb,R24
.dbline 143
xjmp L12
L42:
.dbline 144
; case 27:RELAY27_1;break;
in R24,0xb
andi R24,239
out 0xb,R24
.dbline 144
xjmp L12
L43:
.dbline 145
; case 28:RELAY28_1;break;
in R24,0xb
andi R24,247
out 0xb,R24
.dbline 145
xjmp L12
L44:
.dbline 146
; case 29:RELAY29_1;break;
in R24,0xb
andi R24,251
out 0xb,R24
.dbline 146
xjmp L12
L45:
.dbline 147
; case 30:RELAY30_1;break;
in R24,0xb
andi R24,253
out 0xb,R24
.dbline 147
xjmp L12
L46:
.dbline 148
; case 31:RELAY31_1;break;
in R24,0xb
andi R24,254
out 0xb,R24
.dbline 148
xjmp L12
L47:
.dbline 149
; case 32:RELAY32_1;break;
in R24,0x14
andi R24,239
out 0x14,R24
.dbline 149
.dbline 150
; default:break;
.dbline 152
; }
; }
xjmp L12
L11:
.dbline 154
; else
; {
.dbline 155
; switch(n)
ldd R20,y+0
clr R21
cpi R20,1
ldi R30,0
cpc R21,R30
brge X4
xjmp L51
X4:
ldi R24,32
ldi R25,0
cp R24,R20
cpc R25,R21
brge X5
xjmp L51
X5:
ldi R16,2
ldi R17,0
movw R18,R20
xcall empy16s
movw R30,R16
ldi R24,<L85-2
ldi R25,>L85-2
add R30,R24
adc R31,R25
lpm R0,Z+
lpm R1,Z
movw R30,R0
ijmp
X1:
.dbline 156
; {
L53:
.dbline 157
; case 1:RELAY1_0;break;
sbi 0x11,0
.dbline 157
xjmp L51
L54:
.dbline 158
; case 2:RELAY2_0;break;
sbi 0x11,1
.dbline 158
xjmp L51
L55:
.dbline 159
; case 3:RELAY3_0;break;
sbi 0x11,2
.dbline 159
xjmp L51
L56:
.dbline 160
; case 4:RELAY4_0;break;
sbi 0x11,3
.dbline 160
xjmp L51
L57:
.dbline 161
; case 5:RELAY5_0;break;
sbi 0x2,0
.dbline 161
xjmp L51
L58:
.dbline 162
; case 6:RELAY6_0;break;
sbi 0x2,1
.dbline 162
xjmp L51
L59:
.dbline 163
; case 7:RELAY7_0;break;
sbi 0x2,2
.dbline 163
xjmp L51
L60:
.dbline 164
; case 8:RELAY8_0;break;
sbi 0x2,3
.dbline 164
xjmp L51
L61:
.dbline 165
; case 9:RELAY9_0;break;
sbi 0x2,4
.dbline 165
xjmp L51
L62:
.dbline 166
; case 10:RELAY10_0;break;
sbi 0x2,5
.dbline 166
xjmp L51
L63:
.dbline 167
; case 11:RELAY11_0;break;
sbi 0x2,6
.dbline 167
xjmp L51
L64:
.dbline 168
; case 12:RELAY12_0;break;
sbi 0x2,7
.dbline 168
xjmp L51
L65:
.dbline 169
; case 13:RELAY13_0;break;
sbi 0x14,2
.dbline 169
xjmp L51
L66:
.dbline 170
; case 14:RELAY14_0;break;
sbi 0x8,7
.dbline 170
xjmp L51
L67:
.dbline 171
; case 15:RELAY15_0;break;
sbi 0x8,6
.dbline 171
xjmp L51
L68:
.dbline 172
; case 16:RELAY16_0;break;
sbi 0x8,5
.dbline 172
xjmp L51
L69:
.dbline 173
; case 17:RELAY17_0;break;
sbi 0x8,4
.dbline 173
xjmp L51
L70:
.dbline 174
; case 18:RELAY18_0;break;
sbi 0x8,3
.dbline 174
xjmp L51
L71:
.dbline 175
; case 19:RELAY19_0;break;
sbi 0x8,2
.dbline 175
xjmp L51
L72:
.dbline 176
; case 20:RELAY20_0;break;
sbi 0x8,1
.dbline 176
xjmp L51
L73:
.dbline 177
; case 21:RELAY21_0;break;
sbi 0x8,0
.dbline 177
xjmp L51
L74:
.dbline 178
; case 22:RELAY22_0;break;
sbi 0x14,1
.dbline 178
xjmp L51
L75:
.dbline 179
; case 23:RELAY23_0;break;
sbi 0x14,0
.dbline 179
xjmp L51
L76:
.dbline 180
; case 24:RELAY24_0;break;
sbi 0xb,7
.dbline 180
xjmp L51
L77:
.dbline 181
; case 25:RELAY25_0;break;
sbi 0xb,6
.dbline 181
xjmp L51
L78:
.dbline 182
; case 26:RELAY26_0;break;
sbi 0xb,5
.dbline 182
xjmp L51
L79:
.dbline 183
; case 27:RELAY27_0;break;
sbi 0xb,4
.dbline 183
xjmp L51
L80:
.dbline 184
; case 28:RELAY28_0;break;
sbi 0xb,3
.dbline 184
xjmp L51
L81:
.dbline 185
; case 29:RELAY29_0;break;
sbi 0xb,2
.dbline 185
xjmp L51
L82:
.dbline 186
; case 30:RELAY30_0;break;
sbi 0xb,1
.dbline 186
xjmp L51
L83:
.dbline 187
; case 31:RELAY31_0;break;
sbi 0xb,0
.dbline 187
xjmp L51
L84:
.dbline 188
; case 32:RELAY32_0;break;
sbi 0x14,4
.dbline 188
.dbline 189
; default:break;
L51:
.dbline 191
; }
; }
L12:
.dbline 192
lsl R14
.dbline 193
ldd R0,y+0
inc R0
std y+0,R0
.dbline 194
L8:
.dbline 112
inc R12
L10:
.dbline 112
mov R24,R12
cpi R24,8
brsh X6
xjmp L7
X6:
.dbline 195
ldd R24,y+11
ldd R25,y+12
adiw R24,1
std y+12,R25
std y+11,R24
.dbline 196
L4:
.dbline 109
inc R22
L6:
.dbline 109
cpi R22,4
brsh X7
xjmp L3
X7:
.dbline -2
L2:
adiw R28,1
xcall pop_gset5
adiw R28,2
.dbline 0 ; func end
ret
.dbsym r b 22 c
.dbsym l n 0 c
.dbsym r l 12 c
.dbsym r temp 14 c
.dbsym l p 11 pc
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -