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

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

?? p18demo.asm

?? PIC單片機與LCD1602的匯編程序。可以直接使用。里面PIC16和PIC18兩種
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;************************************************************************
;*	Microchip Technology Inc. 2002					*
;*	Assembler version: 2.0000					*
;*	Filename: 							*
;*		p18demo.asm (main routine)   				*
;*	Dependents:							*
;*		p18lcd.asm						*
;*		p18math.asm						*
;*		16f877.lkr						*
;*	March 14,2002							*
;* 	PICDEM 2 PLUS DEMO code. The following functions are included 	*
;*	with this code:							*
;*		1. Voltmeter						*
;*			The center tap of R16 is connected to RA0, the	*
;*			A/D converter converts this analog voltage and	*
;*			the result is displayed on the LCD in a range	*
;*			from 0.00V - 5.00V.				*
;*		2. Buzzer						*
;*			The Piezo buzzer is connected to RC2 and is	*
;*			driven by the CCP1 module. The period and duty	*
;*			cycle are adjustable on the fly through the LCD	*
;*			and push-buttons.				*
;*		3. Temperature						*
;*			A TC74 Serial Digital Thermal Sensor is used to	*
;*			measure ambient temperature. The PIC and TC74	*
;* 			communicate using the MSSP module. The TC74 is	*
;*			connected to the SDA & SCL I/O pins of the PIC	*
;*			and functions as a slave. Every 2 seconds, the	*
;*			temperature is logged into the external EEPROM  *
;*			in a specific memory location.			*
;*		4. Clock						*
;*			This function is a real-time clock. When the	*
;*			mode is entered, time begins at 00:00:00. The 	*
;*			user can set the time if desired.		*
;*									*
;*		The data that is sent to the LCD is also sent to the	*
;*		USART through the RS-232 port to be displayed on a PC	*
;*		HyperTerminal.						*
;************************************************************************

	list p=18f452
	#include p18f452.inc


;Program Configuration Registers
;		__CONFIG    _CONFIG1H, _OSCS_OFF_1H & _EC_OSC_1H
		__CONFIG    _CONFIG2L, _BOR_OFF_2L & _PWRT_ON_2L
;		__CONFIG    _CONFIG2H, _WDT_OFF_2H
;		__CONFIG    _CONFIG3H, _CCP2MX_OFF_3H
		__CONFIG    _CONFIG4L, _STVR_OFF_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
		__CONFIG    _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L 
;		__CONFIG    _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
		__CONFIG    _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L 
;		__CONFIG    _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
		__CONFIG    _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
;		__CONFIG    _CONFIG7H, _EBTRB_OFF_7H

	#define	scroll_dir	TRISA,4
	#define	scroll		PORTA,4		;Push-button RA4 on PCB
	#define	select_dir	TRISB,0		
	#define	select		PORTB,0		;Push-button RB0 on PCB

	EXTERN	LCDInit, temp_wr, d_write, i_write, LCDLine_1, LCDLine_2
	EXTERN	UMUL0808L, UDIV1608L, AARGB0, AARGB1, BARGB0


ssprw	macro				;check for idle SSP module routine
	movlw	0x00
	andwf	SSPCON2,W
	sublw	0x00
	btfss	STATUS,Z
	bra	$-8

	btfsc	SSPSTAT,R_W
	bra	$-2
	endm

variables	UDATA
ptr_pos		RES 1
ptr_count	RES 1
temp_1		RES 1
temp_2		RES 1
temp_3		RES 1
cmd_byte	RES 1
temperature	RES 1
LSD		RES 1
MsD		RES 1
MSD		RES 1
seconds		RES 1
minutes		RES 1
hours		RES 1

NumH		RES 1
NumL		RES 1
TenK		RES 1
Thou		RES 1
Hund		RES 1
Tens		RES 1
Ones		RES 1

STARTUP CODE
	NOP
	goto	start
	NOP
	NOP
	NOP
PROG1 	CODE

stan_table				;table for standard code
	;	"XXXXXXXXXXXXXXXX"
	;				ptr:
	data	"   Voltmeter    "	;0
	data	"     Buzzer     "	;16
	data	"  Temperature   "	;32
	data	"     Clock      "	;48
	data	"RA4=Next RB0=Now"	;64
	data	"   Microchip    "      ;80
	data	" PICDEM 2 PLUS  "	;96
	data	"RA4=Set RB0=Menu"	;112
	data	"RA4= --> RBO= ++"	;128
	data	"   RB0 = Exit 	 "	;144
	data	"Volts =	 "	;160
	data	"Prd.=128 DC=128 "	;176

start	
	call LCDInit
	
	movlw	B'10100100'		;initialize USART
	movwf	TXSTA			;8-bit, Async, High Speed
	movlw	.25
	movwf	SPBRG			;9.6kbaud @ 4MHz
	movlw	B'10010000'
	movwf	RCSTA

	bcf	TRISC,2			;configure CCP1 module for buzzer
;	bcf	TRISC,6
	movlw	0x80
	movwf	PR2			;initialize PWM period 
	movlw	0x80			;initialize PWM duty cycle
	movwf	CCPR1L
	bcf	CCP1CON,CCP1X
	bcf	CCP1CON,CCP1Y
	
	movlw	0x05			;postscale 1:1, prescaler 4, Timer2 ON
	movwf	T2CON
		
	bsf	TRISA,4			;make switch RA4 an Input
	bsf	TRISB,0			;make switch RB0 an Input


;**************** STANDARD CODE MENU SELECTION *******************
			;Introduction
	movlw	.80			;send "Microchip" to LCD
	movwf	ptr_pos
	call	stan_char_1

	movlw	.96			;send "PICDEM 2 PLUS" to LCD
	movwf	ptr_pos
	call	stan_char_2
	call	delay_1s		;delay for display
	call	delay_1s		;delay for display
menu
;------------------ VOLT MEASUREMENT  ----------------------------
	btfss	scroll			;wait for RA4 release
	goto	$-2		
	btfss	select			;wait for RB0 release
	goto	$-2

	movlw	0x00			;voltmeter
	movwf	ptr_pos
	call	stan_char_1

	movlw	.64			;RA4=Next  RB0=Now
	movwf	ptr_pos
	call	stan_char_2
v_wait
	btfss	select			;voltmeter measurement ??
	bra	voltmeter
	btfsc	scroll			;next mode ??
	bra	v_wait			;NO
	btfss	scroll			;YES
	bra	$-2			;wait for RA4 release
;------------------ BUZZER --------------------------------------
menu_buz
	btfss	select			;wait for RB0 release
	bra	$-2			

	movlw	.16			;buzzer
	movwf	ptr_pos
	call	stan_char_1

	movlw	.64			;RA4=Next  RB0=Now
	movwf	ptr_pos
	call	stan_char_2
b_wait
	btfss	select			;Buzzer sound ??
	goto	buzzer			;YES
	btfsc	scroll			;NO, next mode ??
	goto	b_wait			;NO
	btfss	scroll			;YES
	bra	$-2			;wait for RA4 release
;----------------- TEMPERATURE MEASUREMENT ----------------------
menu_temp
	btfss	scroll			;wait for RA4 release
	bra	$-2		

	movlw	.32			;temperature
	movwf	ptr_pos
	call	stan_char_1

	movlw	.64			;RA4=Next  RB0=Now
	movwf	ptr_pos
	call	stan_char_2
t_wait
	btfss	select			;temperature measurement ??
	bra	temp			;YES
	btfsc	scroll			;NO, next mode ??
	bra	t_wait			;NO
	btfss	scroll			;YES
	bra	$-2			;wait for release
;------------------ CLOCK TIME ----------------------------------
menu_clock
	btfss	select			;wait for RB0 release
	bra	$-2		

	movlw	.48			;clock
	movwf	ptr_pos
	call	stan_char_1

	movlw	.64			;RA4=Next  RB0=Now
	movwf	ptr_pos
	call	stan_char_2
c_wait
	btfss	select			;goto time ??
	bra	clock			;YES
	btfsc	scroll			;NO, next mode ??
	bra	c_wait			;NO
	btfss	scroll			;YES
	bra	$-2			;wait for release
;-------------------------------------------------------------------
	bra	menu			;begining of menu
	return

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




;************* STANDARD USER CODE **********************************

;------------- Voltmeter--------------------------------------------
voltmeter
	btfss	select			;wait for RB0 release
	bra	$-2

	movlw	B'01000001'		;configure A/D converter	
	movwf	ADCON0			;turn A/D on
	movlw	b'00001110'		;RA0 = analog input
	movwf	ADCON1

	movlw	.160			;send "Volts = " to the LCD
	movwf	ptr_pos
	call	stan_char_1
volts_again
	bsf	ADCON0,GO		;start conversion
	btfsc	ADCON0,GO
	bra	$-2
	movf	ADRESH,W

	movwf	AARGB0			;move adresh into AARGB1
	movlw	0xC3			;19.5mV/step   0xC3 = 195
	movwf	BARGB0
	call	UMUL0808L
	
	movlw	0x64			;divide result by 100 (0x64)
	movwf	BARGB0
	call	UDIV1608L
	
	movf	AARGB0,W		;prepare for 16-bit binary to BCD
	movwf	NumH
	movf	AARGB1,W
	movwf	NumL
	call	bin16_bcd		;get volts ready for LCD
	
	call	LCDLine_2		;display A/D result on 2nd line
	movf	Hund,W			;get hunds
	call	bin_bcd
	movf	LSD,W			;send high digit from the LSD #.xx	
	movwf	temp_wr
	call	d_write
	movlw	A'.'			;send decimal point "."
	movwf	temp_wr
	call	d_write
	
	movf	Tens,W			;get tens
	call	bin_bcd
	movf	LSD,W			;send low digit   x.#x
	movwf	temp_wr
	call	d_write

	movf	Ones,W			;get ones
	call	bin_bcd
	movf	LSD,W			;send low digit   x.x#
	movwf	temp_wr
	call	d_write
	movlw	A'V'			;send "V" unit
	movwf	temp_wr
	call	d_write

	movlw	0x20			;3 spaces	
	movwf	temp_wr
	call	d_write
	movlw	0x20			
	movwf	temp_wr
	call	d_write
	movlw	0x20			
	movwf	temp_wr
	call	d_write
	movlw	A'R'			;send "RB0=Exit" to LCD
	movwf	temp_wr
	call	d_write
	movlw	A'B'			
	movwf	temp_wr
	call	d_write
	movlw	A'0'			
	movwf	temp_wr
	call	d_write
	movlw	A'='			
	movwf	temp_wr
	call	d_write
	movlw	A'E'			
	movwf	temp_wr
	call	d_write
	movlw	A'x'		
	movwf	temp_wr
	call	d_write
	movlw	A'i'			
	movwf	temp_wr
	call	d_write
	movlw	A't'			
	movwf	temp_wr
	call	d_write
	movlw	0x20			;2 spaces	
	movwf	temp_wr
	call	d_write
	movlw	0x20			
	movwf	temp_wr
	call	d_write

	movlw	"\r"			;move data into TXREG
	movwf	TXREG			;carriage return
	btfss	TXSTA,TRMT		;wait for data TX
	bra	$-2

	btfss	select			;exit volt measurement ??
	bra	menu_buz			;YES
	bra	volts_again		;NO, do conversion again

;--------------------- BUZZER --------------------------------------
buzzer
	btfss	select			;wait for RB0 release
	bra	$-2

	movlw	0x80			;start at these PWM values
	movwf	PR2			;initialize PWM period 
	movlw	0x80			
	movwf	CCPR1L			;initialize PWM duty cycle
	
	call	LCDLine_1
	movlw	.176			;send "Prd.=128 DC=128" to LCD
	movwf	ptr_pos
	call	stan_char_1
	call	LCDLine_2
	movlw	.128			;send "RA4= -> RB0 = ++" to LCD
	movwf	ptr_pos
	call	stan_char_2
		
	movlw	0x0F			;turn buzzer on	
	movwf	CCP1CON	
		
pr2_again			
	btfsc	select			;increment PR2 ???
	bra	pr2_out			;NO
	call	delay_100ms		;YES
	call	delay_100ms		
	incf	PR2,F			;increment PR2
pr2_out
	movlw	0x85			;move cursor into position
	movwf	temp_wr
	call	i_write

pol1
	btfss	scroll			;goto increment CCPR1L
	bra	inc_dc
	btfsc	select			;wait for RB0 press
	bra	pol1

	movf	PR2,W			;send PR2 register to conversion
	call	bin_bcd

	movf	MSD,W			;send high digit
	movwf	temp_wr
	call	d_write
	movf	MsD,W			;send middle digit
	movwf	temp_wr
	call	d_write
	movf	LSD,W			;send low digit
	movwf	temp_wr
	call	d_write

	bra	pr2_again		

;------------------------
		;adjust Duty Cycle
inc_dc
	btfss	scroll			;wait for button release
	bra	$-2

inc_ccpr1l	
	btfsc	select			;increment CCPR1L ???
	goto	ccpr1l_out		;NO
	call	delay_100ms		;YES
	call	delay_100ms
	incf	CCPR1L,F		;increment CCPR1L
ccpr1l_out
	movlw	0x8C			;move cursor into position
	movwf	temp_wr
	call	i_write

col1
	btfss	scroll			;exit?
	bra	pwm_out
	btfsc	select			;wait for RB0 press
	bra	col1
	
	movf	CCPR1L,W		;send PR2 register to conversion
	call	bin_bcd
	
	movf	MSD,W			;send high digit
	movwf	temp_wr
	call	d_write
	movf	MsD,W			;send middle digit
	movwf	temp_wr
	call	d_write
	movf	LSD,W			;send low digit
	movwf	temp_wr
	call	d_write			
	bra	inc_ccpr1l

pwm_out
	movlw	0
	movwf	CCP1CON			;turn buzzer off
	bra	menu_temp

;---------------------- Temperature -------------------------------- 
temp
;	This code if for the TC74A5-5.0VAT temperature sensor
;		1st. Check if temperature is ready to be read in config reg.
;		2nd. If ready, retireve temperatute in hex.
;		     If not ready, check config register again.

	bsf	TRISC,3			;initialize MSSP module
	bsf	TRISC,4
	movlw	B'00101000'
	movwf	SSPCON1
	bsf	SSPSTAT,SMP
	movlw	.5
	movwf	SSPADD

	bcf	PIR1,TMR1IF
	clrf	TMR1H			;load Timer1 for 2 sec overflow
	clrf	TMR1L

get_temp
	movlw	0x01			;config register command byte
	movwf	cmd_byte
temp_now
	bsf	SSPSTAT,6		;SMBUS spec for TC74

	bsf	SSPCON2,SEN		;write to TC74
	btfsc	SSPCON2,SEN
	bra	$-2	
	movlw	B'10011010'		;send TC74 ADDRESS (write)
	movwf	SSPBUF
	ssprw
	btfsc	SSPCON2,ACKSTAT		;ack?
	bra	$-2

	movf	cmd_byte,W		;send COMMAND byte (config)
	movwf	SSPBUF
	ssprw
	btfsc	SSPCON2,ACKSTAT		;ack?
	bra	$-2

	bsf	SSPCON2,RSEN		;send repeated start
	btfsc	SSPCON2,RSEN
	bra	$-2
	movlw	B'10011011'		;send TC74 ADDRESS (read)
	movwf	SSPBUF
	ssprw				;module idle?
	btfsc	SSPCON2,ACKSTAT		;ack?
	bra	$-2

	bsf	SSPCON2,RCEN		;enable receive mode
	btfsc	SSPCON2,RCEN
	bra	$-2

	movf	SSPBUF,W		;retrieve config reg or temp reg
	
	bsf	SSPCON2,ACKDT		;send NOT-ACK
	bsf	SSPCON2,ACKEN
	btfsc	SSPCON2,ACKEN
	bra	$-2
			
	bsf	SSPCON2,PEN		;stop
	btfsc	SSPCON2,PEN
	bra	$-2
	
	btfss	cmd_byte,0		;config command OR temp command
	bra	convert_temp		;get temperature ready for display

	andlw	0x40			;is temp ready ??
	sublw	0x40

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人午夜精品| 欧美一区三区四区| 日韩视频免费直播| 国产嫩草影院久久久久| 亚洲宅男天堂在线观看无病毒| 韩国中文字幕2020精品| 欧美日韩一区高清| 中文字幕一区二区5566日韩| 视频一区二区不卡| 欧美日韩视频在线观看一区二区三区| 中文av字幕一区| 国内精品国产成人国产三级粉色| 欧美三区在线观看| ●精品国产综合乱码久久久久| 日本成人在线网站| 欧美日韩不卡在线| 亚洲精品视频观看| 91麻豆.com| 国产精品免费久久久久| 精品系列免费在线观看| 日韩欧美一卡二卡| 天堂成人国产精品一区| 欧美三级电影网| 亚瑟在线精品视频| 在线观看国产精品网站| 亚洲视频一二三| 972aa.com艺术欧美| 国产精品网站在线播放| 成人综合婷婷国产精品久久免费| 精品国产乱码久久久久久图片 | 国产色婷婷亚洲99精品小说| 久久精品二区亚洲w码| 欧美肥妇bbw| 久久国产精品色| 欧美精品一区二区三区蜜臀| 激情综合色播五月| 久久久不卡网国产精品二区| 国产精品一区二区久激情瑜伽 | 亚洲乱码中文字幕| 色婷婷亚洲一区二区三区| 亚洲丝袜自拍清纯另类| 99精品视频在线播放观看| 欧美国产精品v| 91麻豆成人久久精品二区三区| 亚洲激情图片qvod| 欧美日韩久久一区| 久久国产乱子精品免费女| 国产色综合久久| 91视视频在线观看入口直接观看www| 亚洲美女视频在线观看| 欧美乱熟臀69xxxxxx| 捆绑调教一区二区三区| 国产三级欧美三级日产三级99| 成人免费视频免费观看| 一区二区三区中文免费| 日韩欧美亚洲国产另类| www.欧美日韩| 亚瑟在线精品视频| 国产亚洲欧美在线| 在线影院国内精品| 久久99热99| 国产精品免费视频网站| 欧美日产国产精品| 国产传媒欧美日韩成人| 亚洲国产综合在线| 国产亚洲成年网址在线观看| 91黄色免费版| 777欧美精品| 国产99精品在线观看| 亚洲一区二区黄色| 久久精品亚洲国产奇米99| 在线观看亚洲a| 国产精品一区二区黑丝| 午夜精品成人在线| 中文字幕高清不卡| 日韩午夜电影av| 91在线精品一区二区三区| 毛片av一区二区| 亚洲精品福利视频网站| 久久久不卡网国产精品二区| 欧美日韩一区二区三区在线看 | 国产精品免费观看视频| 91精品国产综合久久国产大片 | 国产精品久久久久久亚洲毛片| 欧美三电影在线| 成人短视频下载| 久久99精品国产.久久久久| 亚洲综合激情另类小说区| 久久九九久久九九| 欧美一区二区在线看| 色八戒一区二区三区| 成人性生交大片免费看在线播放| 蜜臀久久99精品久久久久久9| 一区二区三区精密机械公司| 国产精品色眯眯| 欧美精品一区二区三区很污很色的 | 91精品国产综合久久精品| 91丝袜国产在线播放| 国产精品一区在线观看你懂的| 亚洲高清不卡在线| 亚洲视频精选在线| 亚洲欧美色综合| 亚洲三级免费观看| 国产精品毛片无遮挡高清| 久久久91精品国产一区二区三区| 日韩欧美在线不卡| 91麻豆精品国产| 91精品国产综合久久蜜臀| 色综合视频在线观看| jlzzjlzz国产精品久久| 成人高清在线视频| 丁香亚洲综合激情啪啪综合| 国产高清成人在线| 国产传媒久久文化传媒| 日韩一区二区影院| 欧美一级一区二区| 欧美电影免费观看高清完整版在线观看| 欧美日韩激情一区| 欧美精三区欧美精三区| 4hu四虎永久在线影院成人| 91精品国产色综合久久ai换脸| 7777精品伊人久久久大香线蕉| 91精品午夜视频| 亚洲精品一区二区在线观看| 精品国产露脸精彩对白| 久久精品男人天堂av| 国产精品三级视频| 亚洲最新视频在线播放| 日韩综合在线视频| 狠狠v欧美v日韩v亚洲ⅴ| 成人性色生活片免费看爆迷你毛片| 成人国产亚洲欧美成人综合网| 91美女在线视频| 欧美日本视频在线| 精品国精品国产| 国产精品私人影院| 亚洲午夜成aⅴ人片| 国内精品在线播放| gogogo免费视频观看亚洲一| 一本久久综合亚洲鲁鲁五月天| 欧美午夜精品理论片a级按摩| 91麻豆精品91久久久久同性| 国产亚洲美州欧州综合国| 亚洲欧洲精品天堂一级 | 成人免费在线播放视频| 亚洲图片自拍偷拍| 国产精品亚洲综合一区在线观看| 92精品国产成人观看免费| 日韩一区二区高清| 国产精品美女一区二区| 亚洲国产一区二区a毛片| 久久精品国产精品亚洲综合| 成人高清在线视频| 欧美一区二区三区视频免费 | 2014亚洲片线观看视频免费| 国产精品美女久久久久久久久久久| 亚洲午夜精品在线| 国产精品888| 欧美嫩在线观看| 国产精品美女一区二区三区| 日韩va欧美va亚洲va久久| 成人网在线播放| 欧美一区国产二区| 亚洲黄色小说网站| 成人午夜伦理影院| 欧美本精品男人aⅴ天堂| 国产成人精品网址| 555夜色666亚洲国产免| 综合久久久久综合| 国产精品1024久久| 8v天堂国产在线一区二区| 亚洲综合久久av| 成人av片在线观看| 久久久精品影视| 蜜臂av日日欢夜夜爽一区| 在线观看视频一区二区 | 99精品热视频| 久久人人爽爽爽人久久久| 热久久久久久久| 欧美日韩亚洲综合一区| 18涩涩午夜精品.www| 国产成人免费网站| 精品国产在天天线2019| 奇米色一区二区| 欧美老女人在线| 亚洲国产一二三| 欧美中文字幕一区二区三区亚洲| 1024精品合集| 99精品一区二区三区| 国产精品污污网站在线观看| 国产精品一区二区久久不卡| 久久久久久99久久久精品网站| 久久激情五月婷婷| 日韩欧美激情一区| 六月婷婷色综合| 精品国产免费人成电影在线观看四季| 久久精品国产在热久久| 精品美女在线观看| 国产精品自拍三区| 久久九九国产精品|