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

📄 1.txt

📁 pic系列单片机得控制程序 主要进行温度采集和转换控制
💻 TXT
字号:
Listing 5 

;*****************************************************************************
graph_data 
					;graph data in memory - set or clr 							
					;temperature and dash flags
					;write from left to right
;*****************************************************************************
	movl	offset,h'00'		;start at left axis (offset includes nibble 						
					;bits)…shift data memory one address over 						
					;(use short term)
	movl	f_pointer,h'f0'		;from pointer…start at next to last
					;location (was "c0h')
	clrf	dash_count		;use to draw dashes on line
next_point				;copy to next location	
	swapf	f_pointer,0		;w=f_pointer (swapped)
	andlw	h'0f'			;mask lsn
	btfss	temperature		;check flag
	iorlw	h'10'			;msn for short term address
	btfsc	temperature
	iorlw	h'00'
	movwf	addr_msd		;RAM address
	movf	f_pointer,0		;w=f_pointer
	andlw	h'0f'			;mask msn
	iorlw	h'f0'			;msn "F"
	movwf	addr_lsd		;RAM address
	call	ram_read		;read RAM (data returned in mem_data)
	movf	mem_data,0		;w = mem_data (group_row = 72d - mem_data)
	sublw	d'72'     		;w = 72d - mem_data
	movwf	mem_data		;mem_data = 72d - mem_data
compute_change				;compute change from last point
	mov	current_pt,mem_data 	;current_pt = mem_data
	movf	last_pt,0		;w = last_pt
	subwf	current_pt,0		;w = current_pt - last_pt
	btfsc	zero			;check for zero
	movlw	h'01'			;1 is minimum
	movwf	change			;change = current_pt - last_pt
point_read				;point loaded into memory.
					;determine lowest point and work up (for 						
					;drawing lines between dots)
	jb	change,7,current_lower
	mov	center_pt,last_pt
	btfss	thin			;check for thin flag
	incf	change,same		;draw double thickness
	mov	var3,change
	goto	l_bold_point
current_lower				;current_pt  last_pt
	movf	current_pt,0		;w = current_pt
	subwf	last_pt,0		;w = last_pt - current_pt
	btfsc	zero  			;check for zero
	movlw	h'01'
	movwf	change
	mov	center_pt,current_pt
	btfss	thin			;check for thin flag
	incf	change,same		;draw double thickness
	mov	var3,change
	goto	l_bold_point
l_bold_point
	call	bold_point		;preload mem_data,offset,var3(w/change)
ready_next 				;ready for next point
 	incf	offset,same		;go to next point
	mov	last_pt,current_pt	;last_pt = current_pt
	djnz	f_pointer,next_point
	return	
bold_point				;draw actual data points
					;preload center_pt,offset,var3(w/change)
	btfsc	dash			;only increment dash_count if dash flag is set
	incf	dash_count,same		;keep track to insert dashes
	mov	mem_data,center_pt
	mov	addr_msd,mem_data	;preload addr_msdd
	bcf	carry
	rrf	addr_msd,same		;shift right two places
	bcf	carry
	rrf	addr_msd,same
	andl	mem_data,b'00000011'	;mask all but last two bits
	btfsc	zero			;preload addr_lsd with mem_data info
	movlw	h'00'
	decf	mem_data,same
	btfsc	zero
	movlw	h'3c'
	decf	mem_data,same
	btfsc	zero
	movlw	h'78'
	decf	mem_data,same
	btfsc	zero
	movlw	h'b4'	
	movwf	addr_lsd		;now add column offset
	mov	var1,offset		;var1 = offset
	bcf	carry			;divide by four
	rrf	var1,same
	bcf	carry
	rrf	var1,same
	add	addr_lsd,var1		;cannot roll over to msd (remains fixed)
					;now read current pixel data (from DISPLAY memory)
	call	ram_read		;data returned in mem_data @ addr_msd,lsd
					;determine bit position from lsb's of offset
	mov	var1,offset		;var1 = offset
	andl	var1,b'00000011'	;var1 = offset(1,0)
	btfsc	zero
	movlw	b'00001000'		;bit position zero
	decf	var1,same
	btfsc	zero
	movlw	b'00000100'		;bit position one
	decf	var1,same
	btfsc	zero
	movlw	b'00000010'		;bit position two
	decf	var1,same
	btfsc	zero
	movlw	b'00000001'		;bit position three
					;or bit position (in w) with pixel data
	iorwf	mem_data,same
	mov	ram_data,mem_data
	btfss	dash_count,1		;skip every two points (when dash flag set)
	call	ram_write
	incf	center_pt,same		;go up one row
	djnz	var3,bold_point		;draw next points (triple)
 	return
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -