📄 interruptc.lst
字号:
C51 COMPILER V7.08 INTERRUPTC 04/10/2005 22:25:31 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE INTERRUPTC
OBJECT MODULE PLACED IN interruptc.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE interruptc.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 // 中断服务程序
3 //--------------------------------------------------------------------
4 // SMBus中断服务程序
5 void SMBUS_ISR (void) interrupt 7
6 {
7 1 switch (SMB0STA)
*** ERROR C202 IN LINE 7 OF INTERRUPTC.C: 'SMB0STA': undefined identifier
8 1 {
9 2 // SMBus状态码SMB0STA寄存器
10 2 // 主发送器/接收器起始条件已发送
11 2 // 在该状态发送的COMMAND字的R/W位总是为0(W)
12 2 // 因为对于读和写操作来说都必须先写存储器地址
13 2
14 2 case SMB_START:
*** ERROR C202 IN LINE 14 OF INTERRUPTC.C: 'SMB_START': undefined identifier
15 2 SMB0DAT = (COMMAND & 0xFE); // 装入要访问的从器件的地址
*** ERROR C202 IN LINE 15 OF INTERRUPTC.C: 'SMB0DAT': undefined identifier
16 2 STA = 0; // 手动清除START位
*** ERROR C202 IN LINE 16 OF INTERRUPTC.C: 'STA': undefined identifier
17 2 break;
18 2
19 2 //主发送器/接收器重复起始条件已发送
20 2 // 该状态只应在读操作期间出现在存储器地址已发送并得到确认之后
21 2
22 2 case SMB_RP_START:
*** ERROR C202 IN LINE 22 OF INTERRUPTC.C: 'SMB_RP_START': undefined identifier
23 2 SMB0DAT = COMMAND; // COMMAND中应保持从地址 + R.
*** ERROR C202 IN LINE 23 OF INTERRUPTC.C: 'SMB0DAT': undefined identifier
24 2 AA=1;
*** ERROR C202 IN LINE 24 OF INTERRUPTC.C: 'AA': undefined identifier
25 2 STA = 0;
*** ERROR C202 IN LINE 25 OF INTERRUPTC.C: 'STA': undefined identifier
26 2 break;
27 2
28 2 // 主发送器从地址 + WRITE已发送收到ACK
29 2
30 2 case SMB_MTADDACK:
*** ERROR C202 IN LINE 30 OF INTERRUPTC.C: 'SMB_MTADDACK': undefined identifier
31 2 SMB0DAT = LOW_ADD; // 装入待写存储器地址的高字节
*** ERROR C202 IN LINE 31 OF INTERRUPTC.C: 'SMB0DAT': undefined identifier
32 2 break;
33 2
34 2 // 主发送器从地址 + WRITE已发送收到NACK
35 2 // 从器件不应答发送STOP + START重试
36 2
37 2 case SMB_MTADDNACK:
*** ERROR C202 IN LINE 37 OF INTERRUPTC.C: 'SMB_MTADDNACK': undefined identifier
38 2 STO = 1;
*** ERROR C202 IN LINE 38 OF INTERRUPTC.C: 'STO': undefined identifier
39 2 STA = 1;
*** ERROR C202 IN LINE 39 OF INTERRUPTC.C: 'STA': undefined identifier
40 2 break;
41 2
42 2 // 主发送器数据字节已发送收到ACK
C51 COMPILER V7.08 INTERRUPTC 04/10/2005 22:25:31 PAGE 2
43 2 // 该状态在写和读操作中都要用到BYTE_NUMBER看存储器地址状态 - 如果
44 2 // 只发送了HIGH_ADD则装入LOW_ADD如果LOW_ADD已发送检查COMMAND
45 2 // 中的R/W 值以决定下一状态
46 2
47 2 case SMB_MTDBACK:
*** ERROR C202 IN LINE 47 OF INTERRUPTC.C: 'SMB_MTDBACK': undefined identifier
48 2 if (COMMAND & 0x01) // 如果R/W=READ发送重复起始条件
*** ERROR C202 IN LINE 48 OF INTERRUPTC.C: 'COMMAND': undefined identifier
49 2 {
50 3 //reversec=30;
51 3 STA = 1;
*** ERROR C202 IN LINE 51 OF INTERRUPTC.C: 'STA': undefined identifier
52 3 STEP = 1;//0表示还未写地址,1表示地址已写,2表示读到第一个字节,3表示读到第一个字节。。。
*** ERROR C202 IN LINE 52 OF INTERRUPTC.C: 'STEP': undefined identifier
53 3 }
54 2 else
55 2 {
56 3 if(BYTE_NUMBER>0)
*** ERROR C202 IN LINE 56 OF INTERRUPTC.C: 'BYTE_NUMBER': undefined identifier
57 3 {
58 4 SMB0DAT = WORD; // 如果R/W=WRITE装入待写字节
*** ERROR C202 IN LINE 58 OF INTERRUPTC.C: 'SMB0DAT': undefined identifier
59 4 BYTE_NUMBER--;
*** ERROR C202 IN LINE 59 OF INTERRUPTC.C: 'BYTE_NUMBER': undefined identifier
60 4 }
61 3 else
62 3 {
63 4 STO = 1;
*** ERROR C202 IN LINE 63 OF INTERRUPTC.C: 'STO': undefined identifier
64 4 SM_BUSY = 0; // 释放SMBus
*** ERROR C202 IN LINE 64 OF INTERRUPTC.C: 'SM_BUSY': undefined identifier
65 4
66 4 }
67 3 }
68 2 break;
69 2
70 2 // 主发送器数据字节已发送收到NACK
71 2 // 从器件不应答发送STOP + START重试
72 2 case SMB_MTDBNACK:
*** ERROR C202 IN LINE 72 OF INTERRUPTC.C: 'SMB_MTDBNACK': undefined identifier
73 2 STO = 1;
*** ERROR C202 IN LINE 73 OF INTERRUPTC.C: 'STO': undefined identifier
74 2 STA = 1;
*** ERROR C202 IN LINE 74 OF INTERRUPTC.C: 'STA': undefined identifier
75 2 break;
76 2
77 2 // 主发送器竞争失败
78 2 // 不应出现如果出现重新开始传输过程
79 2 case SMB_MTARBLOST:
*** ERROR C202 IN LINE 79 OF INTERRUPTC.C: 'SMB_MTARBLOST': undefined identifier
80 2 STO = 1;
*** ERROR C202 IN LINE 80 OF INTERRUPTC.C: 'STO': undefined identifier
81 2 STA = 1;
*** ERROR C202 IN LINE 81 OF INTERRUPTC.C: 'STA': undefined identifier
82 2 break;
83 2
84 2
85 2 // 主接收器从地址 + READ 已发送收到ACK
86 2 // 设置为在下一次传输后发送NACK因为那将是最后一个字节唯一
87 2 case SMB_MRADDACK:
*** ERROR C202 IN LINE 87 OF INTERRUPTC.C: 'SMB_MRADDACK': undefined identifier
88 2 AA = 1; // 在应答周期ACK
C51 COMPILER V7.08 INTERRUPTC 04/10/2005 22:25:31 PAGE 3
*** ERROR C202 IN LINE 88 OF INTERRUPTC.C: 'AA': undefined identifier
89 2 break;
90 2
91 2
92 2 // 主接收器从地址 + READ 已发送收到NACK
93 2 // 从器件不应答发送重复起始条件重试
94 2 case SMB_MRADDNACK:
*** ERROR C202 IN LINE 94 OF INTERRUPTC.C: 'SMB_MRADDNACK': undefined identifier
95 2 STA = 1;
*** ERROR C202 IN LINE 95 OF INTERRUPTC.C: 'STA': undefined identifier
96 2 break;
97 2
98 2
99 2 // 收到数据字节ACK已发送
100 2 // 该状态不应出现因为AA已在前一状态被清0如果出现发送停止条件
101 2 case SMB_MRDBACK:
*** ERROR C202 IN LINE 101 OF INTERRUPTC.C: 'SMB_MRDBACK': undefined identifier
102 2 //RECVCHARS[STEP-1]= revolve(SMB0DAT);
103 2 RECVCHARS[STEP-1]= SMB0DAT;
*** ERROR C202 IN LINE 103 OF INTERRUPTC.C: 'STEP': undefined identifier
104 2 STEP++;
*** ERROR C202 IN LINE 104 OF INTERRUPTC.C: 'STEP': undefined identifier
105 2 if (STEP>(RECVLEN-1)) AA= 0;
*** ERROR C202 IN LINE 105 OF INTERRUPTC.C: 'STEP': undefined identifier
*** ERROR C202 IN LINE 105 OF INTERRUPTC.C: 'AA': undefined identifier
106 2 break;
107 2
108 2 // 收到数据字节NACK已发送
109 2 // 读操作已完成读数据寄存器后发送停止条件
110 2 case SMB_MRDBNACK:
*** ERROR C202 IN LINE 110 OF INTERRUPTC.C: 'SMB_MRDBNACK': undefined identifier
111 2 //RECVCHARS[STEP-1]= revolve(SMB0DAT);
112 2 STEP=0;
*** ERROR C202 IN LINE 112 OF INTERRUPTC.C: 'STEP': undefined identifier
113 2 STO = 1;
*** ERROR C202 IN LINE 113 OF INTERRUPTC.C: 'STO': undefined identifier
114 2 SM_BUSY = 0; // 释放SMBus
*** ERROR C202 IN LINE 114 OF INTERRUPTC.C: 'SM_BUSY': undefined identifier
115 2 break;
116 2
117 2 // 在本应用中所有其它状态码没有意义通信复位
118 2 default:
119 2 STO = 1; // 通信复位
*** ERROR C202 IN LINE 119 OF INTERRUPTC.C: 'STO': undefined identifier
120 2 SM_BUSY = 0;
*** ERROR C202 IN LINE 120 OF INTERRUPTC.C: 'SM_BUSY': undefined identifier
121 2 break;
122 2 }
123 1 SI=0; // 清除中断标志
*** ERROR C202 IN LINE 123 OF INTERRUPTC.C: 'SI': undefined identifier
124 1 }
125
126 void RBuf (void) interrupt 4 //using 3
127 {
128 1 unsigned char tchar;
129 1 EA=0;
*** ERROR C202 IN LINE 129 OF INTERRUPTC.C: 'EA': undefined identifier
130 1 if (RI)
*** ERROR C202 IN LINE 130 OF INTERRUPTC.C: 'RI': undefined identifier
131 1 {
132 2 TR2 = 0;
*** ERROR C202 IN LINE 132 OF INTERRUPTC.C: 'TR2': undefined identifier
C51 COMPILER V7.08 INTERRUPTC 04/10/2005 22:25:31 PAGE 4
133 2 TH2 =0xfe; //等待10个字节时须在16位模式下设置为0xf933
*** ERROR C202 IN LINE 133 OF INTERRUPTC.C: 'TH2': undefined identifier
134 2 TL2 =0xfb;
*** ERROR C202 IN LINE 134 OF INTERRUPTC.C: 'TL2': undefined identifier
135 2 //TR2 = 1;
136 2 if(DataNo<RBUFSIZE)
*** ERROR C202 IN LINE 136 OF INTERRUPTC.C: 'DataNo': undefined identifier
137 2 {
138 3 RData[Pos]=SBUF;
*** ERROR C202 IN LINE 138 OF INTERRUPTC.C: 'Pos': undefined identifier
139 3 Pos++;
*** ERROR C202 IN LINE 139 OF INTERRUPTC.C: 'Pos': undefined identifier
140 3 Pos%=RBUFSIZE;
*** ERROR C202 IN LINE 140 OF INTERRUPTC.C: 'Pos': undefined identifier
141 3 DataNo++;
*** ERROR C202 IN LINE 141 OF INTERRUPTC.C: 'DataNo': undefined identifier
142 3 }
143 2 else
144 2 {
145 3 tchar=SBUF;
*** ERROR C202 IN LINE 145 OF INTERRUPTC.C: 'SBUF': undefined identifier
146 3 TestVar=tchar;
*** ERROR C202 IN LINE 146 OF INTERRUPTC.C: 'TestVar': undefined identifier
147 3
148 3 }
149 2 RI=0;
*** ERROR C202 IN LINE 149 OF INTERRUPTC.C: 'RI': undefined identifier
150 2 }
151 1 if(TI)
*** ERROR C202 IN LINE 151 OF INTERRUPTC.C: 'TI': undefined identifier
152 1 {
153 2 TI=0;
*** ERROR C202 IN LINE 153 OF INTERRUPTC.C: 'TI': undefined identifier
154 2 if(DataSended>0)
*** ERROR C202 IN LINE 154 OF INTERRUPTC.C: 'DataSended': undefined identifier
155 2 {
156 3 if(DataSended<20)
*** ERROR C202 IN LINE 156 OF INTERRUPTC.C: 'DataSended': undefined identifier
157 3 {
158 4 SBUF=SData[DataSended];
*** ERROR C202 IN LINE 158 OF INTERRUPTC.C: 'SBUF': undefined identifier
159 4 DataSended++;
*** ERROR C202 IN LINE 159 OF INTERRUPTC.C: 'DataSended': undefined identifier
160 4 TestVar4=DataSended;
*** ERROR C202 IN LINE 160 OF INTERRUPTC.C: 'TestVar4': undefined identifier
161 4
162 4 }
163 3 else
164 3 {
165 4 SData[0] =0;
*** ERROR C202 IN LINE 165 OF INTERRUPTC.C: 'SData': undefined identifier
166 4 DataSended =0;
*** ERROR C202 IN LINE 166 OF INTERRUPTC.C: 'DataSended': undefined identifier
167 4 }
168 3 }
169 2 }
170 1 EA=1;
*** ERROR C202 IN LINE 170 OF INTERRUPTC.C: 'EA': undefined identifier
171 1 return;
172 1 }
173
174 void Timer0_ISR (void) interrupt 1 //DA REFRESH TIMER
C51 COMPILER V7.08 INTERRUPTC 04/10/2005 22:25:31 PAGE 5
175 {
176 1 DAC0L=DALOW;
*** ERROR C202 IN LINE 176 OF INTERRUPTC.C: 'DAC0L': undefined identifier
177 1 DAC0H=DAHIGH;
*** ERROR C202 IN LINE 177 OF INTERRUPTC.C: 'DAC0H': undefined identifier
178 1
179 1 }
180
181 void Timer2_ISR (void) interrupt 5 //串口超时检测
182 {
183 1 TR2 =0; //停计数器2
*** ERROR C202 IN LINE 183 OF INTERRUPTC.C: 'TR2': undefined identifier
184 1 TF2 =0; //清溢出标志位
*** ERROR C202 IN LINE 184 OF INTERRUPTC.C: 'TF2': undefined identifier
185 1 ES0=0;
*** ERROR C202 IN LINE 185 OF INTERRUPTC.C: 'ES0': undefined identifier
186 1 TestVar5=0x66;
*** ERROR C202 IN LINE 186 OF INTERRUPTC.C: 'TestVar5': undefined identifier
187 1 if(DataNo>0)
*** ERROR C202 IN LINE 187 OF INTERRUPTC.C: 'DataNo': undefined identifier
188 1 {
189 2 DataNo=0 ;
*** ERROR C202 IN LINE 189 OF INTERRUPTC.C: 'DataNo': undefined identifier
190 2 Pos=0;
*** ERROR C202 IN LINE 190 OF INTERRUPTC.C: 'Pos': undefined identifier
191 2 Head=0;
*** ERROR C202 IN LINE 191 OF INTERRUPTC.C: 'Head': undefined identifier
192 2 }
193 1 ES0=1;
*** ERROR C202 IN LINE 193 OF INTERRUPTC.C: 'ES0': undefined identifier
194 1 }
195
196 void Timer3_ISR (void) interrupt 14 //定时读取参数
197 {
198 1 TMR3CN &= ~(0x80); // clear TF3
*** ERROR C202 IN LINE 198 OF INTERRUPTC.C: 'TMR3CN': undefined identifier
199 1 S_SMBUS=1;
*** ERROR C202 IN LINE 199 OF INTERRUPTC.C: 'S_SMBUS': undefined identifier
200 1 }
C51 COMPILATION COMPLETE. 0 WARNING(S), 80 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -