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

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

?? p18demo.asm

?? PIC單片機與LCD1602的匯編程序??梢灾苯邮褂?。里面PIC16和PIC18兩種
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
	btfss	STATUS,Z
	bra	get_temp
	movlw	0x00			;temp is ready for reading
	movwf	cmd_byte		;send temp register command
	bra	temp_now

convert_temp
	movwf	temperature
	call	bin_bcd			;get temp ready for LCD
	call	LCDLine_1
	
	movlw	A'T'			;send "Temp=" to LCD
	movwf	temp_wr	
	call	d_write
	movlw	A'e'
	movwf	temp_wr	
	call	d_write
	movlw	A'm'
	movwf	temp_wr	
	call	d_write
	movlw	A'p'
	movwf	temp_wr	
	call	d_write
	movlw	0x20			;space
	movwf	temp_wr	
	call	d_write
	movlw	A'='
	movwf	temp_wr	
	call	d_write

	movlw	0x20			;space
	movwf	temp_wr	
	call	d_write

	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
	movlw	A'C'			;send "C" for celcius
	movwf	temp_wr	
	call	d_write

	movlw	0x20			;space
	movwf	temp_wr	
	call	d_write
	movlw	0x20			;space
	movwf	temp_wr	
	call	d_write
	movlw	0x20			;space
	movwf	temp_wr	
	call	d_write
	
	call	LCDLine_2		;send "RB0 = Exit" to LCD
	movlw	.144
	movwf	ptr_pos
	call	stan_char_2
	
	btfss	select			;wait for RB0 release
	bra	$-2
	call	delay_100ms
	btfss	select			;exit ?
	bra	menu_clock		;YES, goto main menu
	btfsc	PIR1,TMR1IF		;2 second overflow occur ??
	call	write_eeprom		;YES
	bra	get_temp		;NO, get temperature again

	
;----------------- CLOCK ------------------------------------------

clock
	btfss	select			;wait for RB0 button release
	bra	$-2
	movlw	0x0F			;intitialize TIMER1
	movwf	T1CON
	clrf	seconds
	clrf	minutes
	clrf	hours
overflow	
	bcf	PIR1,TMR1IF
	movlw	0x80		
	movwf	TMR1H			;load regs for 1 sec overflow
	clrf	TMR1L

	incf	seconds,F		;increment seconds
	movf	seconds,W
	sublw	.60
	btfss	STATUS,Z		;increment minutes ?
	bra	clk_done
	incf	minutes,F		
	clrf	seconds

	movf	minutes,W
	sublw	.60
	btfss	STATUS,Z		;increment hours ?
	bra	clk_done	
	incf	hours,F			
	clrf	minutes

	movf	hours,W
	sublw	.13
	btfss	STATUS,Z
	bra	clk_done
	movlw	.1			;start a new 12 hour period
	movwf	hours
clk_done
	movf	hours,W			;send hours to LCD
	call	bin_bcd

	call	LCDLine_1		;place time on line 1

	movf	MsD,W			;send middle digit
	movwf	temp_wr
	call	d_write
	movf	LSD,W			;send low digit
	movwf	temp_wr
	call	d_write	
	movlw	0x3A			;send  :   colon
	movwf	temp_wr
	call	d_write

	movf	minutes,W		;send minutes to LCD
	call	bin_bcd

	movf	MsD,W			;send middle digit
	movwf	temp_wr
	call	d_write
	movf	LSD,W			;send low digit
	movwf	temp_wr
	call	d_write	
	movlw	0x3A			; send :   colon
	movwf	temp_wr
	call	d_write

	movf	seconds,W		;send seconds to LCD
	call	bin_bcd

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

	movlw	0x20			;send 3 spaces after 00:00:00
	movwf	temp_wr
	call	d_write
	movlw	0x20
	movwf	temp_wr
	call	d_write
	movlw	0x20
	movwf	temp_wr
	call	d_write
	
	movlw	.112			;send "RA4=Dn RB0=Menu" to LCD
	movwf	ptr_pos
	call	stan_char_2

	btfss	scroll			;set time ??
	bra	set_time

	btfss	select			;return to main menu ??
	bra	menu
	
	btfss	PIR1,TMR1IF		;has timer1 overflowed ?	
	bra	$-2			;NO, wait til overflow
	bra	overflow		;YES

	return
;*******************************************************************


;************************** ROUTINES ******************************
;******************************************************************
;******************************************************************
		
;----Standard code, Place characters on line-1--------------------------
stan_char_1
	call	LCDLine_1		;mvoe cursor to line 1 
	movlw	.16			;1-full line of LCD
	movwf	ptr_count
	movlw	UPPER stan_table
	movwf	TBLPTRU
	movlw	HIGH stan_table
	movwf	TBLPTRH
	movlw	LOW stan_table
	movwf	TBLPTRL
	movf	ptr_pos,W
	addwf	TBLPTRL,F
	clrf	WREG
	addwfc	TBLPTRH,F
	addwfc	TBLPTRU,F

stan_next_char_1
	tblrd	*+
	movff	TABLAT,temp_wr			
	call	d_write			;send character to LCD

	decfsz	ptr_count,F		;move pointer to next char
	bra	stan_next_char_1

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

	return

;----Standard code, Place characters on line-2--------------------------
stan_char_2	
	call	LCDLine_2		;move cursor to line 2 
	movlw	.16			;1-full line of LCD
	movwf	ptr_count
	movlw	UPPER stan_table
	movwf	TBLPTRU
	movlw	HIGH stan_table
	movwf	TBLPTRH
	movlw	LOW stan_table
	movwf	TBLPTRL
	movf	ptr_pos,W
	addwf	TBLPTRL,F
	clrf	WREG
	addwfc	TBLPTRH,F
	addwfc	TBLPTRU,F

stan_next_char_2
	tblrd	*+
	movff	TABLAT,temp_wr
	call	d_write			;send character to LCD

	decfsz	ptr_count,F		;move pointer to next char
	bra	stan_next_char_2

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

	return
;----------------------------------------------------------------------


;------------------ 100ms Delay --------------------------------
delay_100ms
	movlw	0xFF
	movwf	temp_1
	movlw	0x83
	movwf	temp_2

d100l1
	decfsz	temp_1,F
	bra	d100l1
	decfsz	temp_2,F
	bra	d100l1
	return

;---------------- 1s Delay -----------------------------------
delay_1s
	movlw	0xFF
	movwf	temp_1
	movwf	temp_2
	movlw	0x05
	movwf	temp_3
d1l1
	decfsz	temp_1,F
	bra	d1l1
	decfsz	temp_2,F
	bra	d1l1
	decfsz	temp_3,F
	bra	d1l1
	return	

;---------------- Set Current Time ----------------------------
set_time
	movlw	.128			;send "RA4= --> RBO= ++" to LCD
	movwf	ptr_pos
	call	stan_char_2
set_time_again
	btfss	scroll			;wait for button release
	bra	$-2

	call	LCDLine_1		;start at 0x00 on LCD

	btfss	select			;wait for RB0 button release
	bra	$-2
	call	delay_100ms			
	btfss  	select			;increment hours (tens) ?
	bra	inc_hours
	bra	next_digit
inc_hours	
	incf	hours
	movf	hours,W			;check if hours has passed 12 ?
	sublw	.13
	btfss	STATUS,Z
	bra	next_digit
	clrf	hours			;YES, reset hours to 00
next_digit
	btfss	scroll			;move to next digit
	bra	inc_mins
	movf	hours,W		

	call	bin_bcd			;get hours ready for display
	
	movf	MsD,W			;send tens digit
	movwf	temp_wr
	call	d_write
	movf	LSD,W			;send ones digit
	movwf	temp_wr
	call	d_write	
	movlw	0x3A			;send   :   colon
	movwf	temp_wr
	call	d_write

	bra	set_time_again
	
inc_mins
	btfss	scroll			;wait for RA4 button release
	bra	$-2
	call	LCDLine_1
	movlw	0x14			;shift cursor to right 3 places
	movwf	temp_wr
	call	i_write
	movlw	0x14
	movwf	temp_wr
	call	i_write
	movlw	0x14
	movwf	temp_wr
	call	i_write
	
	btfss	select			;wait for RB0 button release
	bra	$-2
	call	delay_100ms
	btfss  	select			;increment minutes (tens) ?
	bra	inc_minutes
	bra	next_digit?
inc_minutes	
	incf	minutes
	movf	minutes,W		;check if hours has passed 12 ?
	sublw	.60
	btfss	STATUS,Z
	bra	next_digit?
	clrf	minutes
next_digit?
	btfss	scroll			;move to next digit
	bra	set_time_done
	movf	minutes,W
		
	call	bin_bcd			;get minutes ready for display
	
	movf	MsD,W			;send tens digit
	movwf	temp_wr
	call	d_write
	movf	LSD,W			;send ones digit
	movwf	temp_wr
	call	d_write	
	movlw	0x3A			;send  :   colon
	movwf	temp_wr
	call	d_write	
	bra	inc_mins

set_time_done
	btfss	scroll			;wait for RA4 button release
	bra	$-2
	bra	overflow
	
;---------------- Binary (8-bit) to BCD -----------------------
;		255 = highest possible result
bin_bcd
	clrf	MSD
	clrf	MsD
	movwf	LSD		;move value to LSD
ghundreth	
	movlw	.100		;subtract 100 from LSD
	subwf	LSD,W
	btfss	STATUS,C	;is value greater then 100
	bra	gtenth		;NO goto tenths
	movwf	LSD		;YES, move subtraction result into LSD
	incf	MSD,F		;increment hundreths
	bra	ghundreth	
gtenth
	movlw	.10		;take care of tenths
	subwf	LSD,W
	btfss	STATUS,C
	bra	over		;finished conversion
	movwf	LSD
	incf	MsD,F		;increment tenths position
	bra	gtenth
over				;0 - 9, high nibble = 3 for LCD
	movf	MSD,W		;get BCD values ready for LCD display
	xorlw	0x30		;convert to LCD digit
	movwf	MSD
	movf	MsD,W
	xorlw	0x30		;convert to LCD digit
	movwf	MsD
	movf	LSD,W
	xorlw	0x30		;convert to LCD digit
	movwf	LSD
	retlw	0

;---------------- Binary (16-bit) to BCD -----------------------
;		xxx = highest possible result
bin16_bcd
	                       ; Takes number in NumH:NumL 
                                ; Returns decimal in 
                                ; TenK:Thou:Hund:Tens:Ones 
        swapf   NumH,W 
        andlw   0x0F
        addlw   0xF0
        movwf   Thou 
        addwf   Thou,F 
        addlw   0xE2 
        movwf   Hund 
        addlw   0x32 
        movwf   Ones 

        movf    NumH,W 
        andlw   0x0F 
        addwf   Hund,F 
        addwf   Hund,F 
        addwf   Ones,F 
        addlw   0xE9 
        movwf   Tens 
        addwf   Tens,F 
        addwf   Tens,F 

        swapf   NumL,W 
        andlw   0x0F 
        addwf   Tens,F 
        addwf   Ones,F 

        rlcf     Tens,F 
        rlcf     Ones,F 
        comf    Ones,F 
        rlcf     Ones,F 

        movf    NumL,W 
        andlw   0x0F 
        addwf   Ones,F 
        rlcf     Thou,F 

        movlw   0x07 
        movwf   TenK 

        movlw   0x0A                             ; Ten 
Lb1: 
        decf    Tens,F 
        addwf   Ones,F 
        btfss   STATUS,C 
         bra   Lb1 
Lb2: 
        decf    Hund,F 
        addwf   Tens,F 
        btfss   STATUS,C 
         bra   Lb2 
Lb3: 
        decf    Thou,F 
        addwf   Hund,F 
        btfss   STATUS,C
         bra   Lb3 
Lb4: 
        decf    TenK,F 
        addwf   Thou,F 
        btfss   STATUS,C 
         bra   Lb4 

        retlw   0


;---------------------------- EEPROM WRITE -------------------------------
write_eeprom	
	bsf	SSPCON2,SEN		;start bit
	btfsc	SSPCON2,SEN
	goto	$-2	
	movlw	B'10100000'		;send control byte (write)
	movwf	SSPBUF
	ssprw
	btfsc	SSPCON2,ACKSTAT		;ack?
	goto	$-2

	movlw	0x00			;send slave address HIGH byte
	movwf	SSPBUF
	ssprw
	btfsc	SSPCON2,ACKSTAT		;ack?
	goto	$-2

	movlw	0x05			;send slave address LOW byte(0x0005)
	movwf	SSPBUF
	ssprw
	btfsc	SSPCON2,ACKSTAT		;ack?
	goto	$-2

	movf	temperature,w		;send slave DATA = temperature
	movwf	SSPBUF
	ssprw
	btfsc	SSPCON2,ACKSTAT		;ack?
	goto	$-2

	bsf	SSPCON2,PEN		;stop bit
	btfsc	SSPCON2,PEN
	goto	$-2
		
	bcf	PIR1,TMR1IF		;clear TIMER1 overflow flag
	clrf	TMR1L			;clear registers for next overflow
	clrf	TMR1H

	return

;*********************************************************************
	end	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩高清电影一区| 精品国产乱码久久久久久牛牛 | 欧美韩国日本一区| 日韩免费观看2025年上映的电影| 欧美精品黑人性xxxx| 欧美三区在线观看| 91精选在线观看| 91精品国产欧美一区二区18| 日韩欧美卡一卡二| 国产欧美va欧美不卡在线| 国产亚洲成年网址在线观看| 国产精品久久看| 自拍偷拍欧美激情| 亚洲国产精品久久久久婷婷884| 一级日本不卡的影视| 视频一区二区不卡| 毛片av中文字幕一区二区| 婷婷开心激情综合| 老司机精品视频一区二区三区| 精品一区二区三区在线播放| 国产麻豆精品theporn| 成人爱爱电影网址| 欧美熟乱第一页| 亚洲精品在线三区| 亚洲天堂网中文字| 石原莉奈在线亚洲二区| 国产美女视频91| 91久久精品网| 久久综合九色综合97婷婷女人 | 精品免费国产一区二区三区四区| 久久久久久综合| 一区二区三区免费观看| 久久成人综合网| 在线区一区二视频| 久久久久成人黄色影片| 伊人性伊人情综合网| 免费在线观看一区| jlzzjlzz国产精品久久| 欧美无砖砖区免费| 久久色在线观看| 亚洲成人一区二区在线观看| 国产精品资源站在线| 欧美日韩在线观看一区二区| 国产丝袜欧美中文另类| 亚洲一区二区三区不卡国产欧美| 韩国精品免费视频| 欧美日韩在线播放三区四区| 久久久久国产免费免费 | 国产亚洲综合在线| 亚洲国产视频直播| 不卡在线观看av| 久久网这里都是精品| 午夜精品免费在线| 欧美性色欧美a在线播放| 国产精品免费看片| 狠狠色丁香婷婷综合久久片| 在线电影院国产精品| 国产精品国产三级国产普通话99| 久久超碰97人人做人人爱| 欧美最新大片在线看 | 婷婷亚洲久悠悠色悠在线播放| 粉嫩aⅴ一区二区三区四区| 91麻豆精品国产91久久久| 亚洲一区二区三区中文字幕在线 | 日韩国产精品大片| 欧美日韩一区二区不卡| 亚洲午夜免费视频| 在线观看亚洲a| 亚洲影视在线观看| 在线观看国产精品网站| 日韩理论电影院| 色婷婷综合在线| 一区二区三区在线视频免费| 91片黄在线观看| 亚洲黄色尤物视频| 在线观看一区二区精品视频| 一区二区三区欧美| 欧美色爱综合网| 免费一级片91| 亚洲精品一区二区三区蜜桃下载| 美女免费视频一区二区| 欧美va在线播放| 久久精品久久99精品久久| 911国产精品| 久久99热这里只有精品| 久久久久久亚洲综合| 免费在线观看一区| 日韩精品一区二区三区蜜臀 | 亚洲成人av一区二区三区| 在线视频你懂得一区| 午夜成人免费视频| 欧美一卡二卡在线| 国内久久精品视频| 国产精品热久久久久夜色精品三区| 岛国av在线一区| 一区二区三区欧美日| 8v天堂国产在线一区二区| 日本欧美韩国一区三区| 久久综合一区二区| 国产精品一二三区| 亚洲婷婷综合色高清在线| 欧美影视一区在线| 久久国产生活片100| 国产视频亚洲色图| 色天天综合久久久久综合片| 天堂成人免费av电影一区| 精品国产免费久久| 色综合久久中文综合久久97 | 国产精品二三区| 欧美日韩在线播放三区| 韩国中文字幕2020精品| 日韩毛片一二三区| 欧美一区二区三区日韩| 成人免费观看视频| 青草av.久久免费一区| 国产精品卡一卡二| 欧美电影免费观看完整版| 99精品久久久久久| 狠狠色狠狠色综合| 亚洲一区二区精品3399| 国产日韩精品一区二区浪潮av| 在线亚洲欧美专区二区| 国产剧情一区在线| 亚洲国产乱码最新视频| 国产精品无遮挡| 日韩精品在线看片z| 在线精品视频一区二区| 国产99久久久精品| 天使萌一区二区三区免费观看| 欧美激情中文不卡| 久久久综合精品| 67194成人在线观看| 色国产综合视频| youjizz久久| 国产精品996| 国产综合色在线| 男女性色大片免费观看一区二区 | 日本三级亚洲精品| 亚洲成人中文在线| 亚洲精品日产精品乱码不卡| 国产精品视频免费看| 久久女同精品一区二区| 在线播放一区二区三区| 在线观看三级视频欧美| 成人精品在线视频观看| 国产一区二区美女| 极品美女销魂一区二区三区| 婷婷六月综合亚洲| 午夜伊人狠狠久久| 亚洲国产精品久久艾草纯爱| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲精品一区在线观看| 日韩精品一区二区三区四区 | 国产黄色91视频| 国产一区视频导航| 国产一区在线视频| 国产精品一色哟哟哟| 国产99一区视频免费| 国产河南妇女毛片精品久久久 | 三级欧美韩日大片在线看| 亚洲国产另类av| 日本不卡高清视频| 麻豆精品一区二区三区| 麻豆精品一区二区av白丝在线| 免费看黄色91| 国产伦精品一区二区三区视频青涩 | 精品一区二区三区免费| 国内精品在线播放| 国产精品一卡二卡| 99re视频这里只有精品| 色狠狠综合天天综合综合| 欧美日韩在线一区二区| 日韩一区二区免费高清| 久久蜜桃香蕉精品一区二区三区| 国产视频一区二区在线观看| 最新国产精品久久精品| 一级做a爱片久久| 久久精品国产亚洲一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ| 成人免费av网站| 欧美日韩一区三区| 精品欧美一区二区久久| 国产精品久久久久影视| 亚洲一区二区av在线| 久久99蜜桃精品| 色八戒一区二区三区| 在线不卡中文字幕播放| 国产日韩欧美精品电影三级在线| 一区二区三区在线观看动漫| 久久精品国产99国产| caoporn国产精品| 日韩一区二区影院| 亚洲三级视频在线观看| 日本欧美一区二区三区乱码| www.激情成人| 欧美剧情片在线观看| 亚洲欧洲色图综合| 久草这里只有精品视频| 色综合久久中文字幕| 精品99一区二区三区|