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

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

?? lcd_1602_text.asm

?? AVR單片機通過4位總線訪問LCD1602
?? ASM
字號:
;LCD 1602 使用4位數據總線測試
;2008-1-3~2008-1-5 --by BG1
.include "m48def.inc"
		.EQU    PD_1602_RS = 0
		.EQU    PD_1602_RW = 1
		.EQU    PD_1602_E = 2
		.EQU    PD_1602_D4 = 4
		.EQU    PD_1602_D5 = 5
		.EQU    PD_1602_D6 = 6
		.EQU    PD_1602_D7 = 7
		.EQU    LCD_1602_BF_BIT = 7

		.EQU    LCD_1602_COM_CLR = $1
		.EQU    LCD_1602_COM_CURSORRESET = $2
		.EQU    LCD_1602_COM_DISPALYMODE = $4
;			.EQU    LCD_1602_MOVE_TO = 1    ;0-LEFT,1-RIGHT
;			.EQU    LCD_1602_S_C_MOVE = 0    ;0-CURSOR MOVE,1-SCREEN MOVE
		.EQU    LCD_1602_COM_DISPLAYSTATE = $8
;			.EQU    LCD_1602_DISPLAY = 2		 ;1-ON,0-OFF
;			.EQU    LCD_1602_CURSOR = 1		 ;1-ON,0-OFF
;			.EQU    LCD_1602_CURSOR_BLINK = 0    ;1-BLINK,0-STATIC
		.EQU    LCD_1602_COM_DISPLAYMOVE = $10
;			;|LCD_1602_S_C_MOVE<<3|LCD_1602_MOVE_TO<<2
		.EQU    LCD_1602_COM_DISPLAYSETTING = $20
;			.EQU    LCD_1602_BUS_WIDTH_8 = 4    ;0-4BIT(D4~D7),1-8BIT
;			.EQU    LCD_1602_TWO_LINE = 3		 ;1-TWO LINE,0-ONE LINE
;			.EQU    LCD_1602_CHR_10 = 2		 ;0-5*7 CHAR(TWO LINE),1-5*10 CHAR(ONE LINE)
		.EQU    LCD_1602_COM_USERCHAR = $40
		.EQU    LCD_1602_COM_LOCATE = $80

.DSEG
		.EQU    LCD_1602_SETTINGS = $120
			.EQU    LCD_1602_BUS_WIDTH_8 = 4    ;0-4BIT(D4~D7),1-8BIT
			.EQU    LCD_1602_TWO_LINE = 3		 ;1-TWO LINE,0-ONE LINE
			.EQU    LCD_1602_CHR_10 = 2		 ;0-5*7 CHAR(TWO LINE),1-5*10 CHAR(ONE LINE)
			.EQU    LCD_1602_MOVE_TO = 1    ;0-LEFT,1-RIGHT
			.EQU    LCD_1602_S_C_MOVE = 0    ;0-CURSOR MOVE,1-SCREEN MOVE
		.EQU    LCD_1602_STATE = $121
			.EQU    LCD_1602_DISPLAY = 2		 ;1-ON,0-OFF
			.EQU    LCD_1602_CURSOR = 1		 ;1-ON,0-OFF
			.EQU    LCD_1602_CURSOR_BLINK = 0    ;1-BLINK,0-STATIC
		.EQU    LCD_1602_LOC = $122
.ESEG
.CSEG
		rjmp    RESET		 ;復位處理		 
		rjmp    EXT_INT0    ;IRQ0處理    
		rjmp    EXT_INT1    ;IRQ1處理    
		rjmp    PCINT0_INT    ;PCINT0處理    
		rjmp    PCINT1_INT    ;PCINT1處理    
		rjmp    PCINT2_INT    ;PCINT2處理    
		rjmp    WDT_INT		 ;看門狗定時器處理		 
		rjmp    TIM2_COMPA    ;定時器2    比較A處理
		rjmp    TIM2_COMPB    ;定時器2    比較B處理
		rjmp    TIM2_OVF    ;定時器2    溢出處理    
		rjmp    TIM1_CAPT    ;定時器1    捕獲處理    
		rjmp    TIM1_COMPA    ;定時器1    比較A處理
		rjmp    TIM1_COMPB    ;定時器1    比較B處理
		rjmp    TIM1_OVF    ;定時器1    溢出處理    
		rjmp    TIM0_COMPA    ;定時器0    比較A處理
		rjmp    TIM0_COMPB    ;定時器0    比較B處理
		rjmp    TIM0_OVF    ;定時器0    溢出處理		 
		rjmp    SPI_STC		 ;SPI傳輸結束處理		 
		rjmp    USART_RXC    ;USART,RX    結束處理    
		rjmp    USART_UDRE    ;USART,UDR    空處理    
		rjmp    USART_TXC    ;USART,TX Complete處理
		rjmp    ADC_INT		 ;ADC轉換結束處理		 
		rjmp    EE_RDY		 ;EEPROM    就緒處理		 
		rjmp    ANA_COMP    ;模擬比較器處理		     
		rjmp    TWI_INT		 ;兩線串行接口處理		     
		rjmp    SPM_RDY		 ;SPM就緒處理		 

RESET:    
		ldi    r16,high(RAMEND)    ;主程序		 
		out    SPH,r16				  ;設置堆棧指針為RAM的頂部
		ldi    r16,low(RAMEND)
		out    SPL,r16
		sei						   ;使能中斷
		RJMP START
ADC_INT:
		RETI
;====================================================
EXT_INT0:
		RETI
;====================================================
EXT_INT1:
		RETI
;====================================================
PCINT0_INT:
		RETI
;====================================================
PCINT1_INT:
		RETI
;====================================================
PCINT2_INT:
		RETI
;====================================================
WDT_INT:
		RETI
;====================================================
TIM2_COMPA:
		RETI
;====================================================
TIM2_COMPB:
		RETI
;====================================================
TIM2_OVF:
		RETI
;====================================================
TIM1_CAPT:
		RETI
;====================================================
TIM1_COMPA:
		RETI
;====================================================
TIM1_COMPB:
		RETI
;====================================================
TIM1_OVF:
		RETI
;====================================================
TIM0_COMPA:
		RETI
;====================================================
TIM0_COMPB:
		RETI
;====================================================
TIM0_OVF:
		RETI
;====================================================
SPI_STC:
		RETI
;====================================================
USART_RXC:
		RETI
;====================================================
USART_UDRE:
		RETI
;====================================================
USART_TXC:
		RETI
;====================================================
EE_RDY:
		RETI
;====================================================
ANA_COMP:
		RETI
;====================================================
TWI_INT:
		RETI
;====================================================
SPM_RDY:
		RETI
;====================================================
LCD_1602_GET_4BIT_BF:    ;BF IN R16.7
		PUSH R17
		IN R16,DDRD
		CBR R16,1<<PD_1602_D4|1<<PD_1602_D5|1<<PD_1602_D6|1<<PD_1602_D7
		OUT DDRD,R16
		IN R16,PORTD
		SBR R16,1<<PD_1602_RW
		CBR R16,1<<PD_1602_RS|1<<PD_1602_E|1<<PD_1602_D4|1<<PD_1602_D5|1<<PD_1602_D6|1<<PD_1602_D7
		OUT PORTD,R16
		SBR R16,1<<PD_1602_E
		OUT PORTD,R16
		NOP
		IN R17,PIND
		ANDI R17,$F0
		CBR R16,1<<PD_1602_E
		OUT PORTD,R16
		SBR R16,1<<PD_1602_E
		OUT PORTD,R16
		NOP
		PUSH R17
		IN R17,PIND
		CBR R16,1<<PD_1602_E
		OUT PORTD,R16
		MOV R16,R17
		POP R17
		SWAP R16
		ANDI R16,$F
		OR R17,R16
		IN R16,DDRD
		SBR R16,1<<PD_1602_D4|1<<PD_1602_D5|1<<PD_1602_D6|1<<PD_1602_D7
		OUT DDRD,R16
		MOV R16,R17
		POP R17
		RET
;====================================================
LCD_1602_WAIT_BF_CLEAR:
		RCALL LCD_1602_GET_4BIT_BF
		SBRC R16,LCD_1602_BF_BIT
		RJMP LCD_1602_WAIT_BF_CLEAR
		RET
;====================================================
LCD_1602_4BIT_INIT:
		IN R16,DDRD
		SBR R16,1<<PD_1602_RS|1<<PD_1602_RW|1<<PD_1602_E|1<<PD_1602_D4|1<<PD_1602_D5|1<<PD_1602_D6|1<<PD_1602_D7
		OUT DDRD,R16
   LCD_1602_4BIT_INIT_1:
		LDI R16,LCD_1602_COM_DISPLAYSETTING|1<<LCD_1602_BUS_WIDTH_8    ;8BIT
		RCALL LCD_1602_W_4BIT_CMD
		RCALL LCD_1602_GET_4BIT_BF
		SBRS R16,LCD_1602_BF_BIT
		RJMP LCD_1602_4BIT_INIT_1
		LDI R16,LCD_1602_COM_DISPLAYSETTING|0<<LCD_1602_BUS_WIDTH_8|1<<LCD_1602_TWO_LINE    ;4BIT
		RCALL LCD_1602_W_CMD
		LDI R16,LCD_1602_COM_DISPLAYSTATE|0<<LCD_1602_DISPLAY|0<<LCD_1602_CURSOR|0<<LCD_1602_CURSOR_BLINK
		RCALL LCD_1602_W_CMD
		LDI R16,LCD_1602_COM_CLR
		RCALL LCD_1602_W_CMD
		LDI R16,LCD_1602_COM_DISPALYMODE|1<<LCD_1602_MOVE_TO|0<<LCD_1602_S_C_MOVE
		RCALL LCD_1602_W_CMD
		LDI R16,LCD_1602_COM_DISPLAYSTATE|1<<LCD_1602_DISPLAY|0<<LCD_1602_CURSOR|0<<LCD_1602_CURSOR_BLINK
		RCALL LCD_1602_W_CMD
		LDI R16,0
		LDI R30,LOW(USER_CHAR*2)
		LDI R31,HIGH(USER_CHAR*2)
		RCALL LCD_1602_USER_CHAR
		RET
;====================================================
LCD_1602_W_CMD:
		PUSH R16
		RCALL LCD_1602_WAIT_BF_CLEAR
		POP R16
		RCALL LCD_1602_W_4BIT_CMD
		SWAP R16
		RCALL LCD_1602_W_4BIT_CMD
		RET
;====================================================
LCD_1602_W_RAM_STRING:    ;R30:R31 POINT TO STRING,$FF FOR END
		LD R16,Z+
		CPI R16,$FF
		BREQ LCD_1602_W_RAM_STRING_END
		PUSH R16
		PUSH R17
		LDS R16,LCD_1602_LOC
		INC R16
		STS LCD_1602_LOC,R16
		LDI R17,0
		BST R16,6
		BLD R17,0
		ANDI R16,$3F
		CPI R16,$11
		BRNE LCD_1602_W_RAM_STRING_1
		CPI R17,1
		BREQ LCD_1602_W_RAM_STRING_1
		LDI R17,1
		LDI R16,0
		RCALL LCD_1602_SET_LOC
   LCD_1602_W_RAM_STRING_1:
		POP R17
		POP R16
		RCALL LCD_1602_W_DATA
		RJMP LCD_1602_W_RAM_STRING
   LCD_1602_W_RAM_STRING_END:
		RET
;====================================================
LCD_1602_W_FLASH_STRING:    ;R30:R31 POINT TO STRING,$FF FOR END
		LPM R16,Z+
		CPI R16,$FF
		BREQ LCD_1602_W_FLASH_STRING_END
	   PUSH R16
		PUSH R17
		LDS R16,LCD_1602_LOC
		INC R16
		STS LCD_1602_LOC,R16
		LDI R17,0
		BST R16,6
		BLD R17,0
		ANDI R16,$3F
		CPI R16,$11
		BRNE LCD_1602_W_FLASH_STRING_1
		CPI R17,1
		BREQ LCD_1602_W_FLASH_STRING_1
		LDI R17,1
		LDI R16,0
		RCALL LCD_1602_SET_LOC
   LCD_1602_W_FLASH_STRING_1:
		POP R17
		POP R16
		RCALL LCD_1602_W_DATA
		RJMP LCD_1602_W_FLASH_STRING
   LCD_1602_W_FLASH_STRING_END:
		RET
;====================================================
LCD_1602_W_DATA:
		PUSH R16
		RCALL LCD_1602_WAIT_BF_CLEAR
		POP R16
		RCALL LCD_1602_W_4BIT_DATA
		SWAP R16
		RCALL LCD_1602_W_4BIT_DATA
		RET
;====================================================
LCD_1602_W_4BIT_CMD:
		PUSH R17
		PUSH R16
		IN R17,PORTD
		CBR R17,1<<PD_1602_D4|1<<PD_1602_D5|1<<PD_1602_D6|1<<PD_1602_D7|1<<PD_1602_RS|1<<PD_1602_E|1<<PD_1602_RW
		ANDI R16,$F0
		OR R17,R16
		OUT PORTD,R17
		SBR R17,1<<PD_1602_E
		OUT PORTD,R17
		CBR R17,1<<PD_1602_E
		OUT PORTD,R17
		POP R16
		POP R17
		RET
;====================================================
LCD_1602_W_4BIT_DATA:
		PUSH R17
		PUSH R16
		IN R17,PORTD
		CBR R17,1<<PD_1602_D4|1<<PD_1602_D5|1<<PD_1602_D6|1<<PD_1602_D7|1<<PD_1602_E|1<<PD_1602_RW
		SBR R17,1<<PD_1602_RS
		ANDI R16,$F0
		OR R17,R16
		OUT PORTD,R17
		SBR R17,1<<PD_1602_E
		OUT PORTD,R17
		CBR R17,1<<PD_1602_E
		OUT PORTD,R17
		POP R16
		POP R17
		RET
;====================================================
LCD_1602_USER_CHAR:	;R16:BEGIN CHAR,Z:POINT
		LSL R16
		LSL R16
		LSL R16
		ORI R16,LCD_1602_COM_USERCHAR
		RCALL LCD_1602_W_CMD
	LCD_1602_USER_CHAR_LOOP:
		LPM R16,Z+
		CPI R16,$FF
		BREQ LCD_1602_USER_CHAR_END
		RCALL LCD_1602_W_DATA
		RJMP LCD_1602_USER_CHAR_LOOP
	LCD_1602_USER_CHAR_END:
		RET
;====================================================
LCD_1602_SET_LOC:    ;X IN R16(0~$28),Y IN R17(0~1)
		BST R17,0
		BLD R16,6
		STS LCD_1602_LOC,R16
		ORI R16,LCD_1602_COM_LOCATE
		RCALL LCD_1602_W_CMD
		RET
;====================================================
START:
		LDI R16,0<<LCD_1602_BUS_WIDTH_8|1<<LCD_1602_TWO_LINE|0<<LCD_1602_CHR_10|1<<LCD_1602_MOVE_TO|0<<LCD_1602_S_C_MOVE
		STS LCD_1602_SETTINGS,R16
		RCALL LCD_1602_4BIT_INIT
		LDI R16,0
		LDI R17,0
		RCALL LCD_1602_SET_LOC
		LDI R30,LOW(TEST_MSG1*2)
		LDI R31,HIGH(TEST_MSG1*2)
		RCALL LCD_1602_W_FLASH_STRING
		LDI R16,0
		LDI R30,LOW(BATTERY_CHAR*2)
		LDI R31,HIGH(BATTERY_CHAR*2)
		RCALL LCD_1602_USER_CHAR		;NOTE AFTER SET USER CHAR ,LOCATE WILL AUTO GOTO 0,0
		LDI R16,8
		LDI R17,0
		RCALL LCD_1602_SET_LOC
		LDI R30,LOW(TEST_MSG1*2)
		LDI R31,HIGH(TEST_MSG1*2)
		RCALL LCD_1602_W_FLASH_STRING

		RJMP MAIN_LOOP
;====================================================
MAIN_LOOP:
		RJMP MAIN_LOOP
;====================================================
TEST_MSG:
		.DB '1','6','0','2',' ','t','e','s','t',' ','4','b','i','t',' ','D','a','t','a','B','u','s','.',' ','-','-','b','y',' ','B','G','1',$ff,0
USER_CHAR:
LINE_CHAR:
		.DB $00,$00,$00,$00,$00,$00,$1F,$00
		.DB $00,$1F,$00,$00,$00,$00,$00,$00
BATTERY_CHAR:
		.DB $E,$1B,$11,$11,$11,$11,$1F,$00
		.DB $E,$1B,$11,$11,$11,$1F,$1F,$00
		.DB $E,$1B,$11,$11,$1F,$1F,$1F,$00
		.DB $E,$1B,$11,$1F,$1F,$1F,$1F,$00
		.DB $E,$1B,$1F,$1F,$1F,$1F,$1F,$00
		.DB $E,$1F,$1F,$1F,$1F,$1F,$1F,$00,$FF,0
TEST_MSG1:
		.DB 0,1,2,3,4,5,6,7,$FF,0
;====================================================
      .EXIT
 
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区成人| 精品成人一区二区三区| 成人免费看片app下载| 久久丁香综合五月国产三级网站| 香蕉av福利精品导航| 亚洲福利一区二区三区| 一区二区三区日韩| 亚洲午夜成aⅴ人片| 日本不卡视频在线观看| 久久福利视频一区二区| 国产iv一区二区三区| 成人app软件下载大全免费| 91在线观看成人| 91久久精品网| 欧美中文字幕亚洲一区二区va在线 | 亚洲小说春色综合另类电影| 一区二区三区毛片| 蜜桃视频在线观看一区| 激情综合色播五月| 成人精品视频一区二区三区尤物| www.日韩在线| 欧美日韩国产美女| 欧美大胆人体bbbb| 国产精品理论在线观看| 亚洲成a人v欧美综合天堂下载| 美国精品在线观看| 色综合久久99| 久久综合久久久久88| 国产精品久久久久久一区二区三区 | 成人黄色免费短视频| 在线观看日韩电影| 久久久精品日韩欧美| 亚洲精品久久久蜜桃| 美女视频一区在线观看| www.欧美.com| 日韩午夜激情免费电影| 中文字幕中文字幕在线一区| 日韩成人免费看| aaa欧美色吧激情视频| 欧美一区二区三区爱爱| 亚洲美女视频在线观看| 狠狠色丁香婷婷综合久久片| 欧美自拍偷拍一区| 国产精品热久久久久夜色精品三区| 亚洲一区二区精品久久av| 极品少妇xxxx精品少妇偷拍| 欧美日韩色综合| 亚洲色图都市小说| 国产成人av电影| 日韩欧美国产麻豆| 午夜视频一区二区三区| 99久久精品国产麻豆演员表| 精品久久人人做人人爽| 视频一区二区三区在线| 欧美午夜精品一区二区三区| 国产精品三级av在线播放| 国模大尺度一区二区三区| 欧美久久一二三四区| **性色生活片久久毛片| 高清在线观看日韩| 久久精子c满五个校花| 狠狠色狠狠色综合日日91app| 欧美日韩国产首页在线观看| 亚洲精品中文在线| 91蜜桃在线观看| 亚洲人妖av一区二区| 99国产精品久久久久| 国产精品福利影院| 99久久精品情趣| 中文字幕五月欧美| 成人国产在线观看| 亚洲欧美在线观看| 99久久er热在这里只有精品66| 亚洲国产成人在线| www.久久久久久久久| 中文一区二区完整视频在线观看| 国产综合一区二区| 久久久久久综合| 国产成人在线免费观看| 国产精品欧美久久久久无广告| 国产福利一区在线| 国产精品久久久久久户外露出| 99久久国产综合色|国产精品| 亚洲欧美日韩久久| 欧美日韩在线电影| 日韩经典一区二区| 精品成人a区在线观看| 国产成人av电影在线| 亚洲欧洲一区二区在线播放| 色婷婷精品久久二区二区蜜臀av| 亚洲综合成人在线| 日韩天堂在线观看| 国产不卡视频在线播放| 亚洲欧美偷拍卡通变态| 欧美日韩国产a| 精品一区二区在线播放| 国产精品乱码人人做人人爱| 欧美无砖专区一中文字| 奇米精品一区二区三区四区| 国产视频不卡一区| 在线中文字幕不卡| 久热成人在线视频| 亚洲欧美日韩一区二区三区在线观看| 欧美视频第二页| 国产精品白丝jk白祙喷水网站| 亚洲色图在线视频| 日韩免费在线观看| 日本韩国一区二区三区| 久久精品国产亚洲aⅴ| 亚洲欧洲性图库| 日韩午夜激情av| 91久久精品一区二区二区| 久久99深爱久久99精品| 亚洲精品日日夜夜| 国产欧美日韩另类视频免费观看| 91久久精品网| 成人免费观看男女羞羞视频| 亚洲永久精品国产| 国产精品理论片在线观看| 日韩欧美亚洲一区二区| 色婷婷久久久亚洲一区二区三区 | av电影一区二区| 蜜臀av一区二区在线免费观看 | 欧美老肥妇做.爰bbww| 成人美女视频在线观看18| 日韩高清在线一区| 一区二区三区在线视频免费| 国产欧美一区二区精品性色| 3d动漫精品啪啪一区二区竹菊| 成人黄色网址在线观看| 国产成人在线观看| 国内精品不卡在线| 美女精品一区二区| 亚洲成av人片| 亚洲国产日韩在线一区模特| 国产精品传媒入口麻豆| 国产亚洲欧洲997久久综合| 日韩一区二区高清| 欧美精选一区二区| 欧美午夜精品电影| 色天使色偷偷av一区二区| 不卡在线观看av| 成人激情开心网| youjizz国产精品| www.综合网.com| 91网站最新地址| 波波电影院一区二区三区| 粗大黑人巨茎大战欧美成人| 国产精品一区二区久激情瑜伽| 国产中文字幕精品| 精品一区二区久久久| 极品少妇xxxx偷拍精品少妇| 国产在线国偷精品免费看| 美女免费视频一区二区| 国产一区二区视频在线| 国产精一品亚洲二区在线视频| 国产精品自拍av| 成人精品国产一区二区4080| 国产成人精品免费在线| 成人午夜视频在线| 91在线观看高清| 欧美日韩成人综合天天影院| 91精品国产综合久久久久久| 日韩一区二区精品葵司在线 | 欧美国产国产综合| 日韩毛片一二三区| 亚洲二区视频在线| 久久精品国产免费| 国产成人精品亚洲777人妖| 91免费版在线看| 91精品国产综合久久久蜜臀图片| 欧美变态口味重另类| 中文欧美字幕免费| 亚洲成av人综合在线观看| 国内精品嫩模私拍在线| 91视频精品在这里| 日韩一区二区高清| 国产精品看片你懂得| 亚洲国产成人porn| 国产一区在线观看麻豆| 91蜜桃免费观看视频| 欧美一级夜夜爽| 日韩一区欧美小说| 日韩电影在线免费看| 国产福利一区在线| 欧美日韩在线播放三区| 国产亚洲欧美激情| 天天色天天爱天天射综合| 国产精品自拍一区| 欧美日本国产一区| 国产欧美日韩综合精品一区二区 | 精品少妇一区二区三区在线视频 | 欧美亚洲一区三区| 欧美精品一区二区三区蜜臀| 自拍偷拍亚洲欧美日韩| 久久激情五月激情| 在线中文字幕不卡| 国产精品午夜在线观看| 美脚の诱脚舐め脚责91| 91成人免费在线视频|