📄 macoh.s
字号:
; ACSR = 0X01;
ldi R24,1
out 0x30,R24
.dbline 84
; EICRA = 0x0e;
ldi R24,14
sts 105,R24
.dbline 85
; EIMSK = 0x03;
ldi R24,3
out 0x1d,R24
.dbline 86
; TCCR1B = 0x00; //stop
clr R2
sts 129,R2
.dbline 87
; TCNT1H = 0xFD; //setup
ldi R24,253
sts 133,R24
.dbline 88
; TCNT1L = 0x8F;
ldi R24,143
sts 132,R24
.dbline 89
; OCR1AH = 0x02;
ldi R24,2
sts 137,R24
.dbline 90
; OCR1AL = 0x71;
ldi R24,113
sts 136,R24
.dbline 91
; OCR1BH = 0x02;
ldi R24,2
sts 139,R24
.dbline 92
; OCR1BL = 0x71;
ldi R24,113
sts 138,R24
.dbline 93
; ICR1H = 0x02;
ldi R24,2
sts 135,R24
.dbline 94
; ICR1L = 0x71;
ldi R24,113
sts 134,R24
.dbline 95
; TCCR1A = 0x00;
sts 128,R2
.dbline 96
; TCCR1B = 0x03; //start Timer
ldi R24,3
sts 129,R24
.dbline 97
; TIMSK0 = 0x10; //timer 0 interrupt sources
ldi R24,16
sts 110,R24
.dbline 98
; TIMSK1 = 0x01; //timer 1 interrupt sources
ldi R24,1
sts 111,R24
.dbline 99
; TIMSK2 = 0x00; //timer 2 interrupt sources
sts 112,R2
.dbline 100
; PCMSK0 = 0x10; //pin change mask 0
ldi R24,16
sts 107,R24
.dbline 101
; PCMSK1 = 0x00; //pin change mask 1
sts 108,R2
.dbline 102
; PCMSK2 = 0x00; //pin change mask 2
sts 109,R2
.dbline 103
; PCICR = 0x01; //pin change enable
ldi R24,1
sts 104,R24
.dbline 104
; DDRB = 0x00;
out 0x4,R2
.dbline 105
; PORTB = 0xff;
ldi R24,255
out 0x5,R24
.dbline 106
; DDRC = 0xff;
out 0x7,R24
.dbline 107
; PORTC = 0x00;
out 0x8,R2
.dbline 108
; DDRD = 0b00110000;
ldi R24,48
out 0xa,R24
.dbline 109
; PORTD = 0b11001111;
ldi R24,207
out 0xb,R24
.dbline 110
; pontdata = EEPROMread(0x10);
ldi R16,16
ldi R17,0
rcall _EEPROMread_extIO
sts _pontdata,R16
.dbline 111
; resettemp = EEPROMread(0x11);
ldi R16,17
ldi R17,0
rcall _EEPROMread_extIO
sts _resettemp,R16
.dbline 112
; intemp = EEPROMread(0x12);
ldi R16,18
ldi R17,0
rcall _EEPROMread_extIO
sts _intemp,R16
.dbline 113
; trdata = EEPROMread(0x13);
ldi R16,19
ldi R17,0
rcall _EEPROMread_extIO
sts _trdata,R16
.dbline 114
; inmtemp = EEPROMread(0x14);
ldi R16,20
ldi R17,0
rcall _EEPROMread_extIO
sts _inmtemp,R16
.dbline 115
; negdata =EEPROMread(0x16);
ldi R16,22
ldi R17,0
rcall _EEPROMread_extIO
sts _negdata,R16
.dbline 116
; EEPROM_READ(0x20,scldata);
ldi R24,4
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_scldata
ldi R19,>_scldata
ldi R16,32
ldi R17,0
rcall _EEPROMReadBytes_extIO
.dbline 117
; EEPROM_READ(0x30,trdata_x);
ldi R24,3
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_trdata_x
ldi R19,>_trdata_x
ldi R16,48
ldi R17,0
rcall _EEPROMReadBytes_extIO
.dbline 118
; EEPROM_READ(0x40,timeset[0]);
ldi R24,4
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_timeset
ldi R19,>_timeset
ldi R16,64
ldi R17,0
rcall _EEPROMReadBytes_extIO
.dbline 119
; EEPROM_READ(0x50,timeset[1]);
ldi R24,4
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_timeset+4
ldi R19,>_timeset+4
ldi R16,80
ldi R17,0
rcall _EEPROMReadBytes_extIO
.dbline 120
; EEPROM_READ(0x60,timeset[2]);
ldi R24,4
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_timeset+8
ldi R19,>_timeset+8
ldi R16,96
ldi R17,0
rcall _EEPROMReadBytes_extIO
.dbline 121
; EEPROM_READ(0x93,Contdata);
ldi R24,4
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_Contdata
ldi R19,>_Contdata
ldi R16,147
ldi R17,0
rcall _EEPROMReadBytes_extIO
.dbline 122
; EEPROM_READ(0xa0,lockda);
ldi R24,2
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_lockda
ldi R19,>_lockda
ldi R16,160
ldi R17,0
rcall _EEPROMReadBytes_extIO
.dbline 123
; EEPROM_READ(0xb0, kt[0]);
ldi R24,1
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_kt
ldi R19,>_kt
ldi R16,176
ldi R17,0
rcall _EEPROMReadBytes_extIO
.dbline 124
; if(negdata==0) negaon_off=0;
lds R2,_negdata
tst R2
brne L6
.dbline 124
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _negaon_off+1,R21
sts _negaon_off,R20
sts _negaon_off+2+1,R23
sts _negaon_off+2,R22
rjmp L7
L6:
.dbline 125
; else negaon_off=-100000;
ldi R20,96
ldi R21,121
ldi R22,254
ldi R23,255
sts _negaon_off+1,R21
sts _negaon_off,R20
sts _negaon_off+2+1,R23
sts _negaon_off+2,R22
L7:
.dbline 126
; if(intemp==1) { PORTD|= BIT(4);}
lds R24,_intemp
cpi R24,1
brne L8
.dbline 126
.dbline 126
sbi 0xb,4
.dbline 126
L8:
.dbline 127
; if(intemp>=2) { PORTD|= BIT(5);}
lds R24,_intemp
cpi R24,2
brlo L10
.dbline 127
.dbline 127
sbi 0xb,5
.dbline 127
L10:
.dbline 128
; sandchar_display(co,co);
ldi R18,<_co
ldi R19,>_co
ldi R16,<_co
ldi R17,>_co
rcall _sandchar_display
.dbline 129
; display_flash(135,0,1);
ldi R24,1
std y+0,R24
clr R18
ldi R16,135
rcall _display_flash
.dbline 130
; SEI();
sei
.dbline -2
L1:
adiw R28,2
rcall pop_gset2
.dbline 0 ; func end
ret
.dbend
.dbfunc e menu _menu fV
; intm_m -> R10
; reset_m -> R14
; ccc -> R12
; timebit -> R10
; pontmp -> R10
; tdbit -> y+17
; in_m -> R12
; cbit -> y+16
; fbit -> y+15
.even
_menu::
rcall push_gset5
sbiw R28,18
.dbline -1
.dbline 134
; }
; //--------------------------------------------------------------------------------------------------------------------------------------------按键菜单
; void menu(void)
; {
.dbline 137
; unsigned char pontmp,timebit, fbit,cbit,tdbit,ccc;
; unsigned char reset_m,in_m,intm_m;
; pontmp=pontdata;
lds R10,_pontdata
.dbline 138
; fbit=0; cbit=5 ; tdbit=0; timebit=0;
clr R0
std y+15,R0
.dbline 138
ldi R24,5
std y+16,R24
.dbline 138
std y+17,R0
.dbline 138
clr R10
.dbline 139
; key=GetKey();
rcall _GetKey
sts _key,R16
.dbline 140
; keybit=0; keytime=0;
clr R2
sts _keybit,R2
.dbline 140
clr R3
sts _keytime+1,R3
sts _keytime,R2
.dbline 141
; switch (key)
mov R10,R16
clr R11
movw R24,R10
cpi R24,12
ldi R30,0
cpc R25,R30
brne X26
rjmp L307
X26:
ldi R24,12
cp R24,R10
cpc R25,R11
brlt L358
L357:
movw R24,R10
cpi R24,7
ldi R30,0
cpc R25,R30
breq L16
rjmp L12
L358:
movw R24,R10
cpi R24,19
ldi R30,0
cpc R25,R30
brne X27
rjmp L308
X27:
cpi R24,19
ldi R30,0
cpc R25,R30
brge X28
rjmp L12
X28:
L359:
movw R24,R10
cpi R24,23
ldi R30,0
cpc R25,R30
brne X29
rjmp L103
X29:
rjmp L12
X0:
.dbline 142
; {
L16:
.dbline 144
; case set:
; sandcnd_display(psx,timeset[0],0);
clr R2
std y+2,R2
lds R4,_timeset+2
lds R5,_timeset+2+1
lds R2,_timeset
lds R3,_timeset+1
std y+0,R4
std y+1,R5
movw R18,R2
ldi R16,<_psx
ldi R17,>_psx
rcall _sandcnd_display
rjmp L18
L17:
.dbline 146
; while(1)
; {
.dbline 147
; o=psx;
ldi R24,<_psx
ldi R25,>_psx
sts _o+1,R25
sts _o,R24
.dbline 148
; o[1]=10;
ldi R24,10
lds R30,_o
lds R31,_o+1
std z+1,R24
.dbline 149
; o[2]=10;
lds R30,_o
lds R31,_o+1
std z+2,R24
.dbline 150
; key=display_flash(fbit,cbit,2);
ldi R24,2
std y+0,R24
ldd R18,y+16
ldd R16,y+15
rcall _display_flash
sts _key,R16
.dbline 151
; psx[2]=12;
ldi R24,12
sts _psx+2,R24
.dbline 152
; switch (key)
mov R2,R16
clr R3
std y+4,R3
std y+3,R2
movw R24,R2
cpi R24,19
ldi R30,0
cpc R25,R30
brne X30
rjmp L55
X30:
ldi R24,19
cp R24,R2
cpc R25,R3
brlt L102
L101:
ldd R24,y+3
ldd R25,y+4
cpi R24,7
ldi R30,0
cpc R25,R30
breq L24
cpi R24,11
ldi R30,0
cpc R25,R30
brne X31
rjmp L94
X31:
cpi R24,13
ldi R30,0
cpc R25,R30
brne X32
rjmp L89
X32:
cpi R24,14
ldi R30,0
cpc R25,R30
brne X33
rjmp L84
X33:
rjmp L21
L102:
ldd R24,y+3
ldd R25,y+4
cpi R24,23
ldi R30,0
cpc R25,R30
brne X34
rjmp L53
X34:
rjmp L21
X1:
.dbline 153
; {
L24:
.dbline 155
; case set:
; if(fbit==2)
ldd R24,y+15
cpi R24,2
brne L25
.dbline 156
; {
.dbline 157
; timeset[0]=process_add();
rcall _process_add
sts _timeset+1,R17
sts _timeset,R16
sts _timeset+2+1,R19
sts _timeset+2,R18
.dbline 158
; EEPROM_WRITE(0x40,timeset[0]);
ldi R24,4
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_timeset
ldi R19,>_timeset
ldi R16,64
ldi R17,0
rcall _EEPROMWriteBytes_extIO
.dbline 159
; fbit=0;
clr R0
std y+15,R0
.dbline 160
; }
rjmp L22
L25:
.dbline 162
; else
; {
.dbline 163
; cbit=1;
clr R0
inc R0
std y+16,R0
.dbline 164
; sandcnd_display(tr,trdata_x[0],0);
clr R2
std y+2,R2
lds R2,_trdata_x
clr R3
clr R4
clr R5
std y+0,R4
std y+1,R5
movw R18,R2
ldi R16,<_tr
ldi R17,>_tr
rcall _sandcnd_display
rjmp L28
L27:
.dbline 166
; while(1)
; {//-------------------------------------------------------------------------------trdata
.dbline 167
; o=tr;
ldi R24,<_tr
ldi R25,>_tr
sts _o+1,R25
sts _o,R24
.dbline 168
; p[1]+=25;
lds R24,_p
lds R25,_p+1
adiw R24,1
movw R30,R24
ldd R24,z+0
subi R24,231 ; addi 25
std z+0,R24
.dbline 169
; key=display_flash(fbit,cbit,2);
ldi R24,2
std y+0,R24
ldd R18,y+16
ldd R16,y+15
rcall _display_flash
sts _key,R16
.dbline 170
; p[1]-=25;
lds R24,_p
lds R25,_p+1
adiw R24,1
movw R30,R24
ldd R24,z+0
subi R24,25
std z+0,R24
.dbline 171
; if(keybit==0xf7) {keybit=0; keytime=0; return;}
lds R24,_keybit
cpi R24,247
brne L30
.dbline 171
.dbline 171
clr R2
sts _keybit,R2
.dbline 171
clr R3
sts _keytime+1,R3
sts _keytime,R2
.dbline 171
rjmp L12
L30:
.dbline 172
; switch (key)
lds R2,_key
clr R3
std y+6,R3
std y+5,R2
movw R24,R2
cpi R24,19
ldi R30,0
cpc R25,R30
brne X35
rjmp L55
X35:
ldi R24,19
cp R24,R2
cpc R25,R3
brlt L83
L82:
ldd R24,y+5
ldd R25,y+6
cpi R24,7
ldi R30,0
cpc R25,R30
breq L35
cpi R24,11
ldi R30,0
cpc R25,R30
brne X36
rjmp L77
X36:
cpi R24,13
ldi R30,0
cpc R25,R30
brne X37
rjmp L68
X37:
cpi R24,14
ldi R30,0
cpc R25,R30
brne X38
rjmp L59
X38:
rjmp L32
L83:
ldd R24,y+5
ldd R25,y+6
cpi R24,23
ldi R30,0
cpc R25,R30
brne X39
rjmp L53
X39:
rjmp L32
X2:
.dbline 173
; {
L35:
.dbline 175
; case set:
; if(fbit==2)
ldd R24,y+15
cpi R24,2
brne L36
.dbline 176
; {
.dbline 177
; trdata=0;
clr R2
sts _trdata,R2
.dbline 178
; trdata+= ((p[1]-25)*10);
lds R30,_p
lds R31,_p+1
ldd R2,z+1
ldi R24,10
mul R24,R2
mov R24,R0
subi R24,250
lds R2,_trdata
add R2,R24
sts _trdata,R2
.dbline 179
; trdata+= p[0];
lds R30,_p
lds R31,_p+1
ldd R2,z+0
lds R3,_trdata
add R3,R2
sts _trdata,R3
.dbline 180
; trdata_x[0]=trdata;
mov R2,R3
sts _trdata_x,R2
.dbline 181
; EEPROM_WRITE(0x30,trdata_x);
ldi R24,3
ldi R25,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -