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

📄 main.s

📁 freescale单片机电子时钟
💻 S
字号:
	.module main.c
	.area text
;              h -> 0,X
;              l -> 1,X
_main::
	ais #-2
	tsx
; #include "GP32C.H"
; #include "TIME.h"
; #include "KB.h"               //键盘
; #include "LCD.h"
; //函数声明
; //extern void SCIInit(void);
; //extern void InitTime(void);
; //extern void SCISendN(unsigned char n,unsigned char ch[]);
; //extern void Timer1init(void);
; //extern void lcdshow(unsigned char *str);
; unsigned char time1[18];    //显示当前时间
; unsigned char time2[7];     //保存闹钟时间
; unsigned char time[7];      //存放时、分、秒
; unsigned char val;
; //unsigned char val1;
; unsigned char sign1;  
; unsigned char sign2;
; //*====================================================*
; //*[主程序]
; void main()
;  {
; 	 unsigned char h,l;
; 	 val=0;
	clr *_val
; 	 //val1=0;
; 	 DDRD=1;
	lda #1
	sta 0x7
; 	 sign1=0;
	clr *_sign1
; 	 sign2=0;
	clr *_sign2
;  	 asm("SEI");               //关总中断
	SEI
;  	 //SCIInit();
;  	 Timer1init();             //调定时器1初始化子程序
	jsr _Timer1init
;  	 KB_Init();
	jsr _KB_Init
;  	 InitTime();               //初始化时间
	jsr _InitTime
;  	 conver();
	jsr _conver
;  	 lcdshow((unsigned char *)time1);
	lda #<_time1
	psha
	lda #>_time1
	psha
	jsr _lcdshow
	ais #2
	tsx
;  	 //SCC2|=(1<<5);             //令SCC2.5=1,允许接收中断
;  	 asm("CLI"); 
	CLI
	jmp L3
L2:
; 	 while(1)
; 	{
; 	  h=0;
	clr ,X
; 	  for(l=0;l<7;l++) //闹钟
	clr 1,X
	bra L8
L5:
;       {
;          if(time[l]!=time2[l]) break;
	clr *__r0
	lda 1,X
	add #<_time2
	sta *__r1
	lda *__r0
	adc #>_time2
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	sta *__r1
	clr *__r2
	lda 1,X
	add #<_time
	sta *__r3
	lda *__r2
	adc #>_time
	sta *__r2
	ldhx *__r2
	lda ,x
	tsx
	cmp *__r1
	beq L9
	bra L7
L9:
;          h++;
	inc ,X
;          if(h==7)
	lda ,X
	cmp #7
	bne L11
;          {
;          alarmtime(30);
	lda #30
	psha
	jsr _alarmtime
	ais #1
	tsx
;          }
L11:
L6:
	inc 1,X
L8:
	lda 1,X
	cmp #7
	blo L5
L7:
;       }
; 	  if((time[6]==0)&&(time[5]==0)&&(time[4]==0))//整点报时
	lda *_time+6
	bne L13
	lda *_time+5
	bne L13
	lda *_time+4
	bne L13
;       {
;          PTD=1;
	lda #1
	sta 0x3
;          delay();
	jsr _delay
;          PTD=0;
	clr 0x3
;          delay();
	jsr _delay
	tsx
;       }
L13:
;       if(sign1==1)
	lda *_sign1
	cmp #1
	bne L18
;       {
;         INTKBSCR|= (1<<IntBit); //屏蔽键盘中断(IMASKK=1)
	bset #1,0x1a
;         SetTime();     //设置时间
	jsr _SetTime
	tsx
;         sign1=0;
	clr *_sign1
;         INTKBSCR&= ~(1<<IntBit); //打开键盘中断(IMASKK=0)
	bclr #1,0x1a
;       }
L18:
;       if(sign2==1)
	lda *_sign2
	cmp #1
	bne L20
;       {
;         INTKBSCR|= (1<<IntBit); //屏蔽键盘中断(IMASKK=1)
	bset #1,0x1a
;         sign2=0;
	clr *_sign2
;         SetAlarmClock();   //设置闹钟时间
	jsr _SetAlarmClock
	tsx
;         INTKBSCR&= ~(1<<IntBit); //打开键盘中断(IMASKK=0)
	bclr #1,0x1a
;       }
L20:
; 	   if (val==1)                      //时间溢出中断发生
	lda *_val
	cmp #1
	bne L22
; 	    {
; 	     conver();
	jsr _conver
;  	     lcdshow((unsigned char *)time1);//每一秒更新
	lda #<_time1
	psha
	lda #>_time1
	psha
	jsr _lcdshow
	ais #2
	tsx
;  	     val=0;
	clr *_val
;         }
L22:
L3:
	jmp L2
X0:
L1:
	ais #2
	.dbline 0 ; func end
	rts
	.area bss
_sign2::
	.blkb 1
_sign1::
	.blkb 1
_val::
	.blkb 1
_time2::
	.blkb 7
_time1::
	.blkb 18
_time::
	.blkb 7

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -