亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? i2c.asm

?? DSP中用MCBSP模擬I2C接口的程序.其中DSP的型號是C5416
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
		.mmregs          	   
      	.include "time.inc"
      	.include "i2c.inc"
  		.include "bsp.inc"  
  		.include "i2creg.inc"      
  		
  		.def TIMER_INT
  		.def _I2CSTATUS,_ODBYTECTR,_IDBYTECTR,_ODPTR,_SLAVE_ADDR            
      	.def _init_gpio,_init_i2c,_write_i2c,_read_i2c
      	.ref _USER_FUNCTION
      	 
      	 ;***字節位屏蔽
		.sect "constant"
MASK    .int 01h			;Bit 0 
        .int 02h            ;Bit 1
        .int 04h            ;Bit 2
        .int 08h            ;Bit 3
        .int 10h            ;Bit 4
        .int 20h            ;Bit 5
        .int 40h            ;Bit 6 
        .int 80h            ;Bit 7 (MSB)
		
		.sect "program"				
;***************************************************************************
; 定時中斷服務函數
;***************************************************************************
TIMER_INT:								

;***寄存器壓棧***
	  NOP
	  NOP
	  PSHM	ST0
	  PSHM	ST1
	  PSHM	AR1
	  PSHM	AR2
	  PSHM	AR3
	  PSHM  AR4
	  PSHM  AR5
	  PSHM	AR6
	  NOP
	  NOP                  
	  RSBX	SXM                 		
	  RSBX	CPL                         
	  RSBX	HM                          
      LD	#_I2C_DP,DP      			 
      NOP
      NOP
      LD	_I2CSTATUS,A	    		;加載I2C狀態
      LD	A,B							;乘2
  	  AND   #K_DISABLE_I2C,B            ;檢測I2C是否使能
      BC    tint_disable_tint,BNEQ		;如果 =1, 結束
;***更新 前位SDA和SCL***      
      AND   #3H,A	 					
      LD    A,2,B 						
      ANDM  #0FFF0H,_I2CSTATUS       	
      LD	_I2CSTATUS,A	    		
      ADD	B,A								
      STL   A,_I2CSTATUS				
;***更新當前 SDA 和 SCL***
	  STM   #SPSA,AR2                	
	  ST	#PCR_SUB,*AR2+          	
  	  LD	#(K_DR_STAT_1|K_FSXP_1),B 	
  	  AND   #0FFFFH,A                 	
   	  AND	*AR2-,B					
  	  OR    B,-3,A						
  	  STL   A,_I2CSTATUS             
;***檢測開始/結束條件或操作模式 ***
  	  LD	A,B							
  	  AND   #K_CLKH_1,B					
  	  BC    tint_clk_go_high,BNEQ		
  	  LD	A,B							
  	  AND   #K_CLKL_1,B					
  	  BC    tint_clk_go_low,BNEQ		      
  	  LD	A,B							;乘2左移
  	  AND   #K_ACK_1,B 		   			
  	  BC	tint_ack,BNEQ				;應答?
  	  LD	A,B							;左移
  	  AND   #K_START_1,B    			;起始狀態?
  	  BC	tint_start,BNEQ				
  	  AND   #K_STOP_1,A   	 			;結束?
  	  BC	tint_stop,ANEQ				
  	  MVDK	_I2CSTATUS,TEMP_REG		
	  ANDM	#01100000B, TEMP_REG	 	
	  CMPM	TEMP_REG,#K_READ_FROM_SLAVE	
	  BC	tint_read_slave, TC         
	  									      
  	  CMPM  TEMP_REG,#K_WRITE_TO_SLAVE      
  	  BC	tint_write_slave, TC        
  	  									      
  	  B		tint_busy					


;**************************************************************************
;**************************************************************************    

;*****起始條件預處理*****
tint_start:  	                                                   
	  ;***讀當前或前一 SDA/SCL 幅值***
	  MVDK	_I2CSTATUS,TEMP_REG			
	  ANDM	#0FH, TEMP_REG	 			
	  CMPM	TEMP_REG,#1111B			    
	  BC	tint_start_start,TC         
	  CMPM	TEMP_REG,#1110B				
	                 ;1~~~              
	                 ;~1~~              
	                 ;~~1~              
	                 ;~~~0              
	  BC	tint_start_finish,TC        
	  B	    tint_start_invalid  		
;***開始起始條件***      
tint_start_start:
      CALL  pullSDA						;SDA->0 當 SCL=1
      ;***計時5us
      STM	#STOP_TIMER,TCR     		
      STM	#K_START_HOLD_TIME,PRD    	
      STM	#START_TIMER,TCR    		;開始計時
      B		tint_end_isr
;***結束起始條件***
tint_start_finish: 
	  CALL	pullSCL						
	  ANDM	#K_START_0,_I2CSTATUS		
	  ST	#1,TEMP_REG					   
      B		tint_end_isr				
;***狀態未知***
tint_start_invalid:
      CALL	releaseSDA					;釋放數據時鐘線,重新開始
      CALL	releaseSCL                                                
      B		tint_end_isr			    


;**************************************************************************
;**************************************************************************    


;******開始應答位部分*****      
tint_ack:
      ;***是否主接收模式?(read slave)
	  MVDK	_I2CSTATUS,TEMP_REG			
	  ANDM	#01100000B, TEMP_REG	 	
	  CMPM	TEMP_REG,#K_READ_FROM_SLAVE	
	  BC	tint_ack_not_rs, NTC       

      LD    _I2CSTATUS,A                
      AND	#K_ADDR_1,A                 
      BC	tint_ack_end_slave_addr,ANEQ

	  LD	POINTER,B					
	  BC	tint_ack_rs_first,BEQ				
	  CALL	releaseSDA
	  ANDM	#K_ACK_0,_I2CSTATUS		   
	  B		tint_end_isr	
tint_ack_rs_first:	  	  
	  ST	#1,POINTER      			  
	  LD	_I2CSTATUS,A				
	  AND   #K_STOP_1,A   	 			
  	  BC	tint_ack_stop,ANEQ			
  	  CALL	pullSDA					
  	  B		tint_ack_end                
tint_ack_stop:
	  CALL	releaseSDA					
	  B		tint_ack_end                
  	  
tint_ack_end_slave_addr:
      ANDM	#K_ADDR_0,_I2CSTATUS			 
                                        
  	  ;***主機發送模式 (write slave)***									
tint_ack_not_rs:	  
	  CALL	releaseSDA				                                               
      ST	#0,TEMP_REG						  
tint_ack_end:
      ORM	#K_CLKH_1,_I2CSTATUS	                                                                      	  
      B		tint_end_isr	
;***是否從給主應答***
tint_ack_test:                                   
      
	  ;ST    SPSA,AR2                	
	  ST	#PCR_SUB,*AR2+              
  	  LD	#K_FSXP_1,A   	            
      AND	*AR2-,A    
      BC	tint_ack_sda_low,AEQ        
      ;***從機沒應答***      
      ORM	#K_ERR_1,_I2CSTATUS			
      ST	#K_ERR_NOACK,ERRORCODE	
tint_ack_sda_low:      
      ;***從機應答***        
      ORM	#K_CLKL_1,_I2CSTATUS		
      ANDM	#(K_ACK_0&K_ADDR_0),_I2CSTATUS   
      STM	#STOP_TIMER,TCR     	
      STM	#K_SCL_HIGH,PRD    			
      STM	#START_TIMER,TCR    		
	  B		tint_end_isr    	       
	  

;**************************************************************************
;**************************************************************************    

      
;*****停止條件部分*****      
tint_stop:                              
	 
	  LD	TEMP1_REG,A					 
	  BC	tint_stop_continue,ANEQ	
	  CALL  pullSDA	                    
	  ST	#1,TEMP1_REG			     
      STM	#STOP_TIMER,TCR     		
      STM	#K_STOP_SETUP_TIME,PRD    
      STM	#START_TIMER,TCR    	
	  B		tint_end_isr	            
tint_stop_continue:	
	  MVDK	_I2CSTATUS,TEMP_REG		
	  ANDM	#03H,TEMP_REG	 			
	  ;***SCL=1 , SDA=0***  
	  CMPM	TEMP_REG,#10B				
	                 ;1~    	        
	                 ;~0        	              
	  BC	tint_stop_finish,TC        
	  ;*** SCL/SDA=0/0***
	  CMPM	TEMP_REG,#00B			
	                 ;0~    	       
	                 ;~0				
	  BC	tint_stop_invalid,NTC		
	 
      CALL  releaseSCL				
      NOP                 				
	  NOP                               
	  NOP                               
      ;***同步***
	  ;ST    SPSA,AR2                	
	  ST	#PCR_SUB,*AR2+              
  	  LD	#K_DR_STAT_1,A            
      AND	*AR2-,A    
      BC	tint_stop_scl_go_high_yes,ANEQ	

	  ;***定時 1us***
      B		tint_stop_invalid		
      
tint_stop_scl_go_high_yes:      
      ;***定時5us保持時間***
      STM	#STOP_TIMER,TCR     	
      STM	#K_STOP_SETUP_TIME,PRD    
      STM	#START_TIMER,TCR    		
      B		tint_end_isr
	  ;***SDA=0 ***
tint_stop_finish: 
	  CALL	releaseSDA				
	  ANDM	#K_STOP_0,_I2CSTATUS	
      ORM	#K_SUCC_1,_I2CSTATUS        
      NOP
      CALL  _USER_FUNCTION				
      NOP 
      B		tint_end_isr			
tint_stop_invalid:
      CALL	pullSDA   					
      CALL  releaseSCL                                              
	  STM	#STOP_TIMER,TCR     		
      STM	#K_PRD_VAL,PRD    			
      STM	#START_TIMER,TCR    		
      B		tint_end_isr	                
      
      
;**************************************************************************
;**************************************************************************      
      

;*****讀從機*****      
tint_read_slave:                                             
	  LD	_I2CSTATUS,A	    		
  	  AND   #K_ADDR_1,A					
      BC    tint_clk_go_high,AEQ		
      B		tint_write_slave			
;***當 SCL=1讀數據***      
tint_rs_mode:                                                      
	  ;***SETUP POINTERS TO CORRECT LOCATION***
	  LD    #IDPTR,B					;Load addr of out-data to B
      LD    _IDBYTECTR, -8,A			;Move current byte pointer
      STL	A,POINTER					;Store it to POINTER (1ST= BYTE 0)
      ADD   A,B							;Update current btye pointer
      STLM  B,AR4						;AR4 points to current byte
      
      CMPM	IDBITCTR,#7                 ;If IDBITCTR == 7, then it is new byte
      BC	tint_rs_not_new_byte,NTC	;else not new byte
      ST	#0,*AR4						;Clear the memory location
tint_rs_not_new_byte:      
	  ST	#PCR_SUB,*AR2+          	;Check current line status of SDA
  	  LD	#K_FSXP_1,B 				;Mask FSXP bit (bit 3) 
  	  AND	*AR2-,B						;check FSXP bit
      LD	B,-3,A	  					;Store to bit 0 of A
      
      LD	IDBITCTR,B   				;Check if end of byte,ie. bit ctr=0
      BC	tint_rs_bit_0,BEQ			;If bit ctr=0, goto new_byte
      SUB   #1,B                        ;else decrement bit ctr
      STL	B,TEMP1_REG                 ;Store to TEMP1 register

      RPT	TEMP1_REG                   ;Shift A (bitctr-1) times
      SFTL	A,1                         ;Result in A         
      ;***LSB NO NEED TO SHIFT***
tint_rs_bit_0:                          ;If bit 0, no need to shift
      LD	*AR4,B                      ;Load B with current read byte
      OR	A,B                         ;Combine and store to B
      AND   #0FFH,B                     ;Allows only byte
      STL	B,*AR4                      ;Store back to memory

      LD	IDBITCTR,A	                ;If BITCTR=0(LSB) ie. end of byte
      BC    tint_rs_next_byte,AEQ		;goto next byte
      SUB	#1,A,B						;Decrement A and store to B
      STL	B,IDBITCTR					;Store back to register
	  B	    tint_rs_next            	;Next bit
	  ;***TEST IF COME TO LAST BYTE***
tint_rs_next_byte:
	  ORM	#K_ACK_1,_I2CSTATUS			;Enable ACK flag
      ST	#7,IDBITCTR					;Start from MSB (initiate next byte)
      ADDM	#1,POINTER					;Increment POINTER
      ANDM	#0FFH,_IDBYTECTR			;Prepare num of btye to receive

	  LD	POINTER,B					;Load the incremental POINTER to B
      LD    _IDBYTECTR,A                ;Load num of byte to A
      SUB   B,A							;A=(Num of byte) - (current byte POINTER)     
      BC	tint_rs_no_more_byte,AEQ	;If=0,no more to receive
      LD	POINTER,8,A                 ;Shift 8 places forward
      LD	_IDBYTECTR,B				;
      OR	B,A							;Combine POINTER and num of btye to send                                                                 
      STL	A,_IDBYTECTR				;Update IDBYTECTR
      B		tint_rs_next				;Goto next byte
tint_rs_no_more_byte:
      ORM	#K_STOP_1,_I2CSTATUS		;Enable STOP condition
tint_rs_next:
	  ST	#0,POINTER					;Extra flag use in ack_rs
	  ORM	#K_CLKL_1,_I2CSTATUS		;Next TINT,enable releaseSCL	
      STM	#STOP_TIMER,TCR     		;stop timer
      STM	#K_SCL_HIGH,PRD    			;load PRD (interrupt at 5us)
      STM	#START_TIMER,TCR    		;start timer
      B		tint_end_isr				;

      
;**************************************************************************
;**************************************************************************      
 
      
;*****WRITE TO SLAVE SEQUENCES*****
tint_write_slave:                       

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91小视频免费观看| 日韩精品一区二区三区蜜臀| 日本高清无吗v一区| 日韩一区二区在线观看| 国产精品每日更新| 免费高清在线视频一区·| 色综合久久天天| 久久老女人爱爱| 蜜桃免费网站一区二区三区| 日本久久精品电影| 欧美国产丝袜视频| 久久爱www久久做| 欧美三级日韩在线| 日韩伦理av电影| 国产成人免费视| 欧美大片免费久久精品三p| 亚洲制服丝袜av| 91麻豆精品在线观看| 国产亚洲精品aa午夜观看| 麻豆国产精品视频| 在线电影院国产精品| 亚洲国产日韩综合久久精品| 色综合一区二区| 亚洲天堂2016| 一道本成人在线| 亚洲人成影院在线观看| 成人h精品动漫一区二区三区| 久久久激情视频| 国产伦精品一区二区三区免费迷| 亚洲精品在线一区二区| 九一九一国产精品| 精品理论电影在线| 韩国一区二区视频| 国产校园另类小说区| 国产精品一区二区免费不卡 | 久久午夜色播影院免费高清| 国产精品一区二区果冻传媒| 精品国产乱码久久久久久蜜臀| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美日本不卡视频| 青青草国产精品亚洲专区无| 日韩视频在线观看一区二区| 久久91精品久久久久久秒播| 久久免费视频一区| jizz一区二区| 亚洲一区二区三区四区不卡| 在线成人免费观看| 另类欧美日韩国产在线| 久久久激情视频| 波波电影院一区二区三区| 亚洲欧美日韩综合aⅴ视频| 在线日韩一区二区| 奇米精品一区二区三区四区 | 久久久亚洲午夜电影| 国产成人免费视频| 一区二区三区在线免费观看| 欧美猛男男办公室激情| 久久99精品国产.久久久久| 久久精品日韩一区二区三区| 99久久国产综合精品麻豆| 亚洲国产日韩精品| 久久夜色精品国产噜噜av | 国产精品女同互慰在线看 | 国产一区二区不卡| 亚洲视频一区在线观看| 4438x成人网最大色成网站| 国产一区二区精品久久99| 黄色日韩网站视频| 亚洲女女做受ⅹxx高潮| 欧美一级一区二区| aaa国产一区| 麻豆精品精品国产自在97香蕉 | 欧美本精品男人aⅴ天堂| youjizz久久| 久久精品国产亚洲aⅴ| 日韩一区中文字幕| 26uuu另类欧美| 欧美影院一区二区三区| 国产精品资源在线观看| 水蜜桃久久夜色精品一区的特点| 久久久影视传媒| 7777精品久久久大香线蕉| 成人av电影观看| 麻豆91在线播放| 亚洲国产一区视频| 一区在线观看免费| 久久在线免费观看| 欧美日韩高清一区| 99久久国产综合精品麻豆 | 亚洲国产中文字幕| 国产精品理伦片| 26uuu国产在线精品一区二区| 在线观看中文字幕不卡| 成人av综合一区| 精品一区二区三区在线视频| 亚洲电影视频在线| 亚洲欧美日韩国产成人精品影院| 精品福利视频一区二区三区| 欧美自拍偷拍午夜视频| 日韩欧美一区二区三区在线| 欧美亚洲愉拍一区二区| 99久久综合狠狠综合久久| 国产成人综合精品三级| 精品在线你懂的| 久久国产精品免费| 日韩av高清在线观看| 一个色妞综合视频在线观看| 椎名由奈av一区二区三区| 中文字幕欧美三区| 国产欧美中文在线| 国产拍揄自揄精品视频麻豆| 国产日韩欧美精品在线| 久久综合九色欧美综合狠狠| 日韩欧美国产午夜精品| 日韩欧美国产一二三区| 欧美v国产在线一区二区三区| 欧美一级欧美三级在线观看| 欧美一级片在线| 亚洲精品在线电影| 久久综合九色综合97婷婷女人| 精品福利av导航| 国产三级欧美三级| 国产欧美精品日韩区二区麻豆天美| 精品国产免费一区二区三区香蕉| 日韩欧美高清dvd碟片| 精品88久久久久88久久久| 久久先锋影音av| 国产精品久久毛片av大全日韩| 国产精品久久网站| 亚洲精品一卡二卡| 亚洲成人1区2区| 毛片av一区二区三区| 国产福利不卡视频| 99久久精品免费看| 欧美日韩中文国产| 欧美草草影院在线视频| 中文字幕巨乱亚洲| 亚洲最大的成人av| 另类小说综合欧美亚洲| 国产精品自拍毛片| 在线观看欧美日本| 欧美一级淫片007| 亚洲国产高清在线| 亚洲成人综合在线| 黄色成人免费在线| 一本高清dvd不卡在线观看| 欧美剧情电影在线观看完整版免费励志电影 | 欧美激情一区二区三区| 亚洲人成影院在线观看| 免费一区二区视频| 99久久er热在这里只有精品15| 欧美色视频在线观看| 欧美精品一区二区在线播放| 亚洲视频中文字幕| 久久99精品久久只有精品| 岛国精品在线播放| 在线播放欧美女士性生活| 欧美激情一区在线| 日韩和欧美一区二区| av一区二区三区黑人| 欧美一区二区三区四区久久| 国产精品久久久久久久第一福利| 日韩制服丝袜av| 94色蜜桃网一区二区三区| 欧美一区二区三区啪啪| 最新热久久免费视频| 九色|91porny| 欧美性淫爽ww久久久久无| 国产欧美日韩另类一区| 视频一区中文字幕国产| jlzzjlzz亚洲日本少妇| 日韩免费在线观看| 亚洲自拍另类综合| 97久久超碰国产精品电影| 精品福利一二区| 日本亚洲电影天堂| 在线免费不卡电影| 中文字幕日本不卡| 懂色av中文一区二区三区| 精品少妇一区二区三区视频免付费| 一区二区三区欧美久久| www.在线欧美| 久久无码av三级| 久久国产乱子精品免费女| 欧美日韩国产高清一区二区| 中文字幕字幕中文在线中不卡视频| 韩国在线一区二区| 精品久久久久久久久久久久久久久久久| 亚洲人成伊人成综合网小说| 粉嫩欧美一区二区三区高清影视| 日韩欧美一区二区在线视频| 午夜精品久久久久久久蜜桃app| 色欧美日韩亚洲| 亚洲欧洲99久久| 99热99精品| 亚洲日穴在线视频| 日本乱人伦aⅴ精品| 亚洲精品乱码久久久久久久久 | 在线中文字幕一区二区| 亚洲欧美偷拍另类a∨色屁股|