📄 interrupt.lst
字号:
C51 COMPILER V7.50 INTERRUPT 11/06/2006 17:46:30 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE INTERRUPT
OBJECT MODULE PLACED IN Interrupt.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE Interrupt.c BROWSE DEBUG OBJECTEXTEND CODE
line level source
1 #include "Global.H"
2 #include "ClockTask.H"
3
4 //INT0_InterruptService
5 //=====================
6 void INT0_InterruptService(void) interrupt 0 using 1
7 {
8 1 //切换任务并设置任务工作在初入状态
9 1 //================================
10 1 TaskMode++;
11 1 if(TaskMode>3) TaskMode=1;
12 1
13 1 Menu1 = 1;
14 1 Menu2 = 1;
15 1 Menu3 = 1;
16 1 }
17
18 //INT1_InterruptService
19 //=====================
20 void INT1_InterruptService(void) interrupt 2 using 1
21 {
22 1 }
23
24 //Timer0_InterruptService
25 //=======================
26 void Timer0_InterruptService(void) interrupt 1 using 1
27 {
28 1 TH0 = 0x00;//重置定时器0计数初值
29 1 TL0 = 0x00;
30 1 }
31
32 //Timer1_InterruptService
33 //=======================
34 void Timer1_InterruptService(void) interrupt 3 using 1
35 {
36 1 }
37
38
39 UNINT Counter_1s = 0;//产生1秒信号的计数器
40 UNINT Counter_Flash = 0;//控制闪烁计数器
41 //Timer2_InterruptService
42 //=======================
43 void Timer2_InterruptService(void) interrupt 5 using 3
44 {
45 1 if(TF2)
46 1 {
47 2 //秒信号控制
48 2 //==========
49 2 Counter_1s++;
50 2 if(Counter_1s>=400)
51 2 {//1秒时间到
52 3 Counter_1s = 0;
53 3
54 3 SecondFlag = 1;//设置时钟秒信号标志
55 3 }
C51 COMPILER V7.50 INTERRUPT 11/06/2006 17:46:30 PAGE 2
56 2
57 2 //字符闪烁频率控制
58 2 //================
59 2 Counter_Flash++;
60 2 if(Counter_Flash == 200)
61 2 {
62 3 FlashControl = 2;//让闪烁字符消隐
63 3 }
64 2 else if(Counter_Flash>300)
65 2 {
66 3 FlashControl = 1;//让闪烁字符显示
67 3 Counter_Flash = 0;
68 3 }
69 2
70 2 //显示键盘控制
71 2 //============
72 2 DisplayKeyboardControl();
73 2
74 2 TF2 = 0;//清TF2中断标志
75 2 }//End of TF2
76 1
77 1 if(EXF2)
78 1 {//处理外部中断INT2
79 2 EXF2 = 0;//清EXF2中断标志
80 2 }
81 1 }
82
83 //SerialPort_InterruptService
84 //===========================
85 void SerialPort_InterruptService(void) interrupt 4 using 2
86 {
87 1 if(RI)
88 1 {//处理接收缓冲区满中断
89 2 RI = 0;//清RI中断标志
90 2 }
91 1
92 1 if(TI)
93 1 {//处理发送缓冲区空中断
94 2 TI = 0;//清TI中断标志
95 2 }
96 1 }
97
C51 COMPILER V7.50 INTERRUPT 11/06/2006 17:46:30 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION INT0_InterruptService (BEGIN)
0000 C0E0 PUSH ACC
0002 C0D0 PUSH PSW
; SOURCE LINE # 6
; SOURCE LINE # 10
0004 0500 E INC TaskMode
; SOURCE LINE # 11
0006 E500 E MOV A,TaskMode
0008 D3 SETB C
0009 9403 SUBB A,#03H
000B 4003 JC ?C0001
000D 750001 E MOV TaskMode,#01H
0010 ?C0001:
; SOURCE LINE # 13
0010 750001 E MOV Menu1,#01H
; SOURCE LINE # 14
0013 750001 E MOV Menu2,#01H
; SOURCE LINE # 15
0016 750001 E MOV Menu3,#01H
; SOURCE LINE # 16
0019 D0D0 POP PSW
001B D0E0 POP ACC
001D 32 RETI
; FUNCTION INT0_InterruptService (END)
; FUNCTION INT1_InterruptService (BEGIN)
; SOURCE LINE # 20
; SOURCE LINE # 22
0000 32 RETI
; FUNCTION INT1_InterruptService (END)
; FUNCTION Timer0_InterruptService (BEGIN)
; SOURCE LINE # 26
; SOURCE LINE # 28
0000 758C00 MOV TH0,#00H
; SOURCE LINE # 29
0003 758A00 MOV TL0,#00H
; SOURCE LINE # 30
0006 32 RETI
; FUNCTION Timer0_InterruptService (END)
; FUNCTION Timer1_InterruptService (BEGIN)
; SOURCE LINE # 34
; SOURCE LINE # 36
0000 32 RETI
; FUNCTION Timer1_InterruptService (END)
; FUNCTION Timer2_InterruptService (BEGIN)
0000 C0E0 PUSH ACC
0002 C0F0 PUSH B
0004 C083 PUSH DPH
0006 C082 PUSH DPL
0008 C0D0 PUSH PSW
000A 75D018 MOV PSW,#018H
; SOURCE LINE # 43
; SOURCE LINE # 45
000D 30CF45 JNB TF2,?C0006
; SOURCE LINE # 46
; SOURCE LINE # 49
C51 COMPILER V7.50 INTERRUPT 11/06/2006 17:46:30 PAGE 4
0010 0500 R INC Counter_1s+01H
0012 E500 R MOV A,Counter_1s+01H
0014 7002 JNZ ?C0016
0016 0500 R INC Counter_1s
0018 ?C0016:
; SOURCE LINE # 50
0018 C3 CLR C
0019 9490 SUBB A,#090H
001B E500 R MOV A,Counter_1s
001D 9401 SUBB A,#01H
001F 4008 JC ?C0007
; SOURCE LINE # 51
; SOURCE LINE # 52
0021 750000 R MOV Counter_1s,#00H
0024 750000 R MOV Counter_1s+01H,#00H
; SOURCE LINE # 54
0027 D200 E SETB SecondFlag
; SOURCE LINE # 55
0029 ?C0007:
; SOURCE LINE # 59
0029 0500 R INC Counter_Flash+01H
002B E500 R MOV A,Counter_Flash+01H
002D 7002 JNZ ?C0017
002F 0500 R INC Counter_Flash
0031 ?C0017:
; SOURCE LINE # 60
0031 64C8 XRL A,#0C8H
0033 4500 R ORL A,Counter_Flash
0035 7005 JNZ ?C0008
; SOURCE LINE # 61
; SOURCE LINE # 62
0037 750002 E MOV FlashControl,#02H
; SOURCE LINE # 63
003A 8014 SJMP ?C0009
003C ?C0008:
; SOURCE LINE # 64
003C D3 SETB C
003D E500 R MOV A,Counter_Flash+01H
003F 942C SUBB A,#02CH
0041 E500 R MOV A,Counter_Flash
0043 9401 SUBB A,#01H
0045 4009 JC ?C0009
; SOURCE LINE # 65
; SOURCE LINE # 66
0047 750001 E MOV FlashControl,#01H
; SOURCE LINE # 67
004A 750000 R MOV Counter_Flash,#00H
004D 750000 R MOV Counter_Flash+01H,#00H
; SOURCE LINE # 68
0050 ?C0009:
; SOURCE LINE # 72
0050 120000 E LCALL DisplayKeyboardControl
; SOURCE LINE # 74
0053 C2CF CLR TF2
; SOURCE LINE # 75
0055 ?C0006:
; SOURCE LINE # 77
0055 30CE02 JNB EXF2,?C0012
; SOURCE LINE # 78
; SOURCE LINE # 79
0058 C2CE CLR EXF2
; SOURCE LINE # 80
C51 COMPILER V7.50 INTERRUPT 11/06/2006 17:46:30 PAGE 5
; SOURCE LINE # 81
005A ?C0012:
005A D0D0 POP PSW
005C D082 POP DPL
005E D083 POP DPH
0060 D0F0 POP B
0062 D0E0 POP ACC
0064 32 RETI
; FUNCTION Timer2_InterruptService (END)
; FUNCTION SerialPort_InterruptService (BEGIN)
; SOURCE LINE # 85
; SOURCE LINE # 87
0000 309802 JNB RI,?C0013
; SOURCE LINE # 88
; SOURCE LINE # 89
0003 C298 CLR RI
; SOURCE LINE # 90
0005 ?C0013:
; SOURCE LINE # 92
0005 309902 JNB TI,?C0015
; SOURCE LINE # 93
; SOURCE LINE # 94
0008 C299 CLR TI
; SOURCE LINE # 95
; SOURCE LINE # 96
000A ?C0015:
000A 32 RETI
; FUNCTION SerialPort_InterruptService (END)
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 151 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -