📄 iic_slave.lst
字号:
C51 COMPILER V7.01 IIC_SLAVE 12/01/2005 09:38:54 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE IIC_SLAVE
OBJECT MODULE PLACED IN IIC_slave.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE IIC_slave.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "mxREG52.H"
2 #include "i2cm.h"
3
4 sbit data_ready = P2^7;
5 extern unsigned char power_down_status;
6 extern unsigned char volumn_left_status ;
7 extern unsigned char volumn_right_status;
8 extern unsigned char program_left_status;
9 extern unsigned char program_right_status;
10 extern unsigned char menu_status;
11 extern unsigned char source_in_status;
12 extern unsigned char Power_status;
13
14 unsigned char Power_off_1;
15 unsigned char PWM_status;
16 bit PWM_flag;
17 unsigned char num = 0x00;
18 unsigned char idata DATA[2]={0x32};
19 unsigned char command;
20 extern unsigned char data keydata;
21 unsigned char keypad_received;
22 unsigned char RTC_receied;
23 unsigned char data RTCDATA[4];
24 unsigned char trans_done;
25 unsigned char idata Slave_Adr;
26 unsigned char idata FReceive_Done;
27 unsigned char idata FTransmitted_Done;
28 extern unsigned char action_ready_to_handle;
29 extern unsigned char Power_off;
30
31 //------------------------------------------------------
32 //i2c interrupt service routine
33 //------------------------------------------------------
34
35 void i2c_isr(void) interrupt 5
36 {
37 1 switch(S1STA)
38 1 {
39 2 case Bus_error:
40 2 transreg(Bus_error);
41 2 break;
42 2
43 2 //=====SLAVE RECEIVE mode===================
44 2 case SR_SLAW_ACK: //0x60
45 2 // transreg(SR_SLAW_ACK);
46 2 num = 0;
47 2 S1CON=RELEASE_BUS_ACK;
48 2 break;
49 2
50 2 case SR_DATA_ACK: //0x80
51 2 // transreg(SR_DATA_ACK);
52 2 if(Power_off_1 == 0x01)
53 2 {
54 3 if(S1DAT == 0xF1)
55 3 {
C51 COMPILER V7.01 IIC_SLAVE 12/01/2005 09:38:54 PAGE 2
56 4 Power_off = 0x01;
57 4 }
58 3 Power_off_1 = 0x00;
59 3 }
60 2 else
61 2 {
62 3 if(PWM_flag == 0)
63 3 {
64 4 if(S1DAT == 0x32)
65 4 {
66 5 keypad_received = 1;
67 5 }
68 4 else
69 4 if(S1DAT == 0xF0)
70 4 {
71 5 Power_off_1 = 0x01;
72 5 }
73 4 else
74 4 if(S1DAT == 0x37)
75 4 {
76 5 P2 = 0x55;
77 5 PWM_flag = 1;
78 5 }
79 4 }
80 3 else
81 3 {
82 4 PWM_status = S1DAT;
83 4 P2 = 0x57;
84 4 }
85 3 }
86 2 num++;
87 2 S1CON=RELEASE_BUS_ACK;
88 2 break;
89 2
90 2 case SR_STOP_ACK: //0xA0 receive has done
91 2 // transreg(SR_STOP_ACK);
92 2 S1CON=RELEASE_BUS_ACK;
93 2 FReceive_Done = 1;
94 2 break;
95 2 //==========================================
96 2 //=====SLAVE TRANSMITTER mode===============
97 2 case ST_SLAR_ACK: //0xA8
98 2 // transreg(ST_SLAR_ACK);
99 2 if(keypad_received)
100 2 {S1DAT = 0x32;
101 3 // transreg(S1DAT);
102 3 }
103 2 S1CON=RELEASE_BUS_ACK;
104 2 break;
105 2
106 2 case ST_DATA_ACK: //0xB8
107 2 // transreg(ST_DATA_ACK);
108 2 if(power_down_status==0x01)
109 2 {
110 3 S1DAT = 0x51;
111 3 // transreg(S1DAT);
112 3 power_down_status = 0x00;
113 3 }
114 2 if(menu_status == 0x01)
115 2 {
116 3 S1DAT = 0X55;
117 3 // transreg(S1DAT);
C51 COMPILER V7.01 IIC_SLAVE 12/01/2005 09:38:54 PAGE 3
118 3 menu_status = 0x00;
119 3 }
120 2 if(source_in_status == 0x01)
121 2 {
122 3 S1DAT = 0X56;
123 3 // transreg(S1DAT);
124 3 source_in_status = 0x00;
125 3 }
126 2 if(volumn_left_status == 0x01)
127 2 {
128 3 S1DAT = 0x57;
129 3 // transreg(S1DAT);
130 3 volumn_left_status = 0x00;
131 3 }
132 2 if(volumn_right_status == 0x01)
133 2 {
134 3 S1DAT = 0x58;
135 3 // transreg(S1DAT);
136 3 volumn_right_status = 0x00;
137 3 }
138 2 if(program_left_status == 0x01)
139 2 {
140 3 S1DAT = 0X59;
141 3 // transreg(S1DAT);
142 3 program_left_status = 0x00;
143 3 }
144 2 if(program_right_status == 0x01)
145 2 {
146 3 S1DAT = 0X54;
147 3 // transreg(S1DAT);
148 3 program_right_status = 0x00;
149 3 }
150 2 S1CON = RELEASE_BUS_ACK;
151 2 break;
152 2
153 2 case ST_STOP_NONACK : //0xC0
154 2 // transreg(ST_STOP_NONACK);
155 2 S1CON=RELEASE_BUS_ACK;
156 2 FTransmitted_Done =1;
157 2 data_ready = 0x01;
158 2 break;
159 2
160 2
161 2 //==========================================
162 2 }
163 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 279 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 ----
IDATA SIZE = 5 ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -