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

📄 main.s

📁 可以显示年月日,时间等,也可以设置闹钟,设定时间
💻 S
字号:
	.module main.c
	.area data
_data::
	.blkb 2
	.area idata
	.word 1
	.area data
	.blkb 2
	.area idata
	.word 7
	.area data
	.blkb 2
	.area idata
	.word 2007
	.area data
_naozhong::
	.blkb 1
	.area idata
	.byte 0
	.area data
_KB_valve::
	.blkb 1
	.area idata
	.byte 0
	.area data
	.area text
;              i -> 0,X
;              j -> 1,X
_main::
	ais #-2
	tsx
; /*-----------------------------------------------------*
; *工 程 名:Lcd.prj                                      *
; *硬件连接: 1.LCD的DB0-7与MCU的B口的PTB0-7连接          *
; *          2.LCD的RS,R/W,E与MCU的PTC0,PTC1,PTC2连接    *
; *功能:1.初始显示:"Wait Receiving.." "Soochow 2005.08"  *
; *     2.等待接收字符,当收到32个字符时显示,重复此功能   *
; *----------《嵌入式应用技术基础教程》教学实例---------*/
; /*[头文件]*/
; #include "SCI.h"       //串行通信子程序头文件
; #include "GP32C.h"        //包含头文件
; #include "KB.h"               //键盘中断头文件
; /*[函数声明]*/
; extern void lcdshow(unsigned char *str1,unsigned char *str2);
; extern void SCIInit(void);
; extern void Akey(void);
; void sys_init(unsigned char time[],unsigned int data[],unsigned char alart[] );         //闹钟时间日期的显示的初始化
; void Timer1init(void);
; /*[主程序]*/
; #define TSTOPBit   5      //定时器计数停止位
; #define TOFBit     7      //定时器溢出标志位
; unsigned char time[3], *str1,*str2,alart[2];      //存放时、分、秒
; unsigned int  data[3]={1,7,2007};      //存放日,月,年
; unsigned char clockstr[],datestr[],naozhong=0,KB_valve=0;
; void main()
;  {   
;      unsigned char i; 
; 	 unsigned char j;
; 	 DDRA=0x0ff;  //定义pta口为输出
	lda #-1
	sta 0x4
;      PTA=0x00;   // 初值是0
	clr 0
;  	 asm("SEI");               //关总中断             
	SEI
;  	 KB_Init();                 //键盘初始化
	jsr _KB_Init
;  	 SCIInit();             //调串行口初始化子程序
	jsr _SCIInit
;  	 Timer1init();             //调定时器1初始化子程序
	jsr _Timer1init
	tsx
;  	 SCC2|=(1<<5);             //令SCC2.5=1,允许接收中断
	bset #5,0x14
;  	 INTKBSCR&= ~(1<<IntBit); //开放键盘中断(IMASKk=1)
	bclr #1,0x1a
; 	 asm("CLI");               //开总中断
	CLI
; 	 i=time[0];
	lda *_time
	sta ,X
	bra L3
L2:
; 	 while(1)
; 	{ 
; 	  j=time[0];    
	lda *_time
	sta 1,X
; 	  if (i!=j)                      //数组已经更新
	lda ,X
	cmp 1,X
	beq L5
; 	     {  sys_init( time, data, alart ); 
	ldhx #_alart
	pshx
	pshh
	ldhx #_data
	pshx
	pshh
	ldhx #_time
	pshx
	pshh
	jsr _sys_init
	ais #6
; 	     lcdshow((unsigned char *)datestr,(unsigned char *)clockstr); i=j;} //发送新数据
	lda #<_clockstr
	psha
	lda #>_clockstr
	psha
	lda #<_datestr
	psha
	lda #>_datestr
	psha
	jsr _lcdshow
	ais #4
	tsx
	lda 1,X
	sta ,X
L5:
; 	   if(naozhong==1)
	lda *_naozhong
	cmp #1
	bne L7
; 	   {   
	bra L10
L9:
; 	      while(1)
; 	      {   naozhong=0;
	clr *_naozhong
; 	          if(KB_valve=='0')break;
	lda *_KB_valve
	cmp #48
	bne L12
	bra L11
L12:
L10:
	bra L9
L11:
; 	      }
; 	    }
L7:
; 	   if( KB_valve== 'A')Akey();
	lda *_KB_valve
	cmp #65
	bne L14
	jsr _Akey
	tsx
L14:
L3:
	bra L2
X0:
L1:
	ais #2
	.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
L16:
	.dbline 0 ; func end
	rts
	.area bss
_datestr::
	.blkb 1
_clockstr::
	.blkb 1
_alart::
	.blkb 2
_str2::
	.blkb 2
_str1::
	.blkb 2
_time::
	.blkb 3

⌨️ 快捷键说明

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