📄 jianpan.s
字号:
.module jianpan.c
.area text
; alart -> 6,X
; data -> 4,X
; time -> 2,X
_sys_init::
tsx
; /******这里设置程序初始化时显示的时间****************/
; extern unsigned char time[3],alart[2],time_clock[3];//存放时、分、秒
; extern unsigned int data[3]; //年、月、日
; unsigned char clockn[2];
; extern unsigned char clockstr[8]; /*时间显示的LCD显示*/
; extern unsigned char alartstr[5]; /*闹钟显示的LCD显示*/
; extern unsigned char datestr[10]; /*日期显示LCD显示*/
; unsigned char naozhong,KB_valve;
;
;
; /****************以下是所有子函数的声明*********************/
; extern void LcdInit(void); //显示的初始化
; extern void lcdshow1(unsigned char x,unsigned char y,unsigned char data);
; extern void lcdshow2(unsigned char str[]);
; extern void sys_init(unsigned char time[],unsigned int data[],unsigned char alart[] ); /*系统的初始化程序*/
; unsigned char getmonthdays(unsigned int,unsigned char);/*计算某月的天数子程序*/
; extern void guangbiao(unsigned char x,unsigned char y);
; /**************************函数部分*************************/
;
; void sys_init(unsigned char time[],unsigned int data[],unsigned char alart[] )
; {
; datestr[7]=data[0]%10+0x30; //日期
lda 4,X
ldx 5,X
psha
pulh
lda 1,x
sta *__r1
lda ,x
tsx
sta *__r0
mov *__r1,*__rlo
mov *__r0,*__rhi
lda #10
psha
clra
psha
jsr __divmod16u
pula
sta *__r0
pula
add #48
sta *__r1
lda *__r0
adc #0
mov *__r1,*_datestr+7
; datestr[6]=(data[0]/10)+0x30;
lda 4,X
ldx 5,X
psha
pulh
lda 1,x
sta *__r1
lda ,x
tsx
sta *__r0
mov *__r1,*__rlo
mov *__r0,*__rhi
lda #10
psha
clra
psha
jsr __divmod16u
ais #2
mov *__rhi,*__r0
mov *__rlo,*__r1
lda *__r1
add #48
sta *__r1
lda *__r0
adc #0
mov *__r1,*_datestr+6
; datestr[5]=data[1]%10+0x30;
lda 5,X
add #2
sta *__r1
lda 4,X
adc #0
sta *__r0
ldhx *__r0
lda 1,x
sta *__r1
lda ,x
tsx
sta *__r0
mov *__r1,*__rlo
mov *__r0,*__rhi
lda #10
psha
clra
psha
jsr __divmod16u
pula
sta *__r0
pula
add #48
sta *__r1
lda *__r0
adc #0
mov *__r1,*_datestr+5
; datestr[4]=(data[1]/10)+0x30;
lda 5,X
add #2
sta *__r1
lda 4,X
adc #0
sta *__r0
ldhx *__r0
lda 1,x
sta *__r1
lda ,x
tsx
sta *__r0
mov *__r1,*__rlo
mov *__r0,*__rhi
lda #10
psha
clra
psha
jsr __divmod16u
ais #2
mov *__rhi,*__r0
mov *__rlo,*__r1
lda *__r1
add #48
sta *__r1
lda *__r0
adc #0
mov *__r1,*_datestr+4
; datestr[3]=data[2]%10+0x30;
lda 5,X
add #4
sta *__r1
lda 4,X
adc #0
sta *__r0
ldhx *__r0
lda 1,x
sta *__r1
lda ,x
tsx
sta *__r0
mov *__r1,*__rlo
mov *__r0,*__rhi
lda #10
psha
clra
psha
jsr __divmod16u
pula
sta *__r0
pula
add #48
sta *__r1
lda *__r0
adc #0
mov *__r1,*_datestr+3
; datestr[2]=((data[2]/10))%10+0x30;
lda 5,X
add #4
sta *__r1
lda 4,X
adc #0
sta *__r0
ldhx *__r0
lda 1,x
sta *__r1
lda ,x
tsx
sta *__r0
mov *__r1,*__rlo
mov *__r0,*__rhi
lda #10
psha
clra
psha
jsr __divmod16u
ais #2
mov *__rhi,*__r0
mov *__rlo,*__r1
mov *__r1,*__rlo
mov *__r0,*__rhi
lda #10
psha
clra
psha
jsr __divmod16u
pula
sta *__r0
pula
add #48
sta *__r1
lda *__r0
adc #0
mov *__r1,*_datestr+2
; datestr[1]=((data[2]/100))%10+0x30;
lda 5,X
add #4
sta *__r1
lda 4,X
adc #0
sta *__r0
ldhx *__r0
lda 1,x
sta *__r1
lda ,x
tsx
sta *__r0
mov *__r1,*__rlo
mov *__r0,*__rhi
lda #100
psha
clra
psha
jsr __divmod16u
ais #2
mov *__rhi,*__r0
mov *__rlo,*__r1
mov *__r1,*__rlo
mov *__r0,*__rhi
lda #10
psha
clra
psha
jsr __divmod16u
pula
sta *__r0
pula
add #48
sta *__r1
lda *__r0
adc #0
mov *__r1,*_datestr+1
; datestr[0]=(data[2]/1000)+0x30;
lda 5,X
add #4
sta *__r1
lda 4,X
adc #0
sta *__r0
ldhx *__r0
lda 1,x
sta *__r1
lda ,x
tsx
sta *__r0
mov *__r1,*__rlo
mov *__r0,*__rhi
lda #-24
psha
lda #3
psha
jsr __divmod16u
ais #2
mov *__rhi,*__r0
mov *__rlo,*__r1
lda *__r1
add #48
sta *__r1
lda *__r0
adc #0
mov *__r1,*_datestr
; /*给元素0赋相应数码管显示编码,编码序号是秒数的个位*/
; clockstr[5]=time[0]%10+0x30;
lda 2,X
ldx 3,X
psha
pulh
lda ,x
ldx #10
clrh
div
pshh
pula
tsx
add #48
sta *_clockstr+5
; clockstr[4]=(time[0]/10)+0x30; /*给元素1赋相应数码管显示编码,编码序号是秒数的十位*/
lda 2,X
ldx 3,X
psha
pulh
lda ,x
ldx #10
clrh
div
tsx
add #48
sta *_clockstr+4
; clockstr[3]=time[1]%10+0x30; /*以下类推*/
lda 3,X
add #1
sta *__r1
lda 2,X
adc #0
sta *__r0
ldhx *__r0
lda ,x
ldx #10
clrh
div
pshh
pula
tsx
add #48
sta *_clockstr+3
; clockstr[2]=(time[1]/10)+0x30;
lda 3,X
add #1
sta *__r1
lda 2,X
adc #0
sta *__r0
ldhx *__r0
lda ,x
ldx #10
clrh
div
tsx
add #48
sta *_clockstr+2
; clockstr[1]=time[2]%10+0x30;
lda 3,X
add #2
sta *__r1
lda 2,X
adc #0
sta *__r0
ldhx *__r0
lda ,x
ldx #10
clrh
div
pshh
pula
tsx
add #48
sta *_clockstr+1
; clockstr[0]=(time[2]/10)+0x30;
lda 3,X
add #2
sta *__r1
lda 2,X
adc #0
sta *__r0
ldhx *__r0
lda ,x
ldx #10
clrh
div
tsx
add #48
sta *_clockstr
;
; alartstr[3]=alart[0]%10+0x30; //设置闹钟
lda 6,X
ldx 7,X
psha
pulh
lda ,x
ldx #10
clrh
div
pshh
pula
tsx
add #48
sta *_alartstr+3
; alartstr[2]=(int)alart[0]/10+0x30;
lda 6,X
ldx 7,X
psha
pulh
lda ,x
tsx
psha
lda #10
psha
jsr __div8s
ais #2
add #48
sta *_alartstr+2
; alartstr[1]=alart[1]%10+0x30;
lda 7,X
add #1
sta *__r1
lda 6,X
adc #0
sta *__r0
ldhx *__r0
lda ,x
ldx #10
clrh
div
pshh
pula
tsx
add #48
sta *_alartstr+1
; alartstr[0]=(int)alart[1]/10+0x30;
lda 7,X
add #1
sta *__r1
lda 6,X
adc #0
sta *__r0
ldhx *__r0
lda ,x
tsx
psha
lda #10
psha
jsr __div8s
ais #2
add #48
sta *_alartstr
L1:
.dbline 0 ; func end
rts
; days -> 2,X
; month -> 7,X
; year -> 5,X
_getmonthdays::
ais #-3
tsx
;
;
; }
; unsigned char getmonthdays(unsigned int year,unsigned char month)/*得到某月的天数*/
; {
; unsigned char days;
; switch (month)
clr ,X
lda 7,X
sta 1,X
lda ,X
bne X0
lda 1,X
cmp #2
beq L22
X0:
lda ,X
bne X1
lda 1,X
cmp #4
beq L21
X1:
lda ,X
bne X2
lda 1,X
cmp #6
beq L21
X2:
lda ,X
bne X3
lda 1,X
cmp #9
beq L21
X3:
lda ,X
bne X4
lda 1,X
cmp #11
beq L21
X4:
bra L18
X5:
; {
L21:
; case 4:
; case 6:
; case 9:
; case 11:days=30;
lda #30
sta 2,X
; break;
bra L19
L22:
; case 2: if((year%4==0&&year%100!=0)||(year%400==0))
lda 6,X
and #3
sta *__r1
clra
sta *__r0
ldhx *__r0
cphx #0
tsx
bne L26
lda 6,X
sta *__rlo
lda 5,X
sta *__rhi
lda #100
psha
clra
psha
jsr __divmod16u
pula
sta *__r0
pula
sta *__r1
ldhx *__r0
cphx #0
tsx
bne L25
L26:
lda 6,X
sta *__rlo
lda 5,X
sta *__rhi
lda #-112
psha
lda #1
psha
jsr __divmod16u
pula
sta *__r0
pula
sta *__r1
ldhx *__r0
cphx #0
tsx
bne L23
L25:
; days=29;
lda #29
sta 2,X
bra L19
L23:
; else days=28;
lda #28
sta 2,X
; break;
bra L19
L18:
; default:days=31;
lda #31
sta 2,X
; break;
L19:
; }
; return days;
lda 2,X
L17:
ais #3
.dbline 0 ; func end
rts
; i -> 0,X
; j -> 1,X
_Delay::
ais #-2
tsx
; }
;
; /*void Data_Change(unsigned char data,unsigned char change_data[2])
; {
; change_data[1]=data/10;
; change_data[0]=data%10;
; }
; */
; void Delay(void)
; {
; unsigned char i,j;
; for(i=0;i<230;i++)
clr ,X
bra L31
L28:
clr 1,X
bra L35
L32:
L33:
inc 1,X
L35:
lda 1,X
cmp #-26
blo L32
L29:
inc ,X
L31:
lda ,X
cmp #-26
blo L28
L27:
ais #2
.dbline 0 ; func end
rts
; n -> 2,X
_Lcd_Show::
tsx
; for(j=0;j<230;j++);
; }
;
; void Lcd_Show(unsigned char n)
; {
; // unsigned char hyear,lyear,array[2]={0};
; LcdInit();
jsr _LcdInit
tsx
; if(n==1)
lda 2,X
cmp #1
bne L37
; {
; lcdshow1(1,4, clockstr[0]); //show h low1
lda *_clockstr
psha
lda #4
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,5, clockstr[1]); //show h low2
lda *_clockstr+1
psha
lda #5
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,6,':'); //show '.'
lda #58
psha
lda #6
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,7, clockstr[2]); //show m high
lda *_clockstr+2
psha
lda #7
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,8, clockstr[3]); //show m low
lda *_clockstr+3
psha
lda #8
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,9,':'); //show '.'
lda #58
psha
lda #9
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,10, clockstr[4]); //show s high
lda *_clockstr+4
psha
lda #10
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,11, clockstr[5]); //show s low
lda *_clockstr+5
psha
lda #11
psha
lda #1
psha
jsr _lcdshow1
ais #3
tsx
; }
jmp L38
L37:
; else
; {
;
; lcdshow1(0,2,datestr[0]); //show year high1
lda *_datestr
psha
lda #2
psha
clra
psha
jsr _lcdshow1
ais #3
; lcdshow1(0,3,datestr[1]); //show year high2
lda *_datestr+1
psha
lda #3
psha
clra
psha
jsr _lcdshow1
ais #3
; lcdshow1(0,4,datestr[2]); //show year low1
lda *_datestr+2
psha
lda #4
psha
clra
psha
jsr _lcdshow1
ais #3
; lcdshow1(0,5,datestr[3]); //show year low2
lda *_datestr+3
psha
lda #5
psha
clra
psha
jsr _lcdshow1
ais #3
; lcdshow1(0,6,'-'); //show '.'
lda #45
psha
lda #6
psha
clra
psha
jsr _lcdshow1
ais #3
; lcdshow1(0,7,datestr[4]); //show month high
lda *_datestr+4
psha
lda #7
psha
clra
psha
jsr _lcdshow1
ais #3
; lcdshow1(0,8,datestr[5]); //show month low
lda *_datestr+5
psha
lda #8
psha
clra
psha
jsr _lcdshow1
ais #3
; lcdshow1(0,9,'-'); //show '.'
lda #45
psha
lda #9
psha
clra
psha
jsr _lcdshow1
ais #3
; lcdshow1(0,10,datestr[6]); //show day high
lda *_datestr+6
psha
lda #10
psha
clra
psha
jsr _lcdshow1
ais #3
; lcdshow1(0,11,datestr[7]); //show day low
lda *_datestr+7
psha
lda #11
psha
clra
psha
jsr _lcdshow1
ais #3
;
; lcdshow1(1,4,alartstr[0]); //show h low1
lda *_alartstr
psha
lda #4
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,5,alartstr[1]); //show h low2
lda *_alartstr+1
psha
lda #5
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,6,':'); //show '.'
lda #58
psha
lda #6
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,7,alartstr[2]); //show m high
lda *_alartstr+2
psha
lda #7
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,8,alartstr[3]); //show m low
lda *_alartstr+3
psha
lda #8
psha
lda #1
psha
jsr _lcdshow1
ais #3
tsx
; }
L38:
L36:
.dbline 0 ; func end
rts
_Lcd_Show_init::
; }
;
; void Lcd_Show_init(void)
; {
; LcdInit();
jsr _LcdInit
; lcdshow1(1,4,'0'); //show h low1
lda #48
psha
lda #4
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,5,'0'); //show h low2
lda #48
psha
lda #5
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,6,':'); //show '.'
lda #58
psha
lda #6
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,7,'0'); //show m high
lda #48
psha
lda #7
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,8,'0'); //show m low
lda #48
psha
lda #8
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,9,':'); //show '.'
lda #58
psha
lda #9
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,10,'0'); //show s high
lda #48
psha
lda #10
psha
lda #1
psha
jsr _lcdshow1
ais #3
; lcdshow1(1,11,'0'); //show s low
lda #48
psha
lda #11
psha
lda #1
psha
jsr _lcdshow1
ais #3
tsx
L54:
.dbline 0 ; func end
rts
; n -> 4,X
; time_array -> 2,X
_str_change::
tsx
; }
;
; void str_change(unsigned char time_array[],unsigned char n)
; {
; data[2]=time_array[0]*1000+time_array[1]*100+time_array[2]*10+time_array[3];
lda 3,X
add #1
sta *__r1
lda 2,X
adc #0
sta *__r0
ldhx *__r0
lda ,x
tsx
sta *__r1
clr *__r0
lda #100
psha
clra
psha
lda *__r1
psha
lda *__r0
psha
jsr __mul16
ais #4
mov *__rlo,*__r1
mov *__rhi,*__r0
lda 2,X
ldx 3,X
psha
pulh
lda ,x
tsx
sta *__r3
clr *__r2
lda #-24
psha
lda #3
psha
lda *__r3
psha
lda *__r2
psha
jsr __mul16
ais #4
mov *__rlo,*__r3
mov *__rhi,*__r2
lda *__r3
add *__r1
sta *__r1
lda *__r2
adc *__r0
sta *__r0
lda 3,X
add #2
sta *__r3
lda 2,X
adc #0
sta *__r2
ldhx *__r2
lda ,x
tsx
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -