📄 interrupt.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 + -