⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.s

📁 这是我自己在做实验设计时做的,用摩托罗拉飞思卡尔做的一个多功能电子钟
💻 S
📖 第 1 页 / 共 2 页
字号:
	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 + -