📄 main.s
字号:
clrh
div
tsx
sta 2,X
L79:
inc 3,X
L81:
lda 3,X
cmp #24
blo L78
; {
; LCD_buff[i]=tmpchar%10+48;
; tmpchar=tmpchar/10;
; }
; swap(&LCD_buff[23],&LCD_buff[22]);
ldhx #_LCD_buff+22
pshx
pshh
ldhx #_LCD_buff+23
pshx
pshh
jsr _swap
ais #4
tsx
L46:
ais #4
.dbline 0 ; func end
rts
; year -> 2,X
_Is_yunnian::
tsx
; }
;
; char Is_yunnian(unsigned short year)
; {
; if((year%400==0)||((year%4==0)&&(year%100!=0)))
lda 3,X
sta *__rlo
lda 2,X
sta *__rhi
lda #-112
psha
lda #1
psha
jsr __divmod16u
pula
sta *__r0
pula
sta *__r1
ldhx *__r0
cphx #0
tsx
beq L87
lda 3,X
and #3
sta *__r1
clra
sta *__r0
ldhx *__r0
cphx #0
tsx
bne L85
lda 3,X
sta *__rlo
lda 2,X
sta *__rhi
lda #100
psha
clra
psha
jsr __divmod16u
pula
sta *__r0
pula
sta *__r1
ldhx *__r0
cphx #0
tsx
beq L85
L87:
; return 1;
lda #1
bra L84
L85:
; else return 0;
clra
L84:
.dbline 0 ; func end
rts
_Timer1init::
; }
;
;
; /*Timer1init:定时器1初始化子程序-----------------------*
; *功能:对定时器1初始化 *
; *参数:无 *
; *返回:无 *
; *-----------------------------------------------------*/
; void Timer1init(void)
; {
; //允许溢出中断、不启动计数、分频因子=64
; T1SC=0b01100110;
lda #102
sta 0x20
; //计数寄存器初值=0x0000
; T1CNTH=0x00; T1CNTL=0x00;
clr 0x21
clr 0x22
; //1秒产生1次溢出中断,计数寄存器=1×(2457600/64)=9600
; T1MODH=0x96; T1MODL=0x00;
lda #-106
sta 0x23
clr 0x24
; //允许定时器1计数寄存器计数
; T1SC&=~(1<<TSTOPBit);
bclr #5,0x20
L88:
.dbline 0 ; func end
rts
_Year_adjust::
; }
;
; void Year_adjust(void)
; {
; Normal_show_time=1;
lda #1
sta *_Normal_show_time
; Lcd_show_cursor(0,3);
lda #3
psha
clra
psha
jsr _Lcd_show_cursor
ais #2
tsx
; if(Up_Modify_key_is_pressed_flag)
lda *_Up_Modify_key_is_pressed_flag
beq L90
; {
; Time.year++;
lda *_Time+1
add #1
sta *_Time+1
lda *_Time
adc #0
sta *_Time
; Up_Modify_key_is_pressed_flag=0;
clr *_Up_Modify_key_is_pressed_flag
; }
L90:
;
; if(Down_Modify_key_is_pressed_flag)
lda *_Down_Modify_key_is_pressed_flag
beq L92
; {
; Time.year--;
lda *_Time+1
sub #1
sta *_Time+1
lda *_Time
sbc #0
sta *_Time
; Down_Modify_key_is_pressed_flag=0;
clr *_Down_Modify_key_is_pressed_flag
; }
L92:
L89:
.dbline 0 ; func end
rts
_Month_adjust::
;
; }
;
; void Month_adjust(void)
; {
; Normal_show_time=1;
lda #1
sta *_Normal_show_time
; Lcd_show_cursor(0,6);
lda #6
psha
clra
psha
jsr _Lcd_show_cursor
ais #2
tsx
; if(Up_Modify_key_is_pressed_flag)
lda *_Up_Modify_key_is_pressed_flag
beq L95
; {
; if(Time.month<12)
lda *_Time+2
cmp #12
bhs L97
; Time.month++;
inc *_Time+2
bra L98
L97:
; else
; Time.month=1;
lda #1
sta *_Time+2
L98:
; Up_Modify_key_is_pressed_flag=0;
clr *_Up_Modify_key_is_pressed_flag
; }
L95:
;
; if(Down_Modify_key_is_pressed_flag)
lda *_Down_Modify_key_is_pressed_flag
beq L102
; {
; if(Time.month>1)
lda *_Time+2
cmp #1
bls L104
; Time.month--;
dec *_Time+2
bra L105
L104:
; else
; Time.month=12;
lda #12
sta *_Time+2
L105:
; Down_Modify_key_is_pressed_flag=0;
clr *_Down_Modify_key_is_pressed_flag
; }
L102:
L94:
.dbline 0 ; func end
rts
_Day_adjust::
;
; }
;
; void Day_adjust(void)
; {
; Normal_show_time=1;
lda #1
sta *_Normal_show_time
; Lcd_show_cursor(0,9);
lda #9
psha
clra
psha
jsr _Lcd_show_cursor
ais #2
tsx
; if(Up_Modify_key_is_pressed_flag)
lda *_Up_Modify_key_is_pressed_flag
bne X14
jmp L110
X14:
; {
; if((Time.month!=2)&&(Time.month==1)||(Time.month==3)||(Time.month==5)||(Time.month==7)||(Time.month==8)||(Time.month==10||(Time.month==12)))
lda *_Time+2
cmp #2
beq L123
lda *_Time+2
cmp #1
beq L128
L123:
lda *_Time+2
cmp #3
beq L128
lda *_Time+2
cmp #5
beq L128
lda *_Time+2
cmp #7
beq L128
lda *_Time+2
cmp #8
beq L128
lda *_Time+2
cmp #10
beq L128
lda *_Time+2
cmp #12
bne L112
L128:
; {
; if(Time.day<31)
lda *_Time+3
cmp #31
bhs L129
; Time.day++;
inc *_Time+3
bra L113
L129:
; else
; Time.day=1;
lda #1
sta *_Time+3
; }
bra L113
L112:
; else if((Time.month!=2)&&(Time.month==4)||(Time.month==6)||(Time.month==9)||(Time.month==11))
lda *_Time+2
cmp #2
beq L142
lda *_Time+2
cmp #4
beq L144
L142:
lda *_Time+2
cmp #6
beq L144
lda *_Time+2
cmp #9
beq L144
lda *_Time+2
cmp #11
bne L134
L144:
; {
; if(Time.day<30)
lda *_Time+3
cmp #30
bhs L145
; Time.day++;
inc *_Time+3
bra L135
L145:
; else
; Time.day=1;
lda #1
sta *_Time+3
; }
bra L135
L134:
; else
; {
; if(!Is_yunnian(Time.year)) //如果不是闰年
ldhx *_Time
pshx
pshh
jsr _Is_yunnian
ais #2
tsx
sta *__r1
bne L150
; {
; if(Time.day<28)
lda *_Time+3
cmp #28
bhs L152
; Time.day++;
inc *_Time+3
bra L151
L152:
; else
; Time.day=1;
lda #1
sta *_Time+3
; }
bra L151
L150:
; else
; {
; if(Time.day<29)
lda *_Time+3
cmp #29
bhs L157
; Time.day++;
inc *_Time+3
bra L158
L157:
; else
; Time.day=1;
lda #1
sta *_Time+3
L158:
; }
L151:
; }
L135:
L113:
; Up_Modify_key_is_pressed_flag=0;
clr *_Up_Modify_key_is_pressed_flag
; }
L110:
;
; if(Down_Modify_key_is_pressed_flag)
lda *_Down_Modify_key_is_pressed_flag
bne X15
jmp L162
X15:
; {
; if((Time.month!=2)&&(Time.month==1)||(Time.month==3)||(Time.month==5)||(Time.month==7)||(Time.month==8)||(Time.month==10||(Time.month==12)))
lda *_Time+2
cmp #2
beq L175
lda *_Time+2
cmp #1
beq L180
L175:
lda *_Time+2
cmp #3
beq L180
lda *_Time+2
cmp #5
beq L180
lda *_Time+2
cmp #7
beq L180
lda *_Time+2
cmp #8
beq L180
lda *_Time+2
cmp #10
beq L180
lda *_Time+2
cmp #12
bne L164
L180:
; {
; if(Time.day>1)
lda *_Time+3
cmp #1
bls L181
; Time.day--;
dec *_Time+3
bra L165
L181:
; else
; Time.day=31;
lda #31
sta *_Time+3
; }
bra L165
L164:
; else if((Time.month!=2)&&(Time.month==4)||(Time.month==6)||(Time.month==9)||(Time.month==11))
lda *_Time+2
cmp #2
beq L194
lda *_Time+2
cmp #4
beq L196
L194:
lda *_Time+2
cmp #6
beq L196
lda *_Time+2
cmp #9
beq L196
lda *_Time+2
cmp #11
bne L186
L196:
; {
; if(Time.day>1)
lda *_Time+3
cmp #1
bls L197
; Time.day--;
dec *_Time+3
bra L187
L197:
; else
; Time.day=30;
lda #30
sta *_Time+3
; }
bra L187
L186:
; else
; {
; if(!Is_yunnian(Time.year)) //如果不是闰年
ldhx *_Time
pshx
pshh
jsr _Is_yunnian
ais #2
tsx
sta *__r1
bne L202
; {
; if(Time.day>1)
lda *_Time+3
cmp #1
bls L204
; Time.day--;
dec *_Time+3
bra L203
L204:
; else
; Time.day=1;
lda #1
sta *_Time+3
; }
bra L203
L202:
; else
; {
; if(Time.day>1)
lda *_Time+3
cmp #1
bls L209
; Time.day--;
dec *_Time+3
bra L210
L209:
; else
; Time.day=1;
lda #1
sta *_Time+3
L210:
; }
L203:
; }
L187:
L165:
; Down_Modify_key_is_pressed_flag=0;
clr *_Down_Modify_key_is_pressed_flag
; }
L162:
L109:
.dbline 0 ; func end
rts
_Hour_adjust::
;
;
; }
;
;
; void Hour_adjust(void)
; {
; Normal_show_time=1;
lda #1
sta *_Normal_show_time
; Lcd_show_cursor(1,1);
lda #1
psha
psha
jsr _Lcd_show_cursor
ais #2
tsx
; if(Up_Modify_key_is_pressed_flag)
lda *_Up_Modify_key_is_pressed_flag
beq L215
; {
; if(Time.hour<59)
lda *_Time+4
cmp #59
bhs L217
; Time.hour++;
inc *_Time+4
bra L218
L217:
; else
; Time.hour=0;
clr *_Time+4
L218:
; Up_Modify_key_is_pressed_flag=0;
clr *_Up_Modify_key_is_pressed_flag
; }
L215:
;
; if(Down_Modify_key_is_pressed_flag)
lda *_Down_Modify_key_is_pressed_flag
beq L222
; {
; if(Time.hour>0)
lda *_Time+4
cmp #0
bls L224
; Time.hour--;
dec *_Time+4
bra L225
L224:
; else
; Time.hour=59;
lda #59
sta *_Time+4
L225:
; Down_Modify_key_is_pressed_flag=0;
clr *_Down_Modify_key_is_pressed_flag
; }
L222:
L214:
.dbline 0 ; func end
rts
_Minute_adjust::
;
; }
;
; void Minute_adjust(void)
; {
; Normal_show_time=1;
lda #1
sta *_Normal_show_time
; Lcd_show_cursor(1,4);
lda #4
psha
lda #1
psha
jsr _Lcd_show_cursor
ais #2
tsx
; if(Up_Modify_key_is_pressed_flag)
lda *_Up_Modify_key_is_pressed_flag
beq L230
; {
; if(Time.min<59)
lda *_Time+5
cmp #59
bhs L232
; Time.min++;
inc *_Time+5
bra L233
L232:
; else
; Time.min=0;
clr *_Time+5
L233:
; Up_Modify_key_is_pressed_flag=0;
clr *_Up_Modify_key_is_pressed_flag
; }
L230:
;
; if(Down_Modify_key_is_pressed_flag)
lda *_Down_Modify_key_is_pressed_flag
beq L237
; {
; if(Time.min>0)
lda *_Time+5
cmp #0
bls L239
; Time.min--;
dec *_Time+5
bra L240
L239:
; else
; Time.min=59;
lda #59
sta *_Time+5
L240:
; Down_Modify_key_is_pressed_flag=0;
clr *_Down_Modify_key_is_pressed_flag
; }
L237:
L229:
.dbline 0 ; func end
rts
_A_Year_adjust::
;
; }
;
; void A_Year_adjust(void)
; {
;
; Normal_show_time=0;
clr *_Normal_show_time
; LCD_buff[11]='A';
lda #65
sta *_LCD_buff+11
; LCD_buff[12]='L';
lda #76
sta *_LCD_buff+12
; LCD_buff[13]='A';
lda #65
sta *_LCD_buff+13
; LCD_buff[14]='R';
lda #82
sta *_LCD_buff+14
; LCD_buff[15]='M';
lda #77
sta *_LCD_buff+15
;
; if(Up_Modify_key_is_pressed_flag)
lda *_Up_Modify_key_is_pressed_flag
beq L250
; {
;
; Alarm.year++;
lda *_Alarm+1
add #1
sta *_Alarm+1
lda *_Alarm
adc #0
sta *_Alarm
; Up_Modify_key_is_pressed_flag=0;
clr *_Up_Modify_key_is_pressed_flag
; }
L250:
;
; if(Down_Modify_key_is_pressed_flag)
lda *_Down_Modify_key_is_pressed_flag
beq L252
; {
; Alarm.year--;
lda *_Alarm+1
sub #1
sta *_Alarm+1
lda *_Alarm
sbc #0
sta *_Alarm
; Down_Modify_key_is_pressed_flag=0;
clr *_Down_Modify_key_is_pressed_flag
; }
L252:
; Lcd_show_cursor(0,3);
lda #3
psha
clra
psha
jsr _Lcd_show_cursor
ais #2
tsx
L244:
.dbline 0 ; func end
rts
_A_Month_adjust::
;
; }
;
; void A_Month_adjust(void)
; {
; Normal_show_time=0;
clr *_Normal_show_time
; Lcd_show_cursor(0,6);
lda #6
psha
clra
psha
jsr _Lcd_show_cursor
ais #2
tsx
; if(Up_Modify_key_is_pressed_flag)
lda *_Up_Modify_key_is_pressed_flag
beq L255
; {
; Alarm.month++;
inc *_Alarm+2
; Up_Modify_key_is_pressed_flag=0;
clr *_Up_Modify_key_is_pressed_flag
; }
L255:
;
; if(Down_Modify_key_is_pressed_flag)
lda *_Down_Modify_key_is_pressed_flag
beq L258
; {
; Alarm.month--;
dec *_Alarm+2
; Down_Modify_key_is_pressed_flag=0;
clr *_Down_Modify_key_is_pressed_flag
; }
L258:
L254:
.dbline 0 ; func end
rts
_A_Day_adjust::
;
; }
;
; void A_Day_adjust(void)
; {
; Normal_show_time=0;
clr *_Normal_show_time
; Lcd_show_cursor(0,9);
lda #9
psha
clra
psha
jsr _Lcd_show_cursor
ais #2
tsx
; if(Up_Modify_key_is_pressed_flag)
lda *_Up_Modify_key_is_pressed_flag
beq L262
; {
; Alarm.day++;
inc *_Alarm+3
; Up_Modify_key_is_pressed_flag=0;
clr *_Up_Modify_key_is_pressed_flag
; }
L262:
;
; if(Down_Modify_key_is_pressed_flag)
lda *_Down_Modify_key_is_pressed_flag
beq L265
; {
; Alarm.day--;
dec *_Alarm+3
; Down_Modify_key_is_pressed_flag=0;
clr *_Down_Modify_key_is_pressed_flag
; }
L265:
L261:
.dbline 0 ; func end
rts
_A_Hour_adjust::
;
; }
;
;
; void A_Hour_adjust(void)
; {
; Normal_show_time=0;
clr *_Normal_show_time
; Lcd_show_cursor(1,1);
lda #1
psha
psha
jsr _Lcd_show_cursor
ais #2
tsx
; if(Up_Modify_key_is_pressed_flag)
lda *_Up_Modify_key_is_pressed_flag
beq L269
; {
; Alarm.hour++;
inc *_Alarm+4
; Up_Modify_key_is_pressed_flag=0;
clr *_Up_Modify_key_is_pressed_flag
; }
L269:
;
; if(Down_Modify_key_is_pressed_flag)
lda *_Down_Modify_key_is_pressed_flag
beq L272
; {
; Alarm.hour--;
dec *_Alarm+4
; Down_Modify_key_is_pressed_flag=0;
clr *_Down_Modify_key_is_pressed_flag
; }
L272:
L268:
.dbline 0 ; func end
rts
_A_Minute_adjust::
;
; }
;
; void A_Minute_adjust(void)
; {
; Normal_show_time=0;
clr *_Normal_show_time
; Lcd_show_cursor(1,4);
lda #4
psha
lda #1
psha
jsr _Lcd_show_cursor
ais #2
tsx
; if(Up_Modify_key_is_pressed_flag)
lda *_Up_Modify_key_is_pressed_flag
beq L276
; {
; Alarm.min++;
inc *_Alarm+5
; Up_Modify_key_is_pressed_flag=0;
clr *_Up_Modify_key_is_pressed_flag
; }
L276:
;
; if(Down_Modify_key_is_pressed_flag)
lda *_Down_Modify_key_is_pressed_flag
beq L279
; {
; Alarm.min--;
dec *_Alarm+5
; Down_Modify_key_is_pressed_flag=0;
clr *_Down_Modify_key_is_pressed_flag
; }
L279:
L275:
.dbline 0 ; func end
rts
_Alarm_handle::
ais #-2
tsx
;
; }
;
; void Alarm_handle(void)
; {
; Alarm_enable_flag=!Alarm_enable_flag;
lda *_Alarm_enable_flag
bne L284
clra
sta ,X
lda #1
sta 1,X
bra L285
L284:
clr 1,X
clr ,X
L285:
lda 1,X
sta *_Alarm_enable_flag
; if(Alarm_enable_flag)
lda *_Alarm_enable_flag
beq L286
; {
; LCD_buff[29]=' ';
lda #32
sta *_LCD_buff+29
; LCD_buff[30]='E';
lda #69
sta *_LCD_buff+30
; LCD_buff[31]='N';
lda #78
sta *_LCD_buff+31
; }
bra L287
L286:
; else
; {
; LCD_buff[29]='D';
lda #68
sta *_LCD_buff+29
; LCD_buff[30]='I';
lda #73
sta *_LCD_buff+30
; LCD_buff[31]='S';
lda #83
sta *_LCD_buff+31
; }
L287:
L282:
ais #2
.dbline 0 ; func end
rts
_Alarm_play::
; }
;
; void Alarm_play(void)
; {
; DDRD|=0b00000001;
bset #0,0x7
; PTD|=0b00000001;
bset #0,0x3
L294:
.dbline 0 ; func end
rts
_Alarm_Off::
; }
;
; void Alarm_Off(void)
; {
; DDRD|=0b00000001;
bset #0,0x7
; PTD&=0b11111110;
lda 0x3
and #-2
sta 0x3
L295:
.dbline 0 ; func end
rts
; tmp -> 0,X
; n -> 5,X
; m -> 3,X
_swap::
ais #-1
tsx
; }
;
; void swap(char *m,char *n)
; {
; char tmp;
; tmp=*m;
lda 3,X
ldx 4,X
psha
pulh
lda ,x
tsx
sta ,X
; *m=*n;
lda 5,X
ldx 6,X
psha
pulh
lda ,x
tsx
sta *__r1
lda 4,X
sta *__r3
lda 3,X
sta *__r2
lda *__r1
ldhx *__r2
sta ,x
tsx
; *n=tmp;
lda 6,X
sta *__r1
lda 5,X
sta *__r0
lda ,X
ldhx *__r0
sta ,x
tsx
L296:
ais #1
.dbline 0 ; func end
rts
.area bss
_Alarm_fresh::
.blkb 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -