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

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

?? hemon.asm

?? 單片機脈搏測量儀的電路設計和源碼
?? ASM
字號:
;****************************************************************
;* HEARTBEAT MONITOR - HeMon	Master of the Blutbahn !!!!	*
;* BY KEITH WILSON		by Iris Kistler			*
;* VERSION 1							*
;****************************************************************

	list p=16f84,r=hex	;microcontroller & base

	include	"reg16c84.inc"	;register memory mapping file
	include "hemon.inc"	;heartbeat definitions


;****************************************************************
;global variables
;****************************************************************
count		equ	0x0c		;general purpose counter
display3	equ	0x0d		;data for 7-segment display 100's
display2	equ	0x0e		;data for 7-segemnt display 10's
display1	equ	0x0f		;data for 7-segment display 1's
beatlsb		equ	0x10		;heartbeat counter,lsb
beatmsb		equ	0x11		;heartbeat counter,msb
aargb0		equ	0x12		;dividend,lsb
aargb1		equ	0x13		;dividend,msb
bargb0		equ	0x14		;divisor,lsb
bargb1		equ	0x15		;divisor,msb
remb0		equ	0x16		;remainder,lsb
remb1		equ	0x17		;remainder,msb
timera		equ	0x18		;general purpose timer
timerb		equ	0x19		;general purpose timer
timerc		equ	0x1a		;general purpose timer
timerd		equ	0x1b		;general purpose timer

;****************************************************************
;reset vector
;****************************************************************
reset:	org	0x00			;reset vector address	
	goto	start			;start program execution
	

start:	org 	0x06			;start of program
	goto	Initialisation


;****************************************************************
; LED DISPLAY DECODER FROM BINARY TO 7-SEGMENT
;****************************************************************
LedDecoder:
	addwf	pcl,f								;W   DISPLAY
	retlw	LED_SEGa|LED_SEGb|LED_SEGc|LED_SEGd|LED_SEGe|LED_SEGf		;0 - "0"
	retlw	LED_SEGb|LED_SEGc						;1 - "1"
	retlw	LED_SEGa|LED_SEGb|LED_SEGd|LED_SEGe|LED_SEGg			;2 - "2"
	retlw	LED_SEGa|LED_SEGb|LED_SEGc|LED_SEGd|LED_SEGg			;3 - "3"
	retlw	LED_SEGb|LED_SEGc|LED_SEGf|LED_SEGg				;4 - "4"
	retlw	LED_SEGa|LED_SEGc|LED_SEGd|LED_SEGf|LED_SEGg			;5 - "5"
	retlw	LED_SEGa|LED_SEGc|LED_SEGd|LED_SEGe|LED_SEGf|LED_SEGg		;6 - "6"
	retlw	LED_SEGa|LED_SEGb|LED_SEGc					;7 - "7"
	retlw	LED_SEGa|LED_SEGb|LED_SEGc|LED_SEGd|LED_SEGe|LED_SEGf|LED_SEGg	;8 - "8"
	retlw	LED_SEGa|LED_SEGb|LED_SEGc|LED_SEGd|LED_SEGf|LED_SEGg		;9 - "9"
	retlw	LED_BLANK							;10- " "

;****************************************************************
;Name		: Initialisation
;Description	: system initialisation and mainloop
;Inputs		: none
;Outputs	: none
;****************************************************************
Initialisation:

;system initialisation

;port A and port B initialisation

	bcf	status,rp1		;select bank1 register
	bsf	status,rp0

	movlw	PORTA_CONFIG1		;porta configuration
	movwf	trisa			
	movlw	PORTB_CONFIG1		;portb configuration
	movwf	trisb

	bcf	status,rp0		;select bank0 registers

	movlw	0x00			;disable all displays
	movwf	porta			

;****************************************************************
;Name		: Mainloop
;Description	: measure and display heartbeat
;Inputs		: none
;Outputs	: none
;****************************************************************
Mainloop:
	call	Heartbeat		;measure heartbeat
	call	Convert			;convert to bpm
	call	Display			;show on display

	goto	Mainloop		;endless loop

;****************************************************************
;Name		: Heartbeat
;Description	: measures the time between two heartbeat signals.
;		: Triggered on rising-edge of signal, then measures
;		: amount of milli-seconds before next rising-edge. 
;Inputs		: none
;Outputs	: beatlsb,beatmsb = length between two heartbeats
;		: in milli-seconds
;****************************************************************
Heartbeat:
	btfss	porta,HEARTBEAT_SENSOR	;wait until signal goes high
	goto	Heartbeat	
	call	Delay150		;wait 150msec - wait until signal has gone low

	clrf	beatmsb			;preset beat registers with 150msec
	movlw	0x96
	movwf	beatlsb
	
HL1:	call	Delay1			;wait 1msec
	incf	beatlsb,w		;increment beatlsb by 1msec
	movwf	beatlsb
	btfsc	status,z		;lsb rollover? 
	incf	beatmsb,f		;yes -increment msb
	btfss	porta,HEARTBEAT_SENSOR	;keep looping till signal goes back high
	goto	HL1	

	return		

;****************************************************************
;Name		: Convert
;Description	: convert the measured heartbeat from milliseconds
;		: to beats-per-minute. (maybe there's a quicker way!)
;Inputs		: beatlsb, beatmsb
;Outputs	: display1,display2,display3 = contain hearbeat
;		: in bcd format
;****************************************************************
Convert:
	;calculate bpm = 60000/beat (lsb and msb)
	
	;Make dividend 60000 == 0xEA60
	movlw	0xea		;msb
	movwf	aargb1
	movlw	0x60		;lsb
	movwf	aargb0	

	;Get measured heartbeat values, as divisor
	movf	beatmsb,w	;msb
	movwf	bargb1
	movf	beatlsb,w	;lsb
	movwf	bargb0

	clrf	remb0		;initialise remainder registers
	clrf	remb1

	; do an unsigned 16-bit by 16-bit division
	movlw	0x10
	movwf	count

Lu16:	rlf	aargb1,w
	rlf	remb0,f
	rlf	remb1,f
	movf	bargb0,w
	subwf	remb0,f
	movf	bargb1,w
	btfss	status,c
	incfsz	bargb1,w
	subwf	remb1,f	
	btfsc	status,c
	goto	uok16
	movf	bargb0,w
	addwf	remb0,f
	movf	bargb1,w
	btfsc	status,c
	incfsz	bargb1,w
	addwf	remb1,f
	bcf	status,c

uok16:	rlf	aargb0,f
	rlf	aargb1,f	
	decfsz	count,f
	goto	Lu16

	;convert the lsb result of the previous division to unpacked bcd
	movlw	0x08			;an 8-bit division
	movwf	count

	movlw	0x0a			;divide the previous lsb result by 10
	movwf	bargb0
	clrf	remb0			;initialise remainder

Lu8:	rlf	aargb0,w
	rlf	remb0,f
	movf	bargb0,w
	subwf	remb0,f	
	btfsc	status,c
	goto 	uok8
	addwf	remb0,f
	bcf	status,c
uok8:	rlf	aargb0,f
	decfsz	count,f
	goto	Lu8	

	movlw	0x0a			;3rd bcd digit - 100's is blank(if not changed further down code!)
	movwf	display3		
	
	movf	remb0,w
	movwf	display1		;1st bcd digit - 1's
	
	movf	aargb0,w		
	movwf	display2		;2nd bcd digit - 10's(if not changed further down code!)
	
	sublw	0x09			;is the quotient >=10?
	bnc	$+2			;yes -quotient is >=10, so divide by 10 again!
	return				;go back

	movlw	0x08			;an 8-bit division
	movwf	count
	
	movlw	0x0a			;divide the previous lsb result by 10
	movwf	bargb0
	clrf	remb0			;initialise remainder

Lu81:	rlf	aargb0,w
	rlf	remb0,f
	movf	bargb0,w
	subwf	remb0,f	
	btfsc	status,c
	goto 	uok81
	addwf	remb0,f
	bcf	status,c
uok81:	rlf	aargb0,f
	decfsz	count,f
	goto	Lu81
	
	movf	remb0,w
	movwf	display2		;2nd bcd digit - 10's
	
	movf	aargb0,w
	movwf	display3		;3rd bcd digit - 100's

	return				;go back

;****************************************************************
;Name		: Display
;Description	: updates display with current measurement
;Inputs		: display1 - 7-segment display 1's
;		: display2 - 7-segment display 10's
;		: display3 - 7-segment display 100's
;Outputs	: none
;****************************************************************
Display: 
	movf	display1,w		;convert bcd to 7-segment
	call	LedDecoder
	movwf	display1

	movf	display2,w
	call	LedDecoder
	movwf	display2

	movf	display3,w
	call	LedDecoder
	movwf	display3

	movlw	0x4			;update display for a little while
	movwf	timerc

DL2:	movlw	0xff
	movwf	timerd

DL1:	clrf	porta
	bsf	porta,LED_DIGIT1
	movf	display1,w
	movwf	portb
	call	Delay1

	clrf	porta
	bsf	porta,LED_DIGIT2
	movf	display2,w
	movwf	portb
	call	Delay1

	clrf	porta
	bsf	porta,LED_DIGIT3
	movf	display3,w
	movwf	portb
	call	Delay1
	clrf	porta

	decfsz	timerd,f
	goto	DL1
	decfsz	timerc,f
	goto	DL2


	return				;go back

;****************************************************************
;Name		: Delay
;Description	: causes a delay of 1msec
;Inputs		: none
;Outputs	: none
;****************************************************************
Delay1:	
	movlw	0x02			;number of wait states
	movwf	timerb	
L2:	
	movlw	0xa5			;number of wait states
	movwf	timera
L3:	decfsz	timera,f
	goto	L3
	decfsz	timerb,f
	goto	L2
	
	return				;go back


;****************************************************************
;Name		: Delay
;Description	: causes a delay of 150msec
;Inputs		: none
;Outputs	: none
;****************************************************************
Delay150:	
	movlw	0xc3			;number of wait states
	movwf	timerb	
L4:	
	movlw	0xff			;number of wait states
	movwf	timera
L5:	decfsz	timera,f
	goto	L5
	decfsz	timerb,f
	goto	L4
	
	return				;go back



	end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产电影在线观看| 一区二区三区免费看视频| 一本到不卡免费一区二区| 免播放器亚洲一区| 中文字幕制服丝袜成人av| 91麻豆精品国产自产在线观看一区 | 成人国产视频在线观看| 亚洲va欧美va国产va天堂影院| 亚洲精品乱码久久久久久日本蜜臀| 7878成人国产在线观看| a在线欧美一区| 国产精品1区二区.| 青青草97国产精品免费观看| 一区二区久久久| 国产精品成人免费精品自在线观看| 日韩欧美视频在线| 欧美精品一二三| 色美美综合视频| 成人av网站在线观看| 国产精品综合二区| 另类小说图片综合网| 午夜欧美电影在线观看| 亚洲精品视频免费看| 国产精品热久久久久夜色精品三区 | 亚洲精品国产一区二区三区四区在线 | 亚洲一二三级电影| 亚洲乱码中文字幕| 国产精品久久久久桃色tv| 国产喂奶挤奶一区二区三区| 日韩欧美国产wwwww| 91精品国产91热久久久做人人 | 国产欧美一区二区精品性色超碰| 欧美一二三区在线| 69av一区二区三区| 91精品国产高清一区二区三区蜜臀 | 日韩欧美一级特黄在线播放| 91国内精品野花午夜精品| 丰满放荡岳乱妇91ww| 国产综合色视频| 极品销魂美女一区二区三区| 青青草伊人久久| 蜜桃av噜噜一区| 欧美aaaaa成人免费观看视频| 日韩国产欧美在线播放| 日本在线不卡视频一二三区| 日韩国产精品大片| 久久狠狠亚洲综合| 国产一区二区三区在线观看精品 | 欧美日韩在线三区| 欧美男男青年gay1069videost| 精品视频在线视频| 日韩一级大片在线| 精品免费国产一区二区三区四区| 精品成人佐山爱一区二区| 国产亚洲综合性久久久影院| 国产欧美日韩亚州综合 | 久久九九久精品国产免费直播| 久久综合成人精品亚洲另类欧美| 欧美精品一区二区高清在线观看 | 亚洲国产高清不卡| 亚洲乱码国产乱码精品精98午夜| 亚洲国产精品天堂| 麻豆91在线播放免费| 精彩视频一区二区| 成人av网址在线| 欧美伊人久久久久久久久影院| 欧美日韩精品系列| 久久久亚洲国产美女国产盗摄| 国产精品人成在线观看免费| 一区二区三区免费网站| 香蕉乱码成人久久天堂爱免费| 卡一卡二国产精品| 不卡的电影网站| 欧美美女黄视频| 久久精品日韩一区二区三区| 日韩毛片高清在线播放| 午夜精品在线看| 国产成人自拍网| 在线观看免费成人| 国产亚洲欧美在线| 亚洲国产精品人人做人人爽| 久久99精品一区二区三区三区| 大胆亚洲人体视频| 91麻豆精品国产91久久久久久久久| 久久网站热最新地址| 亚洲综合久久久久| 国产伦精品一区二区三区免费| 91丨porny丨蝌蚪视频| 日韩精品中文字幕一区二区三区 | 日韩精品免费专区| av一区二区三区在线| 9191精品国产综合久久久久久| 久久久99久久| 日韩高清一区二区| 91最新地址在线播放| 精品黑人一区二区三区久久| 亚洲一二三区在线观看| 成人做爰69片免费看网站| 欧美一区二区三区在| 一区二区三区四区不卡视频| 国产99精品国产| 日韩免费观看2025年上映的电影| 亚洲免费在线视频| 国产成人免费在线| 日韩你懂的电影在线观看| 亚洲一区二区三区自拍| 国产成人一级电影| 日韩一级片在线播放| 亚洲一区在线观看免费 | 亚洲综合清纯丝袜自拍| 国产v日产∨综合v精品视频| 3d动漫精品啪啪| 一区二区三区在线视频免费| 成人免费av在线| 国产亚洲欧美在线| 婷婷成人激情在线网| 亚洲一区二区三区四区在线| 精品一区二区三区免费观看| 欧美亚洲国产怡红院影院| 国产精品久久久久婷婷| 国产99久久精品| 精品裸体舞一区二区三区| 日韩av不卡一区二区| 欧美日韩在线播放| 亚洲精品水蜜桃| 99视频有精品| 国产精品国产三级国产aⅴ入口| 国产91丝袜在线播放| 国产午夜精品在线观看| 国产麻豆精品95视频| 日韩精品在线一区二区| 免费观看日韩电影| 欧美精品 日韩| 亚洲网友自拍偷拍| 欧美色手机在线观看| 亚洲乱码日产精品bd| 欧美中文字幕一二三区视频| 亚洲精品视频一区| 欧美系列日韩一区| 亚洲国产日韩在线一区模特| 欧美影片第一页| 午夜不卡在线视频| 日韩一区二区三区av| 日韩av高清在线观看| 欧美变态凌虐bdsm| 国产激情一区二区三区桃花岛亚洲| 久久精品免视看| 99在线精品视频| 亚洲一区日韩精品中文字幕| 欧美日韩一本到| 老司机免费视频一区二区| 久久综合久久综合久久综合| 成人性生交大片免费看中文网站| 中文字幕日韩一区| 91九色最新地址| 日本在线观看不卡视频| 久久久久久久网| av资源网一区| 午夜电影网亚洲视频| 精品国产1区二区| 成人蜜臀av电影| 亚洲第一成人在线| 精品久久久久久久久久久久久久久| 国产精品一区二区在线观看不卡 | 欧美视频一二三区| 老色鬼精品视频在线观看播放| 国产欧美日韩视频一区二区| 99国产精品久久久久| 亚洲3atv精品一区二区三区| 精品国产一区久久| av中文字幕亚洲| 热久久一区二区| 中文字幕中文字幕在线一区| 久久婷婷国产综合国色天香| 成人久久久精品乱码一区二区三区| 一个色在线综合| 欧美理论片在线| 成人午夜av电影| 午夜精品福利一区二区三区蜜桃| 久久久久99精品国产片| 欧洲亚洲精品在线| 国产一区二区三区国产| 亚洲久草在线视频| 久久久久国产精品免费免费搜索| 91欧美激情一区二区三区成人| 久久精品国产久精国产| 亚洲精品国产无天堂网2021| 欧美精品一区二区三区在线播放| 欧洲一区二区av| 成人国产精品免费观看动漫| 毛片基地黄久久久久久天堂| 亚洲免费观看高清| 久久精品视频一区二区三区| 欧美日韩一区精品| kk眼镜猥琐国模调教系列一区二区| 日韩黄色小视频| 一区二区不卡在线播放 | 五月天一区二区| 亚洲四区在线观看| 国产婷婷一区二区|