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

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

?? i2cmstr.asm

?? ADuc812的例程
?? ASM
字號:
;======================================================================
;
; Author        : ADI - Apps              www.analog.com/MicroConverter
;
; Date          : Oct 2000
;
; File          : i2Cmstr.asm
;
; Hardware      : ADuC812 (commented out = ADuC824/ADuC816)
;
; Description   : Code for a master in an I2C system. This code will
;               continuously receive and transmit a byte over the I2C
;               interface, then send the received byte out the UART,
;               then check if a character had been entered in the UART,
;               if so, it will send the ASCII value of the character
;               entered to the slave, the next time it transmits a byte.
;
; Reference     : Tech Note, uC001: "MicroConverter I2C Compatible
;               Interface" find it at www.analog.com/microconverter

;
;======================================================================

$MOD812                         ; use ADuC812 & 8052 predefined symbols
;$MOD816
;$MOD824

;____________________________________________________________________
                                   ; DEFINE VARIABLES IN INTERNAL RAM

BITCNT          DATA    30h     ; bit counter for I2C routines
SLAVEADD        DATA    31h     ; slave address for I2C routines
INPUT           DATA    32h     ; data recieved from the slave
OUTPUT          DATA    33h     ; data to be transmitted to slave

NOACK           BIT     00h     ; I2C no acknowledge flag
ERR		BIT     00h     ; I2C error flag

LED	        EQU     P3.4

;____________________________________________________________________
                                                  ; BEGINNING OF CODE
CSEG
ORG 0000h
	JMP MAIN
;____________________________________________________________________
                                                           ; INT0 ISR
ORG 0003h
        INC     OUTPUT
        RETI
;____________________________________________________________________
                                                       ; MAIN PROGRAM
ORG 0060h
MAIN:

; configure the UART ADuC812
        MOV     SCON,#52h       ; configure UART for 9600baud..
        MOV     TMOD,#20h       ; ..assuming 11.0592MHz crystal
        MOV     TH1,#-3
        SETB    TR1

; configure the UART ADuC824/ADuC816
;        MOV     RCAP2H,#0FFh   ; config UART for 9830baud
;        MOV     RCAP2L,#-5     ; (close enough to 9600baud)
;        MOV     TH2,#0FFh
;        MOV     TL2,#-5
;        MOV     SCON,#52h
;        MOV     T2CON,#34h

; configure & enable interrupts
        SETB    EX0             ; enable INT0
        SETB    IT0             ; INT0 edge triggered
        SETB    EA              ; allow all the interrupts

; initialise settings
        MOV     SLAVEADD,#88H   ; clear RW bit
        MOV     I2CCON,#0A8h    ; sets SDATA & SCLOCK, and
				; selects master mode
        MOV     OUTPUT,#0       ; TX 0 as default
        CLR     NOACK
	CLR     ERR
	

RXTXLOOP:    
; code for a read mode ( master recieves one byte from slave )
        CALL    RCVDATA         ; sends start bit
                                ; sends address byte
				; checks acknowledge
				; receives byte into ACC
                                ; checks ACK
				; sends stop bit

; code for write mode ( master transmits one byte to slave )
        CALL    SENDDATA        ; sends start bit
                                ; sends address byte
				; checks acknowledge
				; transmits ACC
                                ; checks ACK
				; sends stop bit

; Check for Error message
	JB	ERR,SENDERR	; if error, send error message

; Transmit received byte (INPUT) up UART to PC (hyperterminal)
	MOV	A,INPUT		; put value recieved into ACC
	CALL	SENDVAL		; send value recieved out the UART
	JMP	SKIP

SENDERR:
        CALL	ERROR		; send error message out the UART
	CLR     ERR		; clear error flag

SKIP:
	MOV	A,#10           ; send LF+CR
	CALL    SENDCHAR
	MOV	A,#13
	CALL    SENDCHAR

; Toggle LED (1s delay so that LED can be seen toggle)
	MOV	A, #10
	CALL    DELAY
	CPL	LED

; Check for new OUTPUT
	JNB     RI, RXTXLOOP    ; repeat (unless UART data received)


; If UART data received, then save to OUTPUT
        MOV     OUTPUT,SBUF     ; update OUTPUT byte to new value
        CLR     RI              ; must clear RI
        JMP     RXTXLOOP        ; back to main loop

	

;====================================================================
;                             SUBROUTINES
;====================================================================

;____________________________________________________________________
                                                           ; SENDDATA
; Send all the sequence to the slave (slave address + data (OUTPUT))

SENDDATA:
        ; send start bit
        CALL    STARTBIT        ; acquire bus and send slave address

        ; send slave address
        MOV     A, SLAVEADD
        CALL    SENDBYTE        ; sets NOACK if NACK received

        JB      NOACK, STOPSEND	; if no acknowledge send stop

        ; send OUTPUT byte
        MOV     A, OUTPUT
        CALL    SENDBYTE        ; sets NOACK if NACK received

STOPSEND:  
        CALL    STOPBIT         ; sends stop bit
        JNB     NOACK, SENDRET  ; if slave sends no-acknowedge send error
        SETB    ERR             ; sets the error flag
        SETB    I2CRS           ; this resets the I2C interface
SENDRET:
	 RET


;____________________________________________________________________
                                                            ; RCVDATA
; receives one or more bytes of data from an I2C slave device.

RCVDATA:   
	INC     SLAVEADD       	; Set RW for reception

        ; send start bit
        CALL    STARTBIT        ; acquire bus and send slave address

        ; send slave address
        MOV     A, SLAVEADD
        CALL    SENDBYTE        ; sets NOACK if NACK received

        DEC     SLAVEADD       	; put slave back in transmit mode

        JB      NOACK, STOPRCV  ; Check for slave not responding.
	CALL	DELAY5		; this lets slave get data ready 
        CALL    RCVBYTE         ; Receive next data byte.
        MOV     INPUT,A        	; Save data byte in buffer.
        
STOPRCV:      
        CALL    STOPBIT
        JNB     NOACK, RCVRET   ; if slave sends NACK send error
        SETB    ERR             ; sets the error flag
        SETB    I2CRS           ; this resets the I2C interface
RCVRET:	
        RET


;____________________________________________________________________
                                                           ; STARTBIT
; Sends the start bit to initiate an I2C communication

STARTBIT:

        SETB    MDE             ; enable SDATA pin as an output
        CLR     NOACK
        CLR     MDO             ; low O/P on SDATA 
        CALL    DELAY5          ; delay 5 Machine cycles
        CLR     MCO             ; start bit
        RET


;____________________________________________________________________
                                                            ; STOPBIT
; Sends the stop bit to end an I2C transmission

STOPBIT:

        SETB    MDE             ; to enable SDATA pin as an output
        CLR     MDO             ; get SDATA ready for stop
        SETB    MCO             ; set clock for stop
        CALL    DELAY5
        SETB    MDO             ; this is the stop bit
        RET



;____________________________________________________________________
                                                           ; SENDBYTE
; Send 8-bits in ACC to the slave

SENDBYTE:

        MOV     BITCNT,#8       ; 8 bits in a byte
        SETB    MDE             ; to enable SDATA pin as an output	
        CLR     MCO             ; make sure that the clock line is low
SENDBIT:
	RLC     A               ; put data bit to be sent into carry
        MOV     MDO,C           ; put data bit on SDATA line
        SETB    MCO             ; clock to send bit
        CLR     MCO             ; clear clock 
        DJNZ    BITCNT,SENDBIT	; jump back and send all eight bits

        CLR     MDE             ; release data line for acknowledge
        SETB    MCO             ; send clock for acknowledge
	CALL    DELAY5
        JNB     MDI,NEXT        ; this is a check for acknowledge
        SETB    NOACK           ; no acknowledge, set flag		
NEXT:   CLR     MCO             ; clear clock 
	RET



;____________________________________________________________________
                                                            ; RCVBYTE
; receives one byte of data from an I2C slave device.

RCVBYTE:
        MOV     BITCNT,#8       ; Set bit count.
        CLR     MDE             ; to enable SDATA pin as an input	
        CLR     MCO		; make sure the clock line is low
RCVBIT:  
	SETB    MCO		; clock to recieve bit
        CLR     MCO		; clear clock
        MOV     C,MDI           ; read data bit into carry.
        RLC     A               ; Rotate bit into result byte.

        DJNZ    BITCNT,RCVBIT   ; Repeat until all bits received.
				; recieved byte is in the accumulator

        SETB    MDE             ; Data pin of the master must be an..
                                ; ..output for the acknowledge	
        SETB    MDO             ; Send no acknowledge, last byte.
       
	SETB    MCO             ; Send no-acknowledge clock.
        CALL    DELAY5
        CLR     MCO		; clear clock
        RET


;____________________________________________________________________
                                                             ; DELAY5
; Short delay (5 machine cycles incl CALL time) for the main signals
; (SCLOCK , SDATA)

DELAY5:
        NOP
        RET

;____________________________________________________________________
                                                              ; DELAY
; DELAY ROUTINE FOR THE ADuC812/ADuC816/ADuC824
DELAY:			  ; Delays by 100ms * A

; ADuC812 100ms based on 11.0592MHz Core Clock
; ADuC824 100ms based on 1.573MHz Core Clock 

	  MOV   R2,A	   ; Acc holds delay variable
DLY0:	  MOV   R3,#200    ; Set up delay loop0
DLY1:	  MOV   R4,#229    ; Set up delay loop1
;DLY0:	  MOV	R3,#50     ; Set up delay loop0
;DLY1:	  MOV	R4,#131    ; Set up delay loop1
	  DJNZ  R4,$	   ; Dec R4 & Jump here until R4 is 0
                           ; wait here for 131*15.3us=2ms
	  DJNZ  R3,DLY1    ; Dec R3 & Jump DLY1 until R3 is 0
                           ; Wait for 50*2ms
	  DJNZ  R2,DLY0    ; Dec R2 & Jump DLY0 until R2 is 0
                           ; wait for ACC*100ms
	  RET		   ; Return from subroutine

;____________________________________________________________________
                                                              ; ERROR
; this subroutine is run if a NACK is recieved from the slave

ERROR:

	MOV 	A,#45h	
	ACALL	SENDCHAR	; send the letter E out the UART
	RET

;____________________________________________________________________
                                                           ; SENDCHAR
; sends ASCII value contained in A to UART

SENDCHAR:       

        JNB     TI,$            ; wait til present char gone
        CLR     TI              ; must clear TI
        MOV     SBUF,A
        RET


;____________________________________________________________________
                                                          ; HEX2ASCII
; converts A into the hex character representing the value of A's 
; least significant nibble

HEX2ASCII:      

        ANL     A,#00Fh
        CJNE    A,#00Ah,$+3
        JC      IO0030
        ADD     A,#007h
IO0030: ADD     A,#'0'
        RET

        
;____________________________________________________________________
                                                            ; SENDVAL
; converts the hex value of A into two ASCII chars, and then spits 
; these two characters up the UART. does not change the value of A.

SENDVAL: 
        PUSH    ACC
        SWAP    A
        CALL    HEX2ASCII
        CALL    SENDCHAR        ; send high nibble
        POP     ACC
        PUSH    ACC
        CALL    HEX2ASCII
        CALL    SENDCHAR        ; send low nibble
        POP     ACC

        RET

END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区日韩精品欧美| 欧美三级三级三级| 精品免费国产一区二区三区四区| 午夜精品久久久久| 欧美一级高清片在线观看| 日本va欧美va欧美va精品| 欧美一区二区免费| 久久国内精品自在自线400部| 欧美成人video| 国产成a人亚洲精| 亚洲欧美综合另类在线卡通| 日本韩国欧美一区| 日韩二区三区四区| 久久精品男人天堂av| 91一区二区在线| 亚洲v日本v欧美v久久精品| 欧美一级爆毛片| 国产mv日韩mv欧美| 一区二区三区成人| 日韩精品资源二区在线| 国产成a人无v码亚洲福利| 一区二区三区四区亚洲| 日韩一区二区三区四区| 懂色av中文一区二区三区| 亚洲免费av高清| 欧美成人女星排名| 99re热视频精品| 日本不卡一区二区三区| 国产精品嫩草影院av蜜臀| 欧美午夜精品一区| 国产精品自拍三区| 亚洲一区二区三区四区五区中文| 日韩欧美综合一区| 99在线精品观看| 久久99精品久久久久久| 一区二区三区成人在线视频| 久久婷婷一区二区三区| 欧美最新大片在线看| 黄色资源网久久资源365| 一区二区在线免费观看| 亚洲精品一区二区精华| 在线亚洲高清视频| 成人午夜电影久久影院| 视频一区中文字幕| 亚洲欧美视频在线观看视频| www成人在线观看| 欧美日韩视频在线一区二区| 国产91丝袜在线播放九色| 日韩av中文在线观看| 亚洲婷婷在线视频| 国产欧美一区视频| 日韩欧美一区在线| 欧亚洲嫩模精品一区三区| 不卡的av电影| 国产精品一二三区在线| 日本不卡一区二区| 婷婷综合五月天| 亚洲久草在线视频| 中文字幕一区视频| 国产精品系列在线| 久久久五月婷婷| 日韩欧美激情在线| 欧美高清一级片在线| 91老师片黄在线观看| 国产suv精品一区二区6| 紧缚捆绑精品一区二区| 麻豆视频观看网址久久| 亚洲mv大片欧洲mv大片精品| 亚洲伦理在线精品| 亚洲欧洲精品一区二区三区| 国产精品污网站| 国产色婷婷亚洲99精品小说| 精品国精品自拍自在线| 欧美日韩精品免费观看视频| 欧美性生活久久| 欧美图片一区二区三区| 91啪九色porn原创视频在线观看| 成人激情午夜影院| www.成人在线| 99精品国产热久久91蜜凸| va亚洲va日韩不卡在线观看| 丁香五精品蜜臀久久久久99网站| 国产高清精品在线| 成人午夜又粗又硬又大| 国产suv一区二区三区88区| 成人午夜精品一区二区三区| 成人免费福利片| 99精品视频一区| 91免费国产视频网站| 在线一区二区三区| 欧美视频在线观看一区| 欧美日韩国产一二三| 日韩午夜在线影院| 精品国产青草久久久久福利| 久久免费美女视频| 国产精品视频看| 亚洲乱码日产精品bd| 亚洲国产aⅴ天堂久久| 日韩不卡一二三区| 狠狠色丁香久久婷婷综合丁香| 国产精品影音先锋| 91丨porny丨在线| 欧美三区在线观看| 日韩精品资源二区在线| 中文字幕高清不卡| 亚洲综合色区另类av| 视频在线观看一区二区三区| 国产剧情一区在线| 色天使久久综合网天天| 欧美另类z0zxhd电影| 久久这里只有精品首页| 日韩美女精品在线| 日韩av网站在线观看| 懂色av一区二区三区免费观看| 在线观看av一区二区| 日韩精品一区二区三区在线播放 | 日产精品久久久久久久性色| 国内偷窥港台综合视频在线播放| 91在线看国产| 欧美一区二区免费| 亚洲免费av在线| 国内精品自线一区二区三区视频| 91在线码无精品| 精品久久久久久久久久久院品网 | 午夜精品福利视频网站| 国产精品99久久久| 欧美日韩精品欧美日韩精品| 国产拍揄自揄精品视频麻豆| 亚洲国产视频一区二区| 欧美少妇xxx| 亚洲精品在线一区二区| 亚洲一区影音先锋| 懂色中文一区二区在线播放| 欧美一级电影网站| 亚洲综合丁香婷婷六月香| 国产91精品免费| 日韩亚洲欧美一区| 亚洲午夜在线电影| 成人av资源在线观看| 日韩欧美精品在线| 丝袜美腿亚洲综合| 91毛片在线观看| 欧美激情一区在线观看| 久久99精品久久久久久久久久久久 | 欧美亚洲一区二区在线观看| 国产亚洲一区字幕| 精品一区二区三区蜜桃| 欧美视频在线一区二区三区 | 中文字幕一区在线观看视频| 黑人精品欧美一区二区蜜桃| 欧美日韩精品综合在线| 一区二区三区中文免费| av一二三不卡影片| 中文欧美字幕免费| 国产激情视频一区二区三区欧美| 日韩写真欧美这视频| 日韩专区中文字幕一区二区| 色婷婷国产精品| 一色桃子久久精品亚洲| 国产精品18久久久久久久久久久久| 欧美一区二区三区公司| 午夜视频一区二区三区| 欧美色大人视频| 亚洲1区2区3区视频| 欧美在线制服丝袜| 亚洲一区二区四区蜜桃| 欧洲另类一二三四区| 一区二区三区精品久久久| 在线观看日韩一区| 亚洲国产视频网站| 欧美日韩一区中文字幕| 午夜一区二区三区在线观看| 欧美三级电影在线观看| 午夜精品一区二区三区电影天堂| 91福利视频在线| 亚洲va韩国va欧美va| 7777精品伊人久久久大香线蕉经典版下载 | 成人ar影院免费观看视频| 国产日韩欧美精品在线| 成人深夜在线观看| 自拍偷拍欧美激情| 91国偷自产一区二区三区观看| 一区二区三区精品在线观看| 欧美性猛交一区二区三区精品| 午夜伊人狠狠久久| 精品伦理精品一区| 国产黄色成人av| 国产日韩av一区| 91偷拍与自偷拍精品| 亚洲一区二区三区四区五区黄| 亚洲在线一区二区三区| 欧美色综合网站| 捆绑变态av一区二区三区| 久久久青草青青国产亚洲免观| 粉嫩av一区二区三区| 亚洲免费色视频| 91精品婷婷国产综合久久| 九九国产精品视频| 亚洲欧美怡红院| 7777精品伊人久久久大香线蕉完整版 |