📄 main.s
字号:
lda ,X
bne X14
lda 1,X
cmp #8
bne X34
jmp L228
X34:
X14:
lda ,X
bne X15
lda 1,X
cmp #9
bne X35
jmp L232
X35:
X15:
lda 1,X
sta *__r1
lda ,X
sta *__r0
ldhx *__r0
cphx #0
tsx
bge X36
jmp L208
X36:
L250:
lda ,X
bne X16
lda 1,X
cmp #64
bne X37
jmp L237
X37:
X16:
lda ,X
bne X17
lda 1,X
cmp #65
bne X38
jmp L240
X38:
X17:
lda ,X
bne X18
lda 1,X
cmp #67
bne X39
jmp L244
X39:
X18:
lda ,X
bne X19
lda 1,X
cmp #68
bne X40
jmp L248
X40:
X19:
jmp L208
X20:
L212:
; case 0x00:
; datetem[0]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_datetem
; lcdshow1(KB_valve,data);
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; break;
jmp L208
L213:
; case 0x01:
; datetem[1]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_datetem+1
; lcdshow1(KB_valve,data);
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; break;
jmp L208
L215:
; case 0x02:
; datetem[2]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_datetem+2
; lcdshow1(KB_valve,data);
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; break;
jmp L208
L217:
; case 0x03:
; datetem[3]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_datetem+3
; lcdshow1(KB_valve,data);
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; break;
jmp L208
L219:
; case 0x05:
; if((KB_valve-0x30)<=1){
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
sta *__r0
ldhx *__r0
cphx #1
tsx
ble X41
jmp L208
X41:
; datetem[4]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_datetem+4
; lcdshow1(KB_valve,data);}
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; break;
jmp L208
L223:
; case 0x06:
; if(datetem[4]==1&&(KB_valve-0x30)>2)break;
lda *_datetem+4
cmp #1
bne L224
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
sta *__r0
ldhx *__r0
cphx #2
tsx
ble L224
jmp L208
L224:
; datetem[5]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_datetem+5
; lcdshow1(KB_valve,data);
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; break;
jmp L208
L228:
; case 0x08:
; if(KB_valve-0x30<=3){
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
sta *__r0
ldhx *__r0
cphx #3
tsx
ble X42
jmp L208
X42:
; datetem[6]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_datetem+6
; lcdshow1(KB_valve,data);}
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; break;
jmp L208
L232:
; case 0x09:
; if(datetem[6]==3&&(KB_valve-0x30)>1)break;
lda *_datetem+6
cmp #3
bne L233
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
sta *__r0
ldhx *__r0
cphx #1
tsx
ble L233
jmp L208
L233:
; datetem[7]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_datetem+7
; lcdshow1(KB_valve,data);
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; break;
jmp L208
L237:
; case 0x40:
; if((KB_valve-0x30)>2)break;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
sta *__r0
ldhx *__r0
cphx #2
tsx
ble L238
jmp L208
L238:
; timetem[0]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_timetem
; lcdshow1(KB_valve,data);
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; break;
jmp L208
L240:
; case 0x41:
; if(timetem[0]==2&&(KB_valve-0x30)>3)break;
lda *_timetem
cmp #2
bne L241
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
sta *__r0
ldhx *__r0
cphx #3
tsx
ble L241
jmp L208
L241:
; timetem[1]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_timetem+1
; lcdshow1(KB_valve,data);
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; break;
jmp L208
L244:
; case 0x43:
; if((KB_valve-0x30)>5)break;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
sta *__r0
ldhx *__r0
cphx #5
tsx
ble L245
jmp L208
L245:
; timetem[2]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_timetem+2
; lcdshow1(KB_valve,data);
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; break;
jmp L208
L248:
; case 0x44:
; timetem[3]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_timetem+3
; lcdshow1(KB_valve,data);
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; default:break;
; }
; }
jmp L208
L207:
; else { //不是时间设置则是闹钟设置
; LcdCtrl&=~(1<<LcdRS); //RS、R/W=01,读指令
bclr #0,0x2
; LcdCtrl|=(1<<LcdRW);
bset #1,0x2
; LcdCtrl|=(1<<LcdE); //E=1
bset #2,0x2
; data=LcdData; //获取AC的值
lda 0x1
sta 2,X
; data&=0b01111111;//获取AC的值
and #127
sta 2,X
clr ,X
sta 1,X
lda ,X
bne X21
lda 1,X
cmp #64
beq L254
X21:
lda ,X
bne X22
lda 1,X
cmp #65
beq L257
X22:
lda ,X
bne X23
lda 1,X
cmp #67
bne X43
jmp L261
X43:
X23:
lda ,X
bne X24
lda 1,X
cmp #68
bne X44
jmp L265
X44:
X24:
jmp L252
X25:
; switch(data){ //按AC值不同分别赋给不同的闹钟计时临时单元
L254:
; case 0x40:
; if((KB_valve-0x30)>2)break;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
sta *__r0
ldhx *__r0
cphx #2
tsx
ble L255
jmp L252
L255:
; timertem[0]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_timertem
; lcdshow1(KB_valve,data);
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; break;
jmp L252
L257:
; case 0x41:
; if(timertem[0]==2&&(KB_valve-0x30)>3)break;
lda *_timertem
cmp #2
bne L258
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
sta *__r0
ldhx *__r0
cphx #3
tsx
ble L258
bra L252
L258:
; timertem[1]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_timertem+1
; lcdshow1(KB_valve,data);
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; break;
bra L252
L261:
; case 0x43:
; if((KB_valve-0x30)>5)break;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
sta *__r0
ldhx *__r0
cphx #5
tsx
ble L262
bra L252
L262:
; timertem[2]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_timertem+2
; lcdshow1(KB_valve,data);
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; break;
bra L252
L265:
; case 0x44:
; timertem[3]=KB_valve-0x30;
lda 6,X
sub #48
sta *__r1
lda 5,X
sbc #0
mov *__r1,*_timertem+3
; lcdshow1(KB_valve,data);
lda 2,X
psha
lda 6,X
psha
jsr _lcdshow1
ais #2
tsx
; default:break;
L252:
; }
; }
L208:
; }
L205:
L204:
ais #3
.dbline 0 ; func end
rts
_cancel::
; }
;
; void cancel(void){ //取消设置
; if(showtime==0){
lda *_showtime
bne L268
; showtime=1;issettime=0; //模式为显示时间,退出时间设置
lda #1
sta *_showtime
clr *_issettime
; LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
bclr #0,0x2
; LcdCtrl&=~(1<<LcdRW);
bclr #1,0x2
; Lcd_Command(0b00001100); //开显示,关光标显示,不闪烁
lda #12
psha
jsr _Lcd_Command
ais #1
tsx
; }
L268:
L267:
.dbline 0 ; func end
rts
_reset::
; }
;
; void reset(void){ //时钟复位,全部从零开始
; asm("SEI");
SEI
; showtime=0x01;istimer=0x00;issettime=0;//模式初始化
lda #1
sta *_showtime
clr *_istimer
clr *_issettime
; DDRD=0x01;out=1; //闹钟接口初始化
lda #1
sta 0x7
lda #1
sta *_out
; timer[0]=0;timer[1]=0; //闹钟\时间初始化
clr *_timer
clr *_timer+1
; time[0]=0;time[1]=0;time[2]=0;
clr *_time
clr *_time+1
clr *_time+2
; date[0]=0;date[1]=0;date[2]=0;
clr *_date+1
clr *_date
clr *_date+2+1
clr *_date+2
clr *_date+4+1
clr *_date+4
; LcdInit(); //LCD显示初始化
jsr _LcdInit
; lcdshow((unsigned char *)ch);
lda #<_ch
psha
lda #>_ch
psha
jsr _lcdshow
ais #2
; KB_Init(); //键盘初始化
jsr _KB_Init
; INTKBSCR&= ~(1<<IntBit); //开放键盘中断(IMASKk=1)
bclr #1,0x1a
; Timer1init(); //定时器初始化
jsr _Timer1init
tsx
; asm("CLI"); //复位
CLI
L270:
.dbline 0 ; func end
rts
; KB_valve -> 4,X
_set::
ais #-2
tsx
; }
;
; void set(unsigned char KB_valve){ //按键功能选择
; switch(KB_valve){
clr ,X
lda 4,X
sta 1,X
lda ,X
bne X45
lda 1,X
cmp #42
bne X54
jmp L285
X54:
X45:
lda 1,X
sta *__r1
lda ,X
sta *__r0
ldhx *__r0
cphx #42
tsx
bgt L293
L292:
lda ,X
bne X46
lda 1,X
cmp #35
beq L284
X46:
jmp L277
L293:
lda ,X
bne X47
lda 1,X
cmp #48
beq L286
X47:
lda ,X
bne X48
lda 1,X
cmp #49
beq L289
X48:
lda 1,X
sta *__r1
lda ,X
sta *__r0
ldhx *__r0
cphx #48
tsx
blt L277
L294:
lda ,X
bne X49
lda 1,X
cmp #65
beq L280
X49:
lda ,X
bne X50
lda 1,X
cmp #66
beq L281
X50:
lda ,X
bne X51
lda 1,X
cmp #67
beq L282
X51:
lda ,X
bne X52
lda 1,X
cmp #68
beq L283
X52:
bra L277
X53:
L280:
; case 'A':shilfL(); //A:设置模式下的光标左移
jsr _shilfL
tsx
; break;
bra L278
L281:
; case 'B':shilfR();//B:设置模式下的光标右移
jsr _shilfR
tsx
; break;
bra L278
L282:
; case 'C':sastimer(); //C:闹钟开关
jsr _sastimer
tsx
; break;
bra L278
L283:
; case 'D':settimer();//D:进入闹钟设置
jsr _settimer
tsx
; break;
bra L278
L284:
; case '#':ok(); //#:确定并退出设置
jsr _ok
tsx
; break;
bra L278
L285:
; case '*':cancel();//*:取消并退出设置
jsr _cancel
tsx
; break;
bra L278
L286:
; case '0':if(showtime==1){settime();break;}//0:非设置模式下的进入时间设置
lda *_showtime
cmp #1
bne L287
jsr _settime
tsx
bra L278
L287:
L289:
; case '1':if(showtime==1){reset();break;}//1:非设置模式下的复位
lda *_showtime
cmp #1
bne L290
jsr _reset
tsx
bra L278
L290:
L277:
; default:input(KB_valve);//设置模式下的数字输入
clr *__r0
lda 4,X
psha
lda *__r0
psha
jsr _input
ais #2
tsx
; break;
L278:
L276:
ais #2
.dbline 0 ; func end
rts
.area bss
_issettime::
.blkb 1
_istimer::
.blkb 1
_showtime::
.blkb 1
_datetem::
.blkb 8
_timetem::
.blkb 4
_timertem::
.blkb 4
_out::
.blkb 1
_date::
.blkb 6
_time::
.blkb 3
_timer::
.blkb 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -