📄 i2c_intr.lst
字号:
C51 COMPILER V6.20c I2C_INTR 11/25/2004 21:23:53 PAGE 1
C51 COMPILER V6.20c, COMPILATION OF MODULE I2C_INTR
OBJECT MODULE PLACED IN I2C_Intr.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE I2C_Intr.c OPTIMIZE(7,SPEED) BROWSE DEFINE(KEIL) DEBUG OBJECTEXTEND CODE
stmt level source
1 #include "config.h"
2 #include "Function.h"
3 #include "IVS_Video_Board.h"
4
5 Uchar code SAA7111Config[SAA7111_REGISTER_NUMBER+1]={SAA7111_SUBADDRESS_START,
6 SAA7111_RESERVED_0, ANALOG_INPUT_CONTROL_1,
7 ANALOG_INPUT_CONTROL_2, ANALOG_INPUT_CONTROL_3,
8 ANALOG_INPUT_CONTROL_4, HORIZONTAL_SYNC_START,
9 HORIZONTAL_SYNC_STOP, SYNC_CONTROL,
10 LUMINANCE_CONTROL, LUMINANCE_BRIGHTNESS,
11 LUMINANCE_CONTRAST, CHROMINANCE_SATURATION,
12 CHROMA_HUE_CONTROL, CHROMINANCE_CONTROL,
13 SAA7111_RESERVED_1, FORMAT_DELAY_CONTROL,
14 OUTPUT_CONTROL_1, OUTPUT_CONTROL_2,
15 OUTPUT_CONTROL_3, SAA7111_RESERVED_2,
16 VBI_DATA_STREAM_START, VBI_DATA_STREAM_STOP,
17 MSBS_FOR_VBI_CONTROL};
18 Uchar code ADV7170Config[ADV7170_REGISTER_NUMBER+1]={ADV7170_SUBADDRESS_START,
19 MODE_REGISTER_0, MODE_REGISTER_1,
20 MODE_REGISTER_2, MODE_REGISTER_3,
21 MODE_REGISTER_4, ADV7170_RESERVED_0,
22 ADV7170_RESERVED_1, TIMING_MODE_REGISTER
-_0,
23 TIMING_MODE_REGISTER_1, SUBCARRIER_FREQUENCY
-_REGISTER_0,
24 SUBCARRIER_FREQUENCY_REGISTER_1,SUBCARRIER_FREQUENCY
-_REGISTER_2,
25 SUBCARRIER_FREQUENCY_REGISTER_3};
26 Uchar code PCF8563Config[PCF8563_REGISTER_NUMBER+1]={PCF8563_SUBADDRESS_START,
27 // PCF8563ControlStatusRegister1, PCF8563ControlStatu
-sRegister2,
28 // PCF8563SecondRegister, PCF8563MinuteRegister,
29 // PCF8563HourRegister, PCF8563DayRegister,
30 // PCF8563WeekRegister, PCF8563MonthRegister,
31 // PCF8563YearRegister, PCF8563MinuteAlarm,
32 // PCF8563HourAlarm, PCF8563DayAlarm,
33 // PCF8563WeekdayAlarm,
34 PCF8563ClockOut};//,
35 // PCF8563CounterClockTimerHigh, PCF8563CounterClockTimerLow};
36
37 void Enable_interrupt_I2C()
38 {
39 1 IEN1 |= 0x02;
40 1 }
41
42 Interrupt (I2C_Transfer(void), IRQ_I2C)
43 {
44 1
45 1 if(device == SAA7111)
46 1 {
47 2 switch(SSSTA)
48 2 {
49 3 case 0x08:SSDAT = SAA7111_WRTIE_ADDRESS;
50 3 SSCON &= 0xE7;
51 3 break;
C51 COMPILER V6.20c I2C_INTR 11/25/2004 21:23:53 PAGE 2
52 3 case 0x10:counter = 0;
53 3 SSDAT = SAA7111_WRTIE_ADDRESS;
54 3 SSCON &= 0xE7;
55 3 break;
56 3 case 0x18:SSDAT = SAA7111Config[counter++];
57 3 SSCON &= 0xC7;
58 3 break;
59 3 case 0x20:counter = 0;
60 3 SSCON |= 0x20;
61 3 SSCON &= 0xE7;
62 3 break;
63 3 case 0x28:if(counter < SAA7111_REGISTER_NUMBER+1)
64 3 {
65 4 SSDAT = SAA7111Config[counter++];
66 4 SSCON &= 0xC7;
67 4 }
68 3 else
69 3 {
70 4 device = ADV7170;
71 4 counter = 0;
72 4 SSCON |= 0x30;
73 4 SSCON &= 0xE7;
74 4 }
75 3 break;
76 3 case 0x30:counter = 0;
77 3 SSCON |= 0x20;
78 3 SSCON &= 0xE7;
79 3 break;
80 3 case 0x38:counter = 0;
81 3 SSCON |= 0x20;
82 3 SSCON &= 0xE7;
83 3 break;
84 3 default:IEN1 &= 0xFD;
85 3 }
86 2 }
87 1 else if(device == ADV7170)
88 1 {
89 2 switch(SSSTA)
90 2 {
91 3 case 0x08:SSDAT = ADV7170_WRITE_ADDRESS;
92 3 SSCON &= 0xE7;
93 3 break;
94 3 case 0x10:counter = 0;
95 3 SSDAT = ADV7170_WRITE_ADDRESS;
96 3 SSCON &= 0xE7;
97 3 break;
98 3 case 0x18:SSDAT = ADV7170Config[counter++];
99 3 SSCON &= 0xC7;
100 3 break;
101 3 case 0x20:counter = 0;
102 3 SSCON |= 0x20;
103 3 SSCON &= 0xE7;
104 3 break;
105 3 case 0x28:if(counter < ADV7170_REGISTER_NUMBER + 1)
106 3 {
107 4 SSDAT = ADV7170Config[counter++];
108 4 SSCON &= 0xC7;
109 4 }
110 3 else
111 3 {
112 4 device = PCF8563;
113 4 counter = 0;
C51 COMPILER V6.20c I2C_INTR 11/25/2004 21:23:53 PAGE 3
114 4 SSCON |= 0x10;
115 4 SSCON &= 0xD7;
116 4 }
117 3 break;
118 3 case 0x30:counter = 0;
119 3 SSCON |= 0x20;
120 3 SSCON &= 0xE7;
121 3 break;
122 3 case 0x38:counter = 0;
123 3 SSCON |= 0x20;
124 3 SSCON &= 0xE7;
125 3 break;
126 3 default:IEN1 &= 0xFD;
127 3 }
128 2 }
129 1 else if(device == PCF8563)
130 1 {
131 2 switch(SSSTA)
132 2 {
133 3 case 0x08:SSDAT = PCF8563_WRITE_ADDRESS;
134 3 SSCON &= 0xE7;
135 3 break;
136 3 case 0x10:counter = 0;
137 3 SSDAT = PCF8563_WRITE_ADDRESS;
138 3 SSCON &= 0xE7;
139 3 break;
140 3 case 0x18:SSDAT = PCF8563Config[counter++];
141 3 SSCON &= 0xC7;
142 3 break;
143 3 case 0x20:counter = 0;
144 3 SSCON |= 0x20;
145 3 SSCON &= 0xE7;
146 3 break;
147 3 case 0x28:if(counter < PCF8563_REGISTER_NUMBER + 1)
148 3 {
149 4 SSDAT = PCF8563Config[counter++];
150 4 SSCON &= 0xC7;
151 4 }
152 3 else
153 3 {
154 4 device = SAA7111;
155 4 counter = 0;
156 4 SSCON |= 0x10;
157 4 SSCON &= 0xD7;
158 4 }
159 3 break;
160 3 case 0x30:counter = 0;
161 3 SSCON |= 0x20;
162 3 SSCON &= 0xE7;
163 3 break;
164 3 case 0x38:counter = 0;
165 3 SSCON |= 0x20;
166 3 SSCON &= 0xE7;
167 3 break;
168 3 default:IEN1 &= 0xFD;
169 3 }
170 2 }
171 1 }
172
173
174 //Interrupt (timer(void),IRQ_T0)
175 //{
C51 COMPILER V6.20c I2C_INTR 11/25/2004 21:23:53 PAGE 4
176
177 // PCF8563WriteCommand(PCF8563ControlStatusRegister2Address,PCF8563ControlStatusRegister2Value);
178 // ReadTime();
179 // ShowTime();
180
181 //}
C51 COMPILER V6.20c I2C_INTR 11/25/2004 21:23:53 PAGE 5
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION Enable_interrupt_I2C (BEGIN)
; SOURCE LINE # 37
; SOURCE LINE # 38
; SOURCE LINE # 39
0000 43B102 ORL IEN1,#02H
; SOURCE LINE # 40
0003 22 RET
; FUNCTION Enable_interrupt_I2C (END)
; FUNCTION I2C_Transfer (BEGIN)
0000 C0E0 PUSH ACC
0002 C083 PUSH DPH
0004 C082 PUSH DPL
0006 C0D0 PUSH PSW
0008 75D000 MOV PSW,#00H
000B C007 PUSH AR7
; SOURCE LINE # 42
; SOURCE LINE # 45
000D E500 E MOV A,device
000F 6003 JZ $ + 5H
0011 020000 R LJMP ?C0002
; SOURCE LINE # 46
; SOURCE LINE # 47
0014 AF94 MOV R7,SSSTA
0016 EF MOV A,R7
0017 24F0 ADD A,#0F0H
0019 6021 JZ ?C0005
001B 24F8 ADD A,#0F8H
001D 6029 JZ ?C0006
001F 24F8 ADD A,#0F8H
0021 6036 JZ ?C0007
0023 24F8 ADD A,#0F8H
0025 603E JZ ?C0008
0027 24F8 ADD A,#0F8H
0029 6061 JZ ?C0011
002B 24F8 ADD A,#0F8H
002D 6069 JZ ?C0012
002F 2430 ADD A,#030H
0031 7071 JNZ ?C0013
; SOURCE LINE # 48
; SOURCE LINE # 49
0033 ?C0004:
0033 759548 MOV SSDAT,#048H
; SOURCE LINE # 50
0036 5393E7 ANL SSCON,#0E7H
; SOURCE LINE # 51
0039 020000 R LJMP ?C0040
; SOURCE LINE # 52
003C ?C0005:
003C 750000 E MOV counter,#00H
; SOURCE LINE # 53
003F 759548 MOV SSDAT,#048H
; SOURCE LINE # 54
0042 5393E7 ANL SSCON,#0E7H
; SOURCE LINE # 55
0045 020000 R LJMP ?C0040
; SOURCE LINE # 56
0048 ?C0006:
0048 AF00 E MOV R7,counter
C51 COMPILER V6.20c I2C_INTR 11/25/2004 21:23:53 PAGE 6
004A 0500 E INC counter
004C EF MOV A,R7
004D 900000 R MOV DPTR,#SAA7111Config
0050 93 MOVC A,@A+DPTR
0051 F595 MOV SSDAT,A
; SOURCE LINE # 57
0053 5393C7 ANL SSCON,#0C7H
; SOURCE LINE # 58
0056 020000 R LJMP ?C0040
; SOURCE LINE # 59
0059 ?C0007:
0059 750000 E MOV counter,#00H
; SOURCE LINE # 60
005C 439320 ORL SSCON,#020H
; SOURCE LINE # 61
005F 5393E7 ANL SSCON,#0E7H
; SOURCE LINE # 62
0062 020000 R LJMP ?C0040
; SOURCE LINE # 63
0065 ?C0008:
0065 E500 E MOV A,counter
0067 C3 CLR C
0068 9418 SUBB A,#018H
006A 5011 JNC ?C0009
; SOURCE LINE # 64
; SOURCE LINE # 65
006C AF00 E MOV R7,counter
006E 0500 E INC counter
0070 EF MOV A,R7
0071 900000 R MOV DPTR,#SAA7111Config
0074 93 MOVC A,@A+DPTR
0075 F595 MOV SSDAT,A
; SOURCE LINE # 66
0077 5393C7 ANL SSCON,#0C7H
; SOURCE LINE # 67
007A 020000 R LJMP ?C0040
007D ?C0009:
; SOURCE LINE # 69
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -