📄 interrupt.lst
字号:
C51 COMPILER V8.08 INTERRUPT 07/28/2007 11:42:16 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE INTERRUPT
OBJECT MODULE PLACED IN interrupt.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE interrupt.c OMF2 OPTIMIZE(6,SPEED) BROWSE VARBANKING DEBUG
line level source
1 #include "dp8051.h"
2 #include "config.h"
3 #include "absacc.h"
4 #include "constant.h"
5 #include "variable.h"
6 #include "function.h"
7 #include "sdhost.h"
8 #include "sssmp3_regs.h"
9 #include "fat.h"
10 #include "mp3_appl.h"
11 /************************************************
12 函 数 名: Timer0_ISR()
13 功 能:Timer0中断处理
14 说 明:
15 调 用:
16 全局变量:
17 入口参数:无
18 出口参数:无
19 返 回 值:无
20 ************************************************/
21 void Timer0_ISR(void) interrupt 1
22 {
23 1 //TR0 = 0;
24 1 TH0 = 0xD8;//0x3C;
25 1 TL0 = 0xF0;//0xB0;
26 1
27 1 Timer0_Flag = 1;
28 1
29 1 //TR0 = 1;
30 1 }
31 /************************************************
32 函 数 名: MP3_ISR()
33 功 能:MP3中断处理
34 说 明:
35 调 用:
36 全局变量:
37 入口参数:无
38 出口参数:无
39 返 回 值:无
40 ************************************************/
41 // MP3 Decoder Interrupt
42 void MP3_ISR(void) interrupt 8//EXTERNAL INT3, Vector address at 0x0043
43 {
44 1 MP3_ISR_Flag = 1;
45 1 tmpINT3 |= MP3_INT_FLAG & 0x3F;
46 1 MP3_INT_CLR = 0x3F;//Clear MP3 interrupt
47 1 }
48 /************************************************
49 函 数 名: MP3_deal()
50 功 能:MP3中断处理
51 说 明:
52 调 用:
53 全局变量:
54 入口参数:无
55 出口参数:无
C51 COMPILER V8.08 INTERRUPT 07/28/2007 11:42:16 PAGE 2
56 返 回 值:无
57 ************************************************/
58 // MP3 Decoder Interrupt
59 #pragma disable
60 void MP3_deal(void)
61 {
62 1 if(tmpINT3 & IFFC)//FrameLock_Clear
63 1 {
64 2 tmpINT3 &= ~IFFC;
65 2 return;
66 2 }
67 1
68 1 if(tmpINT3 & IFEMPTY)//PCM_FIFO_Empty
69 1 {
70 2 MP3_CTL |= (MP3_CLR | MUTE);//(1) Must follows procedure -> Reset for MP3 decoder
71 2 MP3_FIFOCTL = 0x00;//(2) PCM_output FIFO Disable
72 2 MP3_I2S_CTL = 0x00;//(3) I2S Disable
73 2 MP3_DMACTL = DMA_CLR;//(4)Clear DMA STM
74 2 MP3_DMACTL = 0x00;//(5)
75 2 tmpINT3 = 0;
76 2 //EIE = 0x00;//Disable INT3
77 2 //CLASS_D_DAC_CTL = (SUSPEND | PAUSE);// suspend & Mute Class-D
78 2 //MP3_INT_EN = 0x00;
79 2 varAl.SystemFlag |= END_FILEADDR_FLAG;
80 2 return;
81 2 }
82 1
83 1 if(tmpINT3 & IFL)//Left_DMA_Empty -> prepare Right DMA & move data into Left DMA buffer
84 1 {
85 2 // set-up MP3 Right DMA
86 2 MP3_DMASTART0700_RIGHT = 0x00;
87 2 MP3_DMASTART1508_RIGHT = 0x00;
88 2
89 2 MP3_DMALEN0700_RIGHT = 0xFF;
90 2 MP3_DMALEN1508_RIGHT = 0x01;//-> 0x0 ~ 0x01FF= 512 Bytes
91 2
92 2 //move data to Left DMA Buffer
93 2 if( FileData.dwMovedDataToBuffSizeCNT < FileData.dwFileDataSize)
94 2 {
95 3 if(varAl.SystemFlag & END_FILEADDR_FLAG)
96 3 MP3_CTL |= (MP3_CLR | MUTE);
97 3 else
98 3 {
99 4 MP3_DMACTL = DMA_READY_R;
100 4 FileData.dwMovedDataToBuffSizeCNT += CFatData.wBytesPerSec;
101 4 ReadSector(FileData.dwCurSecLba++,0x05);
102 4 }
103 3 }
104 2 else//FIFO Empty Flag can not rise-up if we disable FIFOCTL in follows...@0927
105 2 varAl.SystemFlag |= END_FILEADDR_FLAG;//prepare to disable DMA_CTL
106 2
107 2 tmpINT3 &= ~IFL;
108 2 return;
109 2 }
110 1
111 1 if(tmpINT3 & IFR)//Righ_DMA_Empty -> prepare Left DMA & move data into Right DMA Buffer
112 1 {
113 2 // set-up MP3 Left DMA
114 2 MP3_DMASTART0700_LEFT = 0x00;
115 2 MP3_DMASTART1508_LEFT = 0x00;
116 2
117 2 MP3_DMALEN0700_LEFT = 0xFF;
C51 COMPILER V8.08 INTERRUPT 07/28/2007 11:42:16 PAGE 3
118 2 MP3_DMALEN1508_LEFT = 0x01;//-> 0x0 ~ 0x01FF= 512 Bytes
119 2
120 2 if(FileData.dwMovedDataToBuffSizeCNT < FileData.dwFileDataSize)
121 2 {
122 3 if(varAl.SystemFlag & END_FILEADDR_FLAG)
123 3 MP3_CTL |= (MP3_CLR | MUTE);
124 3 else
125 3 {
126 4 MP3_DMACTL = DMA_READY_L;
127 4 FileData.dwMovedDataToBuffSizeCNT += CFatData.wBytesPerSec;
128 4 ReadSector(FileData.dwCurSecLba++,0x06);
129 4 }
130 3 }
131 2 else//FIFO Empty Flag can not rise-up if we disable FIFOCTL in follows...@0927
132 2 varAl.SystemFlag |= END_FILEADDR_FLAG;//prepare to disable DMA_CTL
133 2
134 2 tmpINT3 &= ~IFR;
135 2 return;
136 2 }
137 1
138 1 if(tmpINT3 & IFFS)//FrameLock_Set
139 1 {
140 2 CLASS_D_DAC_CTL = MP3_STATUS0 & 0x70;
141 2
142 2 MP3_FIFOCTL = FIFO_EN;//PCM_output FIFO enable
143 2 tmpINT3 &= ~IFFS;
144 2 return;
145 2 }
146 1
147 1 if(tmpINT3 & IFOK)//PCM_FIFO_Buffer_OK
148 1 {
149 2 //MP3_I2S_RATE = 0x07;
150 2 //MP3_I2S_DUTY = 0x04;
151 2 MP3_I2S_CTL = 0x00;//for Class-D in Parallel Mode
152 2 tmpINT3 &= ~IFOK;
153 2 return;
154 2 }
155 1 }
156
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 438 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
EDATA SIZE = ---- ----
HDATA SIZE = ---- ----
XDATA CONST SIZE = ---- ----
FAR CONST SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -