📄 interrupt.lst
字号:
C51 COMPILER V8.01 INTERRUPT 09/30/2007 11:14:55 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE INTERRUPT
OBJECT MODULE PLACED IN Interrupt.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Interrupt.c LARGE BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS
line level source
1 #define __INTERRUPT_H__
2 #include "Config.h"
3 /********************************************************************************************************
4 **函数名称:INTInit
5 **函数功能:中断初始化:初始化外部中断0,Timer2溢出中断
6 **输 入:无
7 **输 出:无
8 ********************************************************************************************************/
9 void INTInit(void)
10 {
11 1 //-----------------------------------------
12 1 //使用下降沿中断:翻转位和感应位分别为0:1
13 1 //-----------------------------------------
14 1 IPININV1 &= ~BIT0; //翻转位为0
15 1 IPINSENS1 |= BIT0; //感应位为1
16 1
17 1 //-----------------------------------------
18 1 //执行返回指令时自动清标志
19 1 //-----------------------------------------
20 1 INTSRC1 |= BIT0; //使用管脚中断
21 1 INTEN1 |= BIT0; //使能外部中断0(INT0)
22 1
23 1 //-----------------------------------------
24 1 //Timer2定时中断
25 1 //-----------------------------------------
26 1 INTEN2 |= BIT0; //使能Timer2中断
27 1 INTSRC2 &= ~BIT0; //选择Timer2为中断源
28 1
29 1 GENINTEN |= (BIT1 | BIT0); //全局使能
30 1 }
31
32 //****************************************************************************************************
33 //外部中断0,由按键产生
34 //****************************************************************************************************
35 void INT0ISR(void) interrupt 0
36 {
37 1 UART0_Printf("\n Key:INT0_GEN was pressed \n");
38 1 }
39
40 //****************************************************************************************************
41 //SPI发送空
42 //****************************************************************************************************
43 void SPITxEmpISR(void) interrupt 1
44 {
45 1
46 1 }
47
48 //****************************************************************************************************
49 //SPI接收有效/溢出
50 //****************************************************************************************************
51 void SPIRXAVOVISR(void) interrupt 2
52 {
53 1
54 1 }
55
C51 COMPILER V8.01 INTERRUPT 09/30/2007 11:14:55 PAGE 2
56 //****************************************************************************************************
57 //定时器0中断
58 //****************************************************************************************************
59 void Timer0ISR(void) interrupt 3
60 {
61 1
62 1 }
63
64 //****************************************************************************************************
65 //按键监视中断0,由按键产生
66 //****************************************************************************************************
67 /*
68 void PORTCHG0ISR(void) interrupt 4
69 {
70 PORTCHG &= ~BIT3; //清除标志位
71 }
72 */
73
74 //****************************************************************************************************
75 //UART0中断
76 //****************************************************************************************************
77 void UART0ISR(void) interrupt 5
78 {
79 1
80 1 }
81
82 //****************************************************************************************************
83 //UART1中断
84 //****************************************************************************************************
85 void UART1ISR(void) interrupt 6
86 {
87 1
88 1 }
89
90 //****************************************************************************************************
91 //Timer1中断
92 //****************************************************************************************************
93 void Timer1ISR(void) interrupt 7
94 {
95 1
96 1 }
97
98 //****************************************************************************************************
99 //Timer2中断
100 //****************************************************************************************************
101 //uchar LEDFlashType; //纪录LED当前闪烁方式的全局变量
102 uchar LEDSub; //当前闪烁方式下,正在输出的位
103 uchar LEDINTCnt;
104 uchar Key;
105
106 uchar LEDBuf[4][4] = {{~BIT7,~BIT6,~BIT5,~BIT4}, //闪亮方式1
107 {~BIT4,~BIT5,~BIT6,~BIT7}, //闪亮方式2
108 {~(BIT7 | BIT6),~(BIT5 | BIT4),~(BIT7 | BIT6),~(BIT5 | BIT4)}, //闪亮方式3
109 {~(BIT7 | BIT5),~(BIT6 | BIT4),~(BIT7 | BIT5),~(BIT6 | BIT4)}, //闪亮方式4
110 }; //每个循环LED的亮灭状态
111
112 void Timer2ISR(void) interrupt 8
113 {
114 1 T2CON &= ~BIT7; //清除溢出标志
115 1 TH2 = 0x3C;
116 1 TL2 = 0xB0; //重装
117 1 //---------------------------------------------------------------------------
C51 COMPILER V8.01 INTERRUPT 09/30/2007 11:14:55 PAGE 3
118 1 //控制LED的闪烁
119 1 //---------------------------------------------------------------------------
120 1 if(LEDINTCnt ++ >= 10) //0.5秒左右闪一次
121 1 {
122 2 LEDINTCnt = 0; //计数器清零
123 2
124 2 P6 &= 0x0F; //屏蔽无关位
125 2 P6 |= LEDBuf[LEDFlashType][LEDSub]; //设置LED的亮灭状态
126 2
127 2 if(++ LEDSub >= 4)
128 2 {
129 3 LEDSub = 0; //闪烁状态循环一次,注意LEDSta为由按键改变的变量
130 3 }
131 2
132 2 UART1_Printf("\n This is UART1! \n");
133 2 }
134 1 //---------------------------------------------------------------------------
135 1 //控制按键的读取,读键的频率要高于LED转换的频率
136 1 //关于按键的使用 还可以用中断,不过要保证检测按键时不能变化LED的端口
137 1 //---------------------------------------------------------------------------
138 1 Key = KeyRead(); //读取健值
139 1 if(Key != 0)
140 1 {
141 2 FlashSet(Key); //根据键值改变LED闪烁方式
142 2 UART0_Printf("\n Key%c is Pressed!\n",Key);
143 2 }
144 1 }
145
146 //****************************************************************************************************
147 //I2C中断
148 //****************************************************************************************************
149 void I2CISR(void) interrupt 9
150 {
151 1
152 1 }
153
154 //****************************************************************************************************
155 //UART冲突中断
156 //****************************************************************************************************
157 void UARTCollisionISR(void) interrupt 10
158 {
159 1
160 1 }
161
162 //****************************************************************************************************
163 //PWM中断
164 //****************************************************************************************************
165 void PWMISR(void) interrupt 11
166 {
167 1
168 1 }
169
170 //****************************************************************************************************
171 //PWM3:0Timer
172 //****************************************************************************************************
173 void PWM30ISR(void) interrupt 12
174 {
175 1
176 1 }
177
178 //****************************************************************************************************
179 //PWM3:0Timer
C51 COMPILER V8.01 INTERRUPT 09/30/2007 11:14:55 PAGE 4
180 //****************************************************************************************************
181 void PWM74ISR(void) interrupt 13
182 {
183 1
184 1 }
185
186 //****************************************************************************************************
187 //WDT/ARTITH
188 //****************************************************************************************************
189 void WDTARIISR(void) interrupt 14
190 {
191 1
192 1 }
193
194 //****************************************************************************************************
195 //按键监视中断1,由按键产生,但是端口由于与LED混用,现在已经不能用了
196 //****************************************************************************************************
197 /*
198 void PORTCHG1ISR(void) interrupt 15
199 {
200 SwitchDelay(1);
201 PORTCHG &= ~BIT7; //清除标志位
202 UART0_Printf("\n Key Pressed \n");
203 }
204 */
C51 COMPILER V8.01 INTERRUPT 09/30/2007 11:14:55 PAGE 5
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION INTInit (BEGIN)
; SOURCE LINE # 9
; SOURCE LINE # 10
; SOURCE LINE # 14
0000 53D6FE ANL IPININV1,#0FEH
; SOURCE LINE # 15
0003 43E601 ORL IPINSENS1,#01H
; SOURCE LINE # 20
0006 43E401 ORL INTSRC1,#01H
; SOURCE LINE # 21
0009 438801 ORL INTEN1,#01H
; SOURCE LINE # 26
000C 43A801 ORL INTEN2,#01H
; SOURCE LINE # 27
000F 53E5FE ANL INTSRC2,#0FEH
; SOURCE LINE # 29
0012 43E803 ORL GENINTEN,#03H
; SOURCE LINE # 30
0015 22 RET
; FUNCTION INTInit (END)
; FUNCTION INT0ISR (BEGIN)
0000 C0E0 PUSH ACC
0002 C0F0 PUSH B
0004 C083 PUSH DPH
0006 C082 PUSH DPL
0008 C0D0 PUSH PSW
000A 75D000 MOV PSW,#00H
000D C000 PUSH AR0
000F C001 PUSH AR1
0011 C002 PUSH AR2
0013 C003 PUSH AR3
0015 C004 PUSH AR4
0017 C005 PUSH AR5
0019 C006 PUSH AR6
001B C007 PUSH AR7
; SOURCE LINE # 35
; SOURCE LINE # 37
001D 7BFF MOV R3,#0FFH
001F 7A00 R MOV R2,#HIGH ?SC_0
0021 7900 R MOV R1,#LOW ?SC_0
0023 120000 E LCALL _UART0_Printf
; SOURCE LINE # 38
0026 D007 POP AR7
0028 D006 POP AR6
002A D005 POP AR5
002C D004 POP AR4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -