⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c_intr.lst

📁 IIC中断程序ASM语言
💻 LST
📖 第 1 页 / 共 2 页
字号:
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 + -