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

📄 interrupt.s

📁 AVR单片机 C语言程序设计经典实用
💻 S
字号:
	.module interrupt.c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\interrupt.c
	.dbfunc e sInit_Calendar _sInit_Calendar fV
	.even
_sInit_Calendar::
	.dbline -1
	.dbline 26
; //***************************************************************
; // File Name : Interrupt.c
; // Author    : Steaven
; // Created   : 2008-06-09
; // Modified  : 
; // Revision  : V0.0
; //***************************************************************
; 
; #include "app.h"
; 
; //global variables definition
; INT8U bYear;    //time - year
; INT8U bMonth;   //time - month
; INT8U bDate;    //time - date
; INT8U bHour;    //time - hour
; INT8U bMinute;  //time - minute
; INT8U bSecond;  //time - second
; 
; //***************************************************************
; // Function    : sInit_Calendar
; // Input       : none
; // Output      : none
; // Description : Time Initialization,2008-10-29,23:40:45
; //***************************************************************
; void sInit_Calendar(void)
; {
	.dbline 27
; 	bYear = 0x08;
	ldi R24,8
	sts _bYear,R24
	.dbline 28
; 	bMonth = 10;
	ldi R24,10
	sts _bMonth,R24
	.dbline 29
; 	bDate = 29;
	ldi R24,29
	sts _bDate,R24
	.dbline 30
; 	bHour = 23;
	ldi R24,23
	sts _bHour,R24
	.dbline 31
; 	bMinute = 40;
	ldi R24,40
	sts _bMinute,R24
	.dbline 32
; 	bSecond = 45;
	ldi R24,45
	sts _bSecond,R24
	.dbline -2
	.dbline 33
; }
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Calendar_Update _Calendar_Update fV
	.even
_Calendar_Update::
	.dbline -1
	.dbline 42
; 
; //***************************************************************
; // Function    : Calendar_Update
; // Input       : none
; // Output      : none
; // Description : Update time every one second
; //***************************************************************
; void Calendar_Update(void)
; {	
	.dbline 43
;   	bSecond++; 	
	lds R24,_bSecond
	subi R24,255    ; addi 1
	sts _bSecond,R24
	.dbline 44
;  	if(bSecond >= 60)
	cpi R24,60
	brsh X0
	xjmp L3
X0:
	.dbline 45
;   	{
	.dbline 46
; 		bSecond = 0;	  		
	clr R2
	sts _bSecond,R2
	.dbline 47
; 		bMinute++;		
	lds R24,_bMinute
	subi R24,255    ; addi 1
	sts _bMinute,R24
	.dbline 48
; 		if(bMinute >= 60)
	cpi R24,60
	brsh X1
	xjmp L5
X1:
	.dbline 49
; 	  	{
	.dbline 50
;    		 	bMinute = 0;
	sts _bMinute,R2
	.dbline 51
; 	 		bHour++;
	lds R24,_bHour
	subi R24,255    ; addi 1
	sts _bHour,R24
	.dbline 52
; 		  	if(bHour >= 24)
	cpi R24,24
	brsh X2
	xjmp L7
X2:
	.dbline 53
; 		  	{
	.dbline 54
; 				bHour = 0;
	sts _bHour,R2
	.dbline 55
; 				bDate++;		
	lds R24,_bDate
	subi R24,255    ; addi 1
	sts _bDate,R24
	.dbline 56
; 				if((bMonth == 4) || (bMonth == 6) || \
	lds R24,_bMonth
	cpi R24,4
	breq L13
	cpi R24,6
	breq L13
	cpi R24,9
	breq L13
	cpi R24,11
	brne L9
L13:
	.dbline 58
; 				   (bMonth == 9) || (bMonth == 11))
; 				{
	.dbline 59
; 					if(bDate > 30)
	ldi R24,30
	lds R2,_bDate
	cp R24,R2
	brlo X3
	xjmp L10
X3:
	.dbline 60
; 					{
	.dbline 61
; 						bDate = 1;
	ldi R24,1
	sts _bDate,R24
	.dbline 62
; 						bMonth++;
	lds R24,_bMonth
	subi R24,255    ; addi 1
	sts _bMonth,R24
	.dbline 63
; 					}
	.dbline 64
; 				}
	xjmp L10
L9:
	.dbline 65
; 				else if((bMonth == 1) || (bMonth == 3)  || \
	lds R24,_bMonth
	cpi R24,1
	breq L23
	cpi R24,3
	breq L23
	cpi R24,5
	breq L23
	cpi R24,7
	breq L23
	cpi R24,8
	breq L23
	cpi R24,10
	breq L23
	cpi R24,12
	brne L16
L23:
	.dbline 69
; 					    (bMonth == 5) || (bMonth == 7)  || \
; 					    (bMonth == 8) || (bMonth == 10) || \
; 					    (bMonth == 12))
; 				{
	.dbline 70
; 					if(bDate > 31)
	ldi R24,31
	lds R2,_bDate
	cp R24,R2
	brsh L17
	.dbline 71
; 					{
	.dbline 72
; 						bDate = 1;
	ldi R24,1
	sts _bDate,R24
	.dbline 73
; 						bMonth++;
	lds R24,_bMonth
	subi R24,255    ; addi 1
	sts _bMonth,R24
	.dbline 74
; 					}
	.dbline 75
; 				}
	xjmp L17
L16:
	.dbline 76
; 				else if(bMonth == 2)
	lds R24,_bMonth
	cpi R24,2
	brne L26
	.dbline 77
; 				{
	.dbline 78
; 					if(bDate > 28)
	ldi R24,28
	lds R2,_bDate
	cp R24,R2
	brsh L28
	.dbline 79
; 					{
	.dbline 80
; 						if((bYear % 4) != 0)
	ldi R17,4
	lds R16,_bYear
	xcall mod8u
	tst R16
	breq L30
	.dbline 81
; 						{
	.dbline 82
; 							bDate = 1;
	ldi R24,1
	sts _bDate,R24
	.dbline 83
; 							bMonth++;
	lds R24,_bMonth
	subi R24,255    ; addi 1
	sts _bMonth,R24
	.dbline 84
; 						}
	xjmp L31
L30:
	.dbline 86
; 						else
; 						{
	.dbline 87
; 							if(bDate > 29)
	ldi R24,29
	lds R2,_bDate
	cp R24,R2
	brsh L32
	.dbline 88
; 							{
	.dbline 89
; 								bDate = 1;
	ldi R24,1
	sts _bDate,R24
	.dbline 90
; 								bMonth++;
	lds R24,_bMonth
	subi R24,255    ; addi 1
	sts _bMonth,R24
	.dbline 91
; 							}
L32:
	.dbline 92
; 						}
L31:
	.dbline 93
; 					}
L28:
	.dbline 94
; 				}
L26:
L17:
L10:
	.dbline 95
; 				if(bMonth > 12)
	ldi R24,12
	lds R2,_bMonth
	cp R24,R2
	brsh L34
	.dbline 96
; 				{
	.dbline 97
; 					bMonth = 1;
	ldi R24,1
	sts _bMonth,R24
	.dbline 98
; 					bYear++;
	lds R24,_bYear
	subi R24,255    ; addi 1
	sts _bYear,R24
	.dbline 99
; 				}
L34:
	.dbline 100
; 			}
L7:
	.dbline 101
;   		}
L5:
	.dbline 102
L3:
	.dbline -2
	.dbline 103
;   	}
; }
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 12
	jmp _Timer2_Interrupt
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\interrupt.c
	.dbfunc e Timer2_Interrupt _Timer2_Interrupt fV
	.even
_Timer2_Interrupt::
	xcall push_lset
	.dbline -1
	.dbline 113
; 
; //***************************************************************
; // Function    : Timer2_Interrupt
; // Input       : none
; // Output      : none
; // Description : Kernel Clock Interrupt Service Routine
; //***************************************************************
; #pragma interrupt_handler Timer2_Interrupt:4
; void Timer2_Interrupt(void)
; {
	.dbline 115
; 	//Clear Timer2 OCIF Flag
; 	TIFR  |= 0x80;
	in R24,0x38
	ori R24,128
	out 0x38,R24
	.dbline 116
;     TCNT2 = 0x00;
	clr R2
	out 0x24,R2
	.dbline 118
; 	//Update Task Status
; 	OS_Task_Update();
	xcall _OS_Task_Update
	.dbline -2
	.dbline 119
; }
L36:
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\interrupt.c
_bSecond::
	.blkb 1
	.dbsym e bSecond _bSecond c
_bMinute::
	.blkb 1
	.dbsym e bMinute _bMinute c
_bHour::
	.blkb 1
	.dbsym e bHour _bHour c
_bDate::
	.blkb 1
	.dbsym e bDate _bDate c
_bMonth::
	.blkb 1
	.dbsym e bMonth _bMonth c
_bYear::
	.blkb 1
	.dbsym e bYear _bYear c

⌨️ 快捷键说明

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