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

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

?? datalog.asm

?? 該應用軟件可以實現(xiàn)大多數(shù)單片機的仿真實驗
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
LIST p=18F458 ;PIC18F458 is the target processor

#include "P18f458.INC" ;Include header file

;====================================================================
; Macros
;--------------------------------------------------------------------

#define CLK_FREQ	D'20000000'
#define BAUD(x)	((CLK_FREQ/x)/D'64')-1

#define BRG_VAL	BAUD(D'9600')	;Baud rate configuration value

;====================================================================
; Uninitialised data
;--------------------------------------------------------------------

; General temps
TMP1		equ	0x000000
TMP2		equ	0x000001

; Current LBA sector address for reading/wring
ATA_A0		equ	0x000002
ATA_A1		equ	0x000003
ATA_A2		equ	0x000004
ATA_A3		equ	0x000005

; Counter used to track data words read/written to/from ATA
ATA_CNT		equ	0x000006

; High priority interrupt temps
STATUS_TEMP_H	equ	0x000007
WREG_TEMP_H	equ	0x000008
BSR_TEMP_H	equ	0x000009

; Low priority interrupt temps
STATUS_TEMP_L	equ	0x00000A
WREG_TEMP_L	equ	0x00000B
BSR_TEMP_L	equ	0x00000C

; Countdown number of timer 0 overflows
T0COUNT		equ	0x00000D

; End of logged data
END_POSL	equ	0x00000E
END_POSH	equ	0x00000F
END_ATA_A0	equ	0x000010
END_ATA_A1	equ	0x000011
END_ATA_A2	equ	0x000012
END_ATA_A3	equ	0x000013

; Temp for log data to be displayed
INPDATA_L	equ	0x000014
INPDATA_H	equ	0x000015

; Countdoen the number of log entries on a display line
OUT_COUNT	equ	0x000016

; ATA data transfer buffer
ATA_BUF		equ	0x000400
ATA_BUF_END	equ	0x000600

;====================================================================
; Interrupt vectors
;--------------------------------------------------------------------
	org	0x000000	;Reset vector
	bra	START

	org	0x000008	;High priority interrupt vector
	bra	INT_HIGH

	org	0x000018	;Low priority interrupt vector
	bra	INT_LOW

;====================================================================
; Main program
;--------------------------------------------------------------------
START
	rcall	INIT		; Program initialisation
	rcall	OUT_VERSION	; Version message
REHELP
	rcall	OUT_HELP	; Help message
MLOOP
	rcall	OUT_COMMAND	; Command prompt

	rcall	UART_Getch	; Get user input
	movwf	TMP1		; and store

	rcall	OUT_CRLF	; Newline
	movlw	'h'		; Check for help
	xorwf	TMP1, W
	bz	REHELP
	movlw	'H'
	xorwf	TMP1, W
	bz	REHELP
	movlw	'v'		; Check for version
	xorwf	TMP1, W
	bz	VERSION
	movlw	'V'
	xorwf	TMP1, W
	bz	VERSION
	movlw	'l'		; Check for log start
	xorwf	TMP1, W
	bz	LOG
	movlw	'L'
	xorwf	TMP1, W
	bz	LOG
	movlw	'd'		; Check for log dump
	xorwf	TMP1, W
	bz	DUMP
	movlw	'D'
	xorwf	TMP1, W
	bz	DUMP
	rcall	OUT_UNKNOWN	; Command is unknown
	goto	MLOOP

VERSION	rcall	OUT_VERSION	; Version message
	goto	MLOOP

LOG	rcall	OUT_LOG		; Log start message
	rcall	LOG_START	; Enable logging under interrupt
	rcall	UART_Getch	; Wait for any user input
	rcall	LOG_STOP	; Terminate logging
	rcall	OUT_CRLF
	goto	MLOOP

DUMP	rcall	OUT_DUMP	; Dump start message
	rcall	DUMP_ALL	; Dump data
	goto	MLOOP

;====================================================================
; Program initialisation
;--------------------------------------------------------------------
INIT
	;Setup serial comms
	movlw	b'10010000'	;Enable USART in continous receive mode
	movwf	RCSTA
	movlw	b'00100010'	;Async, TX enabled, low baud rate
	movwf	TXSTA
	movlw	BRG_VAL		;Set baud rate
	movwf	SPBRG
	movf	RCREG, W	;Flush out RX buffer
	movf	RCREG, W

	;Setup I/O ports
	clrf	PORTA
	setf	TRISA		; Port A all input
	clrf	PORTB
	setf	TRISB		; Port B all input, ATA D0-7
	clrf	PORTC
	movlw	B'11100000'	; Port C lower bits for ATA adressing
	movwf	TRISC
	movlw	B'00000111'	; Turn off comparitor
	movwf	CMCON		; On PORTD bits 0-3
	clrf	PORTD
	setf	TRISD		; Port D all input, ATA D8-15
	movlw	B'00000011'
	movwf	PORTE
	movlw	B'00000100'	; Port E lower two bits output for ATA
	movwf	TRISE		; read and write
	rcall	LOG_RESET	; Reset log pointers
	rcall	LOG_UPDATE
	return

;====================================================================
; High priority intrrupt handler
;--------------------------------------------------------------------
INT_HIGH
	movff	STATUS, STATUS_TEMP_H
	movff	BSR, BSR_TEMP_H
	movwf	WREG_TEMP_H

	bcf	INTCON, TMR0IF	;Clear timer 0 overflow interrupt flag
	decfsz	T0COUNT
	bra	INT_HIGH_EXIT1
	movlw	D'20'		;Only start conversion every 20 timer 0 timeouts
	movwf	T0COUNT
	bsf	ADCON0, GO	;Start ADC conversion

INT_HIGH_EXIT1
	movf	WREG_TEMP_H, W
	movff	BSR_TEMP_H, BSR
	movff	STATUS_TEMP_H, STATUS
	retfie

;====================================================================
; Low prority interrupt handler
;--------------------------------------------------------------------
INT_LOW
	movff	STATUS, STATUS_TEMP_L
	movff	BSR, BSR_TEMP_L
	movwf	WREG_TEMP_L

	movf	ADRESL, W	;Copy ADC result to buffer
	movwf	POSTINC2
	movf	ADRESH, W	;Copy ADC result to buffer
	movwf	POSTINC2

	bcf	PIR1, ADIF	;Clear ADC interrupt flag

	movlw	HIGH(ATA_BUF_END)	; Check if at end of buffer
	cpfseq	FSR2H
	bra	INT_LOW_EXIT1
	movlw	LOW(ATA_BUF_END)
	cpfseq	FSR2L
	bra	INT_LOW_EXIT1

	rcall	ATA_Block_Write
	rcall	ATA_A_INC
	lfsr	FSR2, ATA_BUF	; Point to start of data capture buffer

INT_LOW_EXIT1
	movf	WREG_TEMP_L, W
	movff	BSR_TEMP_L, BSR
	movff	STATUS_TEMP_L, STATUS
	retfie

;====================================================================
; Read a byte from the serial port
;--------------------------------------------------------------------
; W contains the byte that was received
;--------------------------------------------------------------------
UART_Getch
	clrwdt
	btfss	PIR1, RCIF	; Wait for RX buffer full
	bra	UART_Getch
	movf	RCREG, W
	return

;====================================================================
; Write a byte to the serial port
;--------------------------------------------------------------------
; W contains the byte to be sent
;--------------------------------------------------------------------
UART_Putch
	btfss	PIR1, TXIF	; Wait for TX buffer empty
	bra	UART_Putch
	movwf	TXREG
	return

;====================================================================
; Write null terminated string to serial port from
; program memory
;--------------------------------------------------------------------
; TBLPTR Points to the start of the string
;--------------------------------------------------------------------
UART_Puts_loop
	rcall	UART_Putch	
UART_Puts
	tblrd*+
	movf	TABLAT, W
	bnz	UART_Puts_loop
	return

;====================================================================
; Read a sector from the ATA drive
;--------------------------------------------------------------------
ATA_Block_Read
	rcall	ATA_BSY_Wait	; Drive ready for command
	rcall	ATA_Send_LBA
	movlw	0x20		; Read sectors command
	movwf	TMP1
	movlw	0x17		; ATA Command regsiter
	rcall	ATA_Reg8_Write
	clrf	ATA_CNT
	lfsr	FSR0, ATA_BUF
ATA_Block_Read_Lp1
	rcall	ATA_DRQ_Wait	; Drive data waiting
	movlw	0x10
	rcall	ATA_Reg16_Read
	movf	TMP1, W
	movwf	POSTINC0
	movf	TMP2, W
	movwf	POSTINC0
	incfsz	ATA_CNT
	bra	ATA_Block_Read_Lp1
	return

;====================================================================
; Write a sector too the ATA drive
;--------------------------------------------------------------------
ATA_Block_Write
	rcall	ATA_BSY_Wait	; Drive ready for command
	rcall	ATA_Send_LBA
	movlw	0x30		; Write sectors command
	movwf	TMP1
	movlw	0x17		; ATA Command regsiter
	rcall	ATA_Reg8_Write
	clrf	ATA_CNT
	lfsr	FSR0, ATA_BUF

ATA_Block_Write_Lp1
	rcall	ATA_DRQ_Wait	; Drive ready for data
	movf	POSTINC0, W
	movwf	TMP1
	movf	POSTINC0, W
	movwf	TMP2
	movlw	0x10
	rcall	ATA_Reg16_Write
	incfsz	ATA_CNT
	bra	ATA_Block_Write_Lp1

	return

;====================================================================
; Wait for DRQ to indicate drive is ready for data
;--------------------------------------------------------------------
ATA_DRQ_Wait
	movlw	0x17		; Drive status register
	rcall	ATA_Reg8_Read
	btfss	TMP1, 3		; DRQ bit (data request)
	bra	ATA_DRQ_Wait
	return

;====================================================================
; Wait for BSY to indicate drive is ready for a command
;--------------------------------------------------------------------
ATA_BSY_Wait
	movlw	0x17		; Drive status register
	rcall	ATA_Reg8_Read
	btfsc	TMP1, 7		; BSY bit (busy)
	bra	ATA_BSY_Wait
	return

;====================================================================
; Zero out LBA address
;--------------------------------------------------------------------
ATA_A_RESET
	clrf	ATA_A0		; Point to first sector
	clrf	ATA_A1
	clrf	ATA_A2
	clrf	ATA_A3
	return

;====================================================================
; Increment LBA address by one
;--------------------------------------------------------------------
ATA_A_INC
	incfsz	ATA_A0		; Point to next sector
	bra	ATA_A_INC_EXIT
	incfsz	ATA_A1
	bra	ATA_A_INC_EXIT
	infsnz	ATA_A2
	incf	ATA_A3
ATA_A_INC_EXIT
	return

;====================================================================
; Transfer LBA address to drive
;--------------------------------------------------------------------
ATA_Send_LBA
	movlw	0x01		; Sector count
	movwf	TMP1
	movlw	0x12		; ATA Sector count
	rcall	ATA_Reg8_Write
	movff	ATA_A0, TMP1
	movlw	0x13		; ATA LBA 0-7 register
	rcall	ATA_Reg8_Write
	movff	ATA_A1, TMP1
	movlw	0x14		; ATA LBA 8-15 register
	rcall	ATA_Reg8_Write
	movff	ATA_A2, TMP1
	movlw	0x15		; ATA LBA 16-23 register
	rcall	ATA_Reg8_Write
	movf	ATA_A3, W
	iorlw	B'01000000'	; Indicate address is LBA not CHS
	movwf	TMP1
	movlw	0x16		; ATA LBA 24-27 register
	rcall	ATA_Reg8_Write
	return
;====================================================================
; Read a register from the ATA drive (8 bit)
;--------------------------------------------------------------------
; W    contains address
; TMP1 contains data

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲伦理在线精品| 欧美xxxx老人做受| 国产精品麻豆网站| 不卡在线视频中文字幕| 亚洲免费在线观看视频| 欧美熟乱第一页| 免费在线观看精品| 久久婷婷国产综合精品青草| 国产成人av福利| 最近日韩中文字幕| 欧美人狂配大交3d怪物一区| 七七婷婷婷婷精品国产| 久久先锋影音av| 99久久99精品久久久久久| 亚洲一线二线三线久久久| 欧美人妖巨大在线| 国产在线视视频有精品| 国产精品国产精品国产专区不蜜| 色综合久久综合网欧美综合网| 亚洲一区欧美一区| 精品国产免费久久| 91视频国产资源| 美女网站色91| 亚洲日本免费电影| 欧美二区在线观看| 国产91精品免费| 婷婷丁香激情综合| 亚洲国产激情av| 69av一区二区三区| 国产在线播放一区| 性做久久久久久免费观看欧美| 精品国产一区二区三区四区四| 97se亚洲国产综合自在线观| 日韩成人免费电影| 亚洲少妇30p| 欧美videofree性高清杂交| 色婷婷激情一区二区三区| 久久成人免费网站| 亚洲精品国产精品乱码不99| 欧美xxx久久| 欧美色视频一区| 国产91在线观看| 奇米在线7777在线精品| 一区二区三区在线免费播放| 久久综合九色综合久久久精品综合 | 欧美午夜在线一二页| 精品午夜久久福利影院| 亚洲主播在线播放| 国产欧美一区二区在线观看| 欧美一区二区视频在线观看2022| 成人自拍视频在线观看| 老司机精品视频在线| 一区二区在线观看av| 中文字幕欧美日韩一区| 欧美精品一区二区三区蜜桃视频 | 欧美另类久久久品| av一区二区三区黑人| 久草在线在线精品观看| 日日夜夜一区二区| 一区二区免费看| 国产精品欧美一区二区三区| 欧美刺激午夜性久久久久久久| 欧美片在线播放| 欧日韩精品视频| 色婷婷综合久久久久中文| 成人毛片视频在线观看| 国产精品一区在线| 精品一区二区三区蜜桃| 久久国产日韩欧美精品| 视频在线观看91| 婷婷久久综合九色国产成人| 亚洲成人在线网站| 亚洲一级片在线观看| 亚洲精品成人在线| 一区二区三区在线观看网站| 亚洲精品视频观看| 一区二区在线免费观看| 一区二区在线观看免费| 亚洲自拍都市欧美小说| 亚洲在线免费播放| 亚洲第一电影网| 五月天中文字幕一区二区| 天天爽夜夜爽夜夜爽精品视频| 一级中文字幕一区二区| 亚洲高清免费视频| 经典三级一区二区| 国产美女在线精品| 成人永久看片免费视频天堂| 成年人国产精品| 91麻豆国产精品久久| 欧美专区日韩专区| 91精品午夜视频| 2020国产精品自拍| 国产日韩高清在线| 综合久久给合久久狠狠狠97色 | 在线中文字幕不卡| 欧美日韩成人在线| 日韩女优电影在线观看| 久久综合国产精品| 中文字幕乱码一区二区免费| 亚洲精品菠萝久久久久久久| 亚洲成av人片一区二区三区| 看电影不卡的网站| jizzjizzjizz欧美| 欧美日韩一级片网站| 日韩一级免费一区| 亚洲国产经典视频| 亚洲成av人片一区二区梦乃| 久久电影国产免费久久电影| 丰满岳乱妇一区二区三区| 97精品久久久午夜一区二区三区| 欧美日韩成人综合| 国产女同互慰高潮91漫画| 亚洲影视在线观看| 国内精品视频666| 一本久久综合亚洲鲁鲁五月天| 5858s免费视频成人| 国产欧美日韩在线视频| 亚洲自拍偷拍欧美| 国产成人亚洲精品狼色在线| 国产精品毛片高清在线完整版| 亚洲国产精品久久不卡毛片 | 欧美日韩国产高清一区| 精品久久久网站| 亚洲综合一区二区三区| 国产成a人亚洲| 欧美一区二区视频在线观看| 国产精品久久毛片av大全日韩| 日本视频一区二区三区| 97se亚洲国产综合自在线观| 精品sm在线观看| 亚洲午夜电影在线| 大尺度一区二区| 精品免费日韩av| 天天综合网 天天综合色| 成人黄色免费短视频| 欧美videos中文字幕| 亚洲国产精品久久久久婷婷884| 成人三级伦理片| 精品成人免费观看| 日韩国产在线观看| 欧美午夜精品一区二区蜜桃| 国产精品欧美综合在线| 激情另类小说区图片区视频区| 911精品国产一区二区在线| 亚洲乱码中文字幕| 高清国产一区二区| 2019国产精品| 免费国产亚洲视频| 欧美一级一区二区| 丝袜美腿亚洲色图| 亚洲日韩欧美一区二区在线| 国产精品77777| 精品少妇一区二区三区| 日韩黄色小视频| 欧美久久久影院| 亚洲国产日韩在线一区模特| 91免费国产在线| 亚洲情趣在线观看| 91一区二区在线| 亚洲人成网站在线| 91在线一区二区三区| 国产精品高清亚洲| heyzo一本久久综合| 国产精品网友自拍| 成人高清免费在线播放| 国产精品美女一区二区在线观看| 国产aⅴ综合色| 国产精品亲子乱子伦xxxx裸| 不卡视频免费播放| 亚洲美女免费在线| 欧美无人高清视频在线观看| 亚洲一区国产视频| 在线成人免费视频| 日韩—二三区免费观看av| 精品日韩av一区二区| 国产在线播精品第三| 国产精品午夜在线观看| 一本大道久久a久久精二百| 亚洲精品国产第一综合99久久| 欧美在线一区二区三区| 亚洲a一区二区| 日韩精品中文字幕一区| 国产成人av资源| 一区二区三区av电影 | 久久精品72免费观看| 日本伊人色综合网| 精品福利视频一区二区三区| 国产精品亚洲人在线观看| 专区另类欧美日韩| 欧美三级韩国三级日本三斤| 免费高清视频精品| 国产亚洲精品aa| 色婷婷综合久久久久中文一区二区| 亚洲777理论| 久久久久久久久蜜桃| 色欧美日韩亚洲| 久久国产精品72免费观看| 中文字幕亚洲区| 91精品在线观看入口|