📄 hptv.s
字号:
; PORTA|=(1<<7);
sbi 0x1b,7
.dbline 359
; System_State=booting;
sts _System_State,R24
.dbline -2
L27:
.dbline 0 ; func end
ret
.dbend
.dbfunc e close_machine _close_machine fV
.even
_close_machine::
.dbline -1
.dbline 370
; }
;
;
;
; /*********************************************
; //关机函数
; //此函数用于设置关机时序
;
; *********************************************/
; void close_machine(void)
; {
.dbline 371
; WDR();
wdr
.dbline 373
; //PORTC|=0x38; //pwrbt=1
; reset_close_count=0;
clr R2
sts _reset_close_count,R2
.dbline 374
; rly_on_count=0;
sts _rly_on_count,R2
.dbline 375
; vs_on_close_count=0;
sts _vs_on_close_count,R2
.dbline 376
; close_to_open_count=0;
sts _close_to_open_count,R2
.dbline 377
; machine_close_start=1;
ldi R24,1
sts _machine_close_start,R24
.dbline 378
; close_to_open_station=0;
sts _close_to_open_station,R2
.dbline 379
; close_machine_enable=0;
sts _close_machine_enable,R2
.dbline 380
; open_machine_enable=0;
sts _open_machine_enable,R2
.dbline 381
; tv_state=0;
sts _tv_state,R2
.dbline 382
; PORTA|=(1<<7);
sbi 0x1b,7
.dbline 383
; System_State=halting;
ldi R24,4
sts _System_State,R24
.dbline 384
; WDR();
wdr
.dbline -2
L28:
.dbline 0 ; func end
ret
.dbend
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 394
; }
;
;
;
; /*********************************************
; // port initialize
;
; *********************************************/
; void port_init(void)
; {
.dbline 395
; PORTA = 0xcc; //将PA4 PA5,SPDIF_SW 输出为0 PA6 HOTPLUG保持为高
ldi R24,204
out 0x1b,R24
.dbline 396
; DDRA = 0xf3; // PA4,PA5 置为输出态
ldi R24,243
out 0x1a,R24
.dbline 398
; // PORTB = 0x7f;
; PORTB = 0xff; //内部上拉使能
ldi R24,255
out 0x18,R24
.dbline 399
; DDRB = 0x80;
ldi R24,128
out 0x17,R24
.dbline 401
; // PORTC = 0x4c; //m103 output only
; PORTC = 0x0c;
ldi R24,12
out 0x15,R24
.dbline 402
; PORTC|=(1<<RS232_SW1); //1
sbi 0x15,6
.dbline 403
; PORTC&=~(1<<RS232_SW2); //0 --串口初始化
cbi 0x15,7
.dbline 405
; // PORTC = 0x0c; //m103 output only
; DDRC = 0xf4; //pwrbt 去掉更改为备用的实时的中断输入引脚;
ldi R24,244
out 0x14,R24
.dbline 406
; PORTD = 0x60;
ldi R24,96
out 0x12,R24
.dbline 407
; DDRD = 0xF3;
ldi R24,243
out 0x11,R24
.dbline -2
L29:
.dbline 0 ; func end
ret
.dbend
.dbfunc e init_time _init_time fV
.even
_init_time::
xcall push_gset2
.dbline -1
.dbline 411
; }
; /********************************************/
; void init_time()
; {
.dbline 412
; Time.VS.TL=0;
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _Time+1,R21
sts _Time,R20
sts _Time+2+1,R23
sts _Time+2,R22
.dbline 413
; Time.VS.TH=0;
clr R2
clr R3
sts _Time+4+1,R3
sts _Time+4,R2
.dbline -2
L30:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbend
.dbfunc e WriteTime _WriteTime fV
; i -> R20
; Num -> R18
; RTime -> R16,R17
.even
_WriteTime::
xcall push_gset1
.dbline -1
.dbline 417
; }
;
; void WriteTime(char * RTime,char Num)
; {
.dbline 419
; unsigned char i;
; for(i=0;i<Num;i++)
clr R20
xjmp L36
L33:
.dbline 420
.dbline 421
ldi R24,<_I2cReceiveData+1
ldi R25,>_I2cReceiveData+1
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
mov R30,R20
clr R31
add R30,R16
adc R31,R17
std z+0,R2
.dbline 422
L34:
.dbline 419
inc R20
L36:
.dbline 419
cp R20,R18
brlo L33
.dbline -2
L32:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r Num 18 c
.dbsym r RTime 16 pc
.dbend
.dbfunc e ReadTime _ReadTime fV
; i -> R20
; Num -> R18
; Rtime -> R16,R17
.even
_ReadTime::
xcall push_gset1
.dbline -1
.dbline 452
; {
; *(RTime+i)=I2cReceiveData[i+1];
; }
;
; }
; /*
; void WriteTime() //写设定时间
; {
; unsigned char i;
; for(i=1;i<6;i++)
; {
; Time.CBit[i]=I2cReceiveData[i];
; }
; }
; void WriteOpenTime() //写开机时间
; {
; unsigned char i;
; for(i=1;i<4;i++)
; {
; OpenTime.OBit[i]=I2cReceiveData[i];
; }
; }
; void WriteCloseTime() //写关机时间
; {
; unsigned char i;
; for(i=1;i<4;i++)
; {
; CloseTime.CBit[i]=I2cReceiveData[i];
; }
; }*/
;
; void ReadTime(char *Rtime,char Num)
; {
.dbline 454
; unsigned char i;
; for(i=0;i<Num;i++)
clr R20
xjmp L42
L39:
.dbline 455
.dbline 456
mov R30,R20
clr R31
add R30,R16
adc R31,R17
ldd R2,z+0
ldi R24,<_I2cSendData+1
ldi R25,>_I2cSendData+1
mov R30,R20
clr R31
add R30,R24
adc R31,R25
std z+0,R2
.dbline 457
L40:
.dbline 454
inc R20
L42:
.dbline 454
cp R20,R18
brlo L39
.dbline -2
L38:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r Num 18 c
.dbsym r Rtime 16 pc
.dbend
.dbfunc e AddTime _AddTime fV
; i -> y+0
; ATime -> R16
.even
_AddTime::
xcall push_gset2
sbiw R28,4
.dbline -1
.dbline 460
; {
; I2cSendData[i+1]=*(Rtime+i);
; }
; }
; void AddTime(char ATime)
; {
.dbline 462
; unsigned long i;
; i=0xFFFFFFFF-Time.VS.TL;
lds R4,_Time+2
lds R5,_Time+2+1
lds R2,_Time
lds R3,_Time+1
ldi R20,255
ldi R21,255
ldi R22,255
ldi R23,255
sub R20,R2
sbc R21,R3
sbc R22,R4
sbc R23,R5
movw R30,R28
std z+0,R20
std z+1,R21
std z+2,R22
std z+3,R23
.dbline 463
; if(i<=ATime)
mov R2,R16
clr R3
clr R4
clr R5
movw R30,R28
ldd R6,z+0
ldd R7,z+1
ldd R8,z+2
ldd R9,z+3
cp R2,R6
cpc R3,R7
cpc R4,R8
cpc R5,R9
brlo L45
.dbline 464
; {
.dbline 465
; Time.VS.TH++;
lds R24,_Time+4
lds R25,_Time+4+1
adiw R24,1
sts _Time+4+1,R25
sts _Time+4,R24
.dbline 466
; Time.VS.TL=ATime-i;
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
mov R6,R16
clr R7
clr R8
clr R9
sub R6,R2
sbc R7,R3
sbc R8,R4
sbc R9,R5
sts _Time+1,R7
sts _Time,R6
sts _Time+2+1,R9
sts _Time+2,R8
.dbline 467
; }
xjmp L46
L45:
.dbline 469
.dbline 470
mov R2,R16
clr R3
clr R4
clr R5
lds R8,_Time+2
lds R9,_Time+2+1
lds R6,_Time
lds R7,_Time+1
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
sts _Time+1,R7
sts _Time,R6
sts _Time+2+1,R9
sts _Time+2,R8
.dbline 471
L46:
.dbline -2
L44:
adiw R28,4
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l i 0 l
.dbsym r ATime 16 c
.dbend
.dbfunc e DecTime _DecTime fV
; i -> y+0
; Atime -> R16
.even
_DecTime::
xcall push_gset2
sbiw R28,4
.dbline -1
.dbline 475
; else
; {
; Time.VS.TL+=ATime;
; }
;
; }
; void DecTime(char Atime)
; {
.dbline 477
; unsigned long i;
; if(Time.VS.TL>8)
ldi R20,8
ldi R21,0
ldi R22,0
ldi R23,0
lds R4,_Time+2
lds R5,_Time+2+1
lds R2,_Time
lds R3,_Time+1
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brsh L49
.dbline 478
; {
.dbline 479
; Time.VS.TL=Time.VS.TL-Atime;
mov R2,R16
clr R3
clr R4
clr R5
lds R8,_Time+2
lds R9,_Time+2+1
lds R6,_Time
lds R7,_Time+1
sub R6,R2
sbc R7,R3
sbc R8,R4
sbc R9,R5
sts _Time+1,R7
sts _Time,R6
sts _Time+2+1,R9
sts _Time+2,R8
.dbline 480
; }
xjmp L50
L49:
.dbline 482
.dbline 483
lds R24,_Time+4
lds R25,_Time+4+1
sbiw R24,1
sts _Time+4+1,R25
sts _Time+4,R24
.dbline 484
mov R2,R16
clr R3
clr R4
clr R5
ldi R20,255
ldi R21,255
ldi R22,255
ldi R23,255
sub R20,R2
sbc R21,R3
sbc R22,R4
sbc R23,R5
lds R4,_Time+2
lds R5,_Time+2+1
lds R2,_Time
lds R3,_Time+1
add R20,R2
adc R21,R3
adc R22,R4
adc R23,R5
sts _Time+1,R21
sts _Time,R20
sts _Time+2+1,R23
sts _Time+2,R22
.dbline 485
L50:
.dbline -2
L48:
adiw R28,4
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l i 0 l
.dbsym r Atime 16 c
.dbend
.dbfunc e port_open_machine_set _port_open_machine_set fV
.even
_port_open_machine_set::
.dbline -1
.dbline 494
; else
; {
; Time.VS.TH--;
; Time.VS.TL=0xffffffff-Atime+Time.VS.TL;
; }
; }
; /*********************************************
; // port initialize when you open and close the machine
; //port_open_machine_set 主要实现MCU收到开机指令后的端口设置
; //port_close_machine_set 主要实现MCU收到关机指令后的端口设置,与上电后一致
; //可以将十六进制改成二进制,表示和更改更直观
; *********************************************/
; void port_open_machine_set(void)
; {
.dbline 495
; WDR();
wdr
.dbline 496
; PORTA&= 0xfd; //pin37 pa0=0 pin37 PA0=1在定时器中delay 2s 实现
in R24,0x1b
andi R24,253
out 0x1b,R24
.dbline 501
; // PORTA|= 0x02; //pin36 pa1=1
; // PORTB|= 0x80; //pin3 pb7=1
; // PORTC|= 0x80; //pin26 pc7=1
; // PORTC&= 0xbf; //pin25 pc6=0
; PORTD&= 0x7f; //pin16 pd7=0
in R24,0x12
andi R24,127
out 0x12,R24
.dbline 503
; // PORTC = 0x0c;
; PORTC&=~(1<<RS232_SW1); //0
cbi 0x15,6
.dbline 504
; PORTC|=(1<<RS232_SW2); //1
sbi 0x15,7
.dbline 507
; // PORTD|= 0x20; //pin14 pd5=1
; // PORTD&= 0xef; //pin13 pd4=0
; WDR();
wdr
.dbline -2
L52:
.dbline 0 ; func end
ret
.dbend
.dbfunc e port_close_machine_set _port_close_machine_set fV
.even
_port_close_machine_set::
.dbline -1
.dbline 511
; }
;
; void port_close_machine_set(void)
; {
.dbline 512
; WDR();
wdr
.dbline 513
; PORTA = 0x4c; //将PA4 SPDIF_SW 暂时定义在高阻态 PA6 HOTPLUG保持为高 pa0=0 A_MUTE为低
ldi R24,76
out 0x1b,R24
.dbline 514
; DDRA = 0xE3; //未使能 PA4 SPDIF_SW
ldi R24,227
out 0x1a,R24
.dbline 515
; PORTB = 0xff; //内部上拉使能
ldi R24,255
out 0x18,R24
.dbline 516
; DDRB = 0x80;
ldi R24,128
out 0x17,R24
.dbline 518
; // PORTC = 0x4c; //m103 output only
; PORTC = 0x0c;
ldi R24,12
out 0x15,R24
.dbline 519
; PORTC|=(1<<RS232_SW1); //1
sbi 0x15,6
.dbline 520
; PORTC&=~(1<<RS232_SW2); //0 --串口初始化
cbi 0x15,7
.dbline 524
;
; // PORTC = 0x0c; //m103 output only 串口切换为00---mcu通道
;
; DDRC = 0xf4; //pwrbt 去掉更改为备用的实时的中断输入引脚;
ldi R24,244
out 0x14,R24
.dbline 525
; PORTD = 0x60;
ldi R24,96
out 0x12,R24
.dbline 526
; DDRD = 0xF3;
ldi R24,243
out 0x11,R24
.dbline 528
;
; WDR();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -