📄 drive.s
字号:
.module drive.c
.area text(rom, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
_addr_led7::
.blkb 2
.area idata
.word 8448
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.blkb 2
.area idata
.word 10496
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.blkb 2
.area idata
.word 9472
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.blkb 2
.area idata
.word 11520
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.blkb 2
.area idata
.word 8960
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.blkb 2
.area idata
.word 11008
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.dbsym e addr_led7 _addr_led7 A[12:6]i
_led7_data::
.blkb 2
.area idata
.byte 192,249
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.blkb 2
.area idata
.byte 164,176
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.blkb 2
.area idata
.byte 153,146
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.blkb 2
.area idata
.byte 130,248
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.blkb 2
.area idata
.byte 128,144
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.blkb 2
.area idata
.byte 134,136
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.blkb 2
.area idata
.byte 255,200
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.blkb 2
.area idata
.byte 142,134
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.blkb 2
.area idata
.byte 175,163
.area data(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.dbsym e led7_data _led7_data A[18:18]c
.area text(rom, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
.dbfunc e get_id _get_id fc
; temp -> R16
.even
_get_id::
.dbline -1
.dbline 9
; #include "main.h"
;
; unsigned char out_state;
; unsigned int addr_led7[6] = {0x2100,0x2900,0x2500,0x2d00,0x2300,0x2b00};
; unsigned char led7_data[18]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x86,0x88,0xff,0xc8,0x8e,0x86,0xaf,0xa3};
;
;
; unsigned char get_id(void) //读取拨码开关
; {
.dbline 11
; unsigned char temp;
; PORTC = addr_id;
ldi R24,240
out 0x8,R24
.dbline 12
; WDR();
wdr
.dbline 13
; asm("nop");
nop
.dbline 14
; asm("nop");
nop
.dbline 15
; asm("nop");
nop
.dbline 16
; asm("nop");
nop
.dbline 17
; asm("nop");
nop
.dbline 18
; asm("nop");
nop
.dbline 19
; temp = PINB;
in R16,0x3
.dbline 20
; temp = ~(temp);
com R16
.dbline 21
; temp = temp&0x7f;
andi R16,127
.dbline 22
; return temp;
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbsym r temp 16 c
.dbend
.dbfunc e buzzer_on _buzzer_on fV
.even
_buzzer_on::
.dbline -1
.dbline 27
; }
;
;
; void buzzer_on(void) //蜂鸣器启动函数
; {
.dbline 28
; WDR();
wdr
.dbline 29
; out_state|=0x01;
lds R24,_out_state
ori R24,1
sts _out_state,R24
.dbline 30
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 32
;
; PORTE = (out_state<<2);
lds R2,_out_state
lsl R2
lsl R2
out 0xe,R2
.dbline 33
; PORTD |= 0x80;
sbi 0xb,7
.dbline 34
; asm("nop");
nop
.dbline 35
; asm("nop");
nop
.dbline 36
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline -2
L3:
.dbline 0 ; func end
ret
.dbend
.dbfunc e buzzer_off _buzzer_off fV
.even
_buzzer_off::
.dbline -1
.dbline 41
; }
;
;
; void buzzer_off(void) //蜂鸣器关闭函数
; {
.dbline 42
; WDR();
wdr
.dbline 43
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 44
; out_state&=0xfe;
lds R24,_out_state
andi R24,254
sts _out_state,R24
.dbline 45
; PORTE = (out_state<<2);
mov R2,R24
lsl R2
lsl R2
out 0xe,R2
.dbline 46
; PORTD |= 0x80;
sbi 0xb,7
.dbline 47
; asm("nop");
nop
.dbline 48
; asm("nop");
nop
.dbline 49
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline -2
L4:
.dbline 0 ; func end
ret
.dbend
.dbfunc e relay1_on _relay1_on fV
.even
_relay1_on::
.dbline -1
.dbline 56
; }
;
;
;
;
; void relay1_on(void) //继电器1打开函数
; {
.dbline 57
; WDR();
wdr
.dbline 58
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 59
; out_state|=0x02;
lds R24,_out_state
ori R24,2
sts _out_state,R24
.dbline 60
; PORTE = (out_state<<2);
mov R2,R24
lsl R2
lsl R2
out 0xe,R2
.dbline 61
; PORTD |= 0x80;
sbi 0xb,7
.dbline 62
; asm("nop");
nop
.dbline 63
; asm("nop");
nop
.dbline 64
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline -2
L5:
.dbline 0 ; func end
ret
.dbend
.dbfunc e relay1_off _relay1_off fV
.even
_relay1_off::
.dbline -1
.dbline 69
; }
;
;
; void relay1_off(void) //继电器1关闭函数
; {
.dbline 70
; WDR();
wdr
.dbline 71
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 72
; out_state&=0xfd;
lds R24,_out_state
andi R24,253
sts _out_state,R24
.dbline 73
; PORTE = (out_state<<2);
mov R2,R24
lsl R2
lsl R2
out 0xe,R2
.dbline 74
; PORTD |= 0x80;
sbi 0xb,7
.dbline 75
; asm("nop");
nop
.dbline 76
; asm("nop");
nop
.dbline 77
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline -2
L6:
.dbline 0 ; func end
ret
.dbend
.dbfunc e relay2_on _relay2_on fV
.even
_relay2_on::
.dbline -1
.dbline 82
; }
;
;
; void relay2_on(void) //继电器2打开函数
; {
.dbline 83
; WDR();
wdr
.dbline 84
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 85
; out_state|=0x04;
lds R24,_out_state
ori R24,4
sts _out_state,R24
.dbline 86
; PORTE = (out_state<<2);
mov R2,R24
lsl R2
lsl R2
out 0xe,R2
.dbline 87
; PORTD |= 0x80;
sbi 0xb,7
.dbline 88
; asm("nop");
nop
.dbline 89
; asm("nop");
nop
.dbline 90
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline -2
L7:
.dbline 0 ; func end
ret
.dbend
.dbfunc e relay2_off _relay2_off fV
.even
_relay2_off::
.dbline -1
.dbline 94
; }
;
; void relay2_off(void) //继电器2关闭函数
; {
.dbline 95
; WDR();
wdr
.dbline 96
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 97
; out_state&=~(0x04);
lds R24,_out_state
andi R24,251
sts _out_state,R24
.dbline 98
; PORTE = (out_state<<2);
mov R2,R24
lsl R2
lsl R2
out 0xe,R2
.dbline 99
; PORTD |= 0x80;
sbi 0xb,7
.dbline 100
; asm("nop");
nop
.dbline 101
; asm("nop");
nop
.dbline 102
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline -2
L8:
.dbline 0 ; func end
ret
.dbend
.dbfunc e relay3_on _relay3_on fV
.even
_relay3_on::
.dbline -1
.dbline 106
; }
;
; void relay3_on(void) //继电器3打开函数
; {
.dbline 107
; WDR();
wdr
.dbline 108
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 109
; out_state|=0x08;
lds R24,_out_state
ori R24,8
sts _out_state,R24
.dbline 110
; PORTE = (out_state<<2);
mov R2,R24
lsl R2
lsl R2
out 0xe,R2
.dbline 111
; PORTD |= 0x80;
sbi 0xb,7
.dbline 112
; asm("nop");
nop
.dbline 113
; asm("nop");
nop
.dbline 114
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline -2
L9:
.dbline 0 ; func end
ret
.dbend
.dbfunc e relay3_off _relay3_off fV
.even
_relay3_off::
.dbline -1
.dbline 118
; }
;
; void relay3_off(void) //继电器3关闭函数
; {
.dbline 119
; WDR();
wdr
.dbline 120
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 121
; out_state&=~(0x08);
lds R24,_out_state
andi R24,247
sts _out_state,R24
.dbline 122
; PORTE = (out_state<<2);
mov R2,R24
lsl R2
lsl R2
out 0xe,R2
.dbline 123
; PORTD |= 0x80;
sbi 0xb,7
.dbline 124
; asm("nop");
nop
.dbline 125
; asm("nop");
nop
.dbline 126
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline -2
L10:
.dbline 0 ; func end
ret
.dbend
.dbfunc e relay4_on _relay4_on fV
.even
_relay4_on::
.dbline -1
.dbline 130
; }
;
; void relay4_on(void) //继电器4打开函数
; {
.dbline 131
; WDR();
wdr
.dbline 132
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 133
; out_state|=0x10;
lds R24,_out_state
ori R24,16
sts _out_state,R24
.dbline 134
; PORTE = (out_state<<2);
mov R2,R24
lsl R2
lsl R2
out 0xe,R2
.dbline 135
; PORTD |= 0x80;
sbi 0xb,7
.dbline 136
; asm("nop");
nop
.dbline 137
; asm("nop");
nop
.dbline 138
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline -2
L11:
.dbline 0 ; func end
ret
.dbend
.dbfunc e relay4_off _relay4_off fV
.even
_relay4_off::
.dbline -1
.dbline 142
; }
;
; void relay4_off(void) //继电器4关闭函数
; {
.dbline 143
; WDR();
wdr
.dbline 144
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 145
; out_state&=~(0x10);
lds R24,_out_state
andi R24,239
sts _out_state,R24
.dbline 146
; PORTE = (out_state<<2);
mov R2,R24
lsl R2
lsl R2
out 0xe,R2
.dbline 147
; PORTD |= 0x80;
sbi 0xb,7
.dbline 148
; asm("nop");
nop
.dbline 149
; asm("nop");
nop
.dbline 150
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline -2
L12:
.dbline 0 ; func end
ret
.dbend
.dbfunc e relay5_on _relay5_on fV
.even
_relay5_on::
.dbline -1
.dbline 154
; }
;
; void relay5_on(void) //继电器5打开函数
; {
.dbline 155
; WDR();
wdr
.dbline 156
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 157
; out_state|=0x20;
lds R24,_out_state
ori R24,32
sts _out_state,R24
.dbline 158
; PORTE = (out_state<<2);
mov R2,R24
lsl R2
lsl R2
out 0xe,R2
.dbline 159
; PORTD |= 0x80;
sbi 0xb,7
.dbline 160
; asm("nop");
nop
.dbline 161
; asm("nop");
nop
.dbline 162
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline -2
L13:
.dbline 0 ; func end
ret
.dbend
.dbfunc e relay5_off _relay5_off fV
.even
_relay5_off::
.dbline -1
.dbline 166
; }
;
; void relay5_off(void) //继电器5关闭函数
; {
.dbline 167
; WDR();
wdr
.dbline 168
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 169
; out_state&=~(0x20);
lds R24,_out_state
andi R24,223
sts _out_state,R24
.dbline 170
; PORTE = (out_state<<2);
mov R2,R24
lsl R2
lsl R2
out 0xe,R2
.dbline 171
; PORTD |= 0x80;
sbi 0xb,7
.dbline 172
; asm("nop");
nop
.dbline 173
; asm("nop");
nop
.dbline 174
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline -2
L14:
.dbline 0 ; func end
ret
.dbend
.dbfunc e relay_out_reset _relay_out_reset fV
.even
_relay_out_reset::
.dbline -1
.dbline 178
; }
;
; void relay_out_reset(void) //继电器输出复位
; {
.dbline 179
; WDR();
wdr
.dbline 180
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 181
; PORTE = 0x00;
clr R2
out 0xe,R2
.dbline 182
; PORTG = 0x00;
out 0x14,R2
.dbline 183
; PORTD |= 0x80;
sbi 0xb,7
.dbline 184
; asm("nop");
nop
.dbline 185
; asm("nop");
nop
.dbline 186
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline -2
L15:
.dbline 0 ; func end
ret
.dbend
.dbfunc e led_off _led_off fV
; tempdata -> R20
; temp -> R22
; i -> R20
.even
_led_off::
xcall push_gset3
mov R20,R16
.dbline -1
.dbline 191
; }
;
;
; void led_off(unsigned char i) //LED灯灭
; {
.dbline 193
; unsigned char temp,tempdata;
; WDR();
wdr
.dbline 194
; temp = i>>3;
mov R22,R20
lsr R22
lsr R22
lsr R22
.dbline 195
; PORTD&=0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline 196
; asm("nop");
nop
.dbline 197
; asm("nop");
nop
.dbline 198
; switch(temp)
mov R10,R22
clr R11
tst R10
brne X0
tst R11
breq L20
X0:
movw R24,R10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -