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

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

?? lcd.s

?? 點陣型lcd的驅動程序 針對于AVR單片機 稍微修改后可應用于51等型號單片機
?? S
?? 第 1 頁 / 共 2 頁
字號:
	.module LCD.c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\點陣型LCD顯示應用設計\LCD.c
	.dbfunc e Set_DI _Set_DI fV
;             RS -> R16
	.even
_Set_DI::
	.dbline -1
	.dbline 53
; //******************************************************************************
; // File Name : LCD.c
; // Author    : Steaven
; // Created   : 2008-07-27
; // Modified  : 
; // Revision  : V0.0
; //******************************************************************************
; 
; //PIN DESCRIPTION
; //01  2   3  4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20
; //GND VCC V0 RS  RW  EN  D0  D1  D2  D3  D4  D5  D6  D7  CS1 CS2 RST VEE BLA BLK
; //GND +5V V0 PB0 PB1 PB2 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PC6 PC5 PC7 VEE +5V GND
; 
; #include "iom16v.h" 
; #include "DataType.h"
; #include "LCD.h"
; #include "macros.h" 
; 
; #define cLCD_X_MAX   64
; #define cLCD_Y_MAX  128
; 
; //local functions declaration
; void Set_DI(INT8U RS);
; void Set_RW(INT8U RW);
; void Set_EN(INT8U EN);
; void Set_CS1(INT8U CS1);
; void Set_CS2(INT8U CS2);
; void Set_RST(INT8U RST);
; void Set_Data(INT8U data);
; void LCD_Command_DispOnOff(INT8U onoff);
; void LCD_Command_SetStartLine(INT8U startline);
; void LCD_Command_Set_X(INT8U x);
; void LCD_Command_Set_Y(INT8U y);
; void LCD_Command_WriteByte(INT8U data);
; void LCD_Reset(void);
; void LCD_Clear_Line(INT8U wStartLine,INT8U wEndLine);
; void LCD_Init(void);
; void WriteWord(INT8U const *disp,INT8U x,INT8U y);
; void WriteCharacter(const INT8U *disp,INT8U x,INT8U y,INT8U cs);
; void WritePIC(const INT8U *disp);
; void LCD_Write_Char(INT8U y,INT8U x,const INT8U *pdata);
; void LCD_Write_Dot(INT8U x,INT8U y);
; void LCD_Write_Data(INT8U x,INT8U y,INT8U data);	
; void LCD_Write_Picture(INT8U x1,INT8U y1,INT8U x2,INT8U y2,const INT8U *pdata);
; 
; //******************************************************************************
; // Function    : Set_RS
; // Input       : RS - RS Control Line Level
; // Output      : none
; // Description : LCD(1602) Low Level Interface Function
; //******************************************************************************
; void Set_DI(INT8U RS)
; {
	.dbline 54
; 	if(RS == 0)
	tst R16
	brne L2
	.dbline 55
; 	{
	.dbline 56
; 		PORTB &= ~0x01;
	cbi 0x18,0
	.dbline 57
; 	}
	xjmp L3
L2:
	.dbline 59
	.dbline 60
	sbi 0x18,0
	.dbline 61
L3:
	.dbline -2
	.dbline 62
; 	else
; 	{
; 		PORTB |= 0x01;
; 	}
; }
L1:
	.dbline 0 ; func end
	ret
	.dbsym r RS 16 c
	.dbend
	.dbfunc e Set_RW _Set_RW fV
;             RW -> R16
	.even
_Set_RW::
	.dbline -1
	.dbline 71
; 
; //******************************************************************************
; // Function    : Set_RW
; // Input       : RW - RW Control Line Level
; // Output      : none
; // Description : Low Level Interface Function
; //******************************************************************************
; void Set_RW(INT8U RW)
; {
	.dbline 72
; 	if(RW == 0)
	tst R16
	brne L5
	.dbline 73
; 	{
	.dbline 74
; 		PORTB &= ~0x02;
	cbi 0x18,1
	.dbline 75
; 	}
	xjmp L6
L5:
	.dbline 77
	.dbline 78
	sbi 0x18,1
	.dbline 79
L6:
	.dbline -2
	.dbline 80
; 	else
; 	{
; 		PORTB |= 0x02;
; 	}
; }
L4:
	.dbline 0 ; func end
	ret
	.dbsym r RW 16 c
	.dbend
	.dbfunc e Set_EN _Set_EN fV
;             EN -> R16
	.even
_Set_EN::
	.dbline -1
	.dbline 89
; 
; //******************************************************************************
; // Function    : Set_EN
; // Input       : RW - RW Control Line Level
; // Output      : none
; // Description : Low Level Interface Function
; //******************************************************************************
; void Set_EN(INT8U EN)
; {
	.dbline 90
; 	if(EN == 0)
	tst R16
	brne L8
	.dbline 91
; 	{
	.dbline 92
; 		PORTB &= ~0x04;
	cbi 0x18,2
	.dbline 93
; 	}
	xjmp L9
L8:
	.dbline 95
	.dbline 96
	sbi 0x18,2
	.dbline 97
L9:
	.dbline -2
	.dbline 98
; 	else
; 	{
; 		PORTB |= 0x04;
; 	}
; }
L7:
	.dbline 0 ; func end
	ret
	.dbsym r EN 16 c
	.dbend
	.dbfunc e Set_CS2 _Set_CS2 fV
;            CS2 -> R16
	.even
_Set_CS2::
	.dbline -1
	.dbline 107
; 
; //******************************************************************************
; // Function    : Set_CS2
; // Input       : CS2 - CS2 Control Line Level
; // Output      : none
; // Description : Low Level Interface Function
; //******************************************************************************
; void Set_CS2(INT8U CS2)
; {
	.dbline 108
; 	if(CS2 == 0) 
	tst R16
	brne L11
	.dbline 109
; 	{
	.dbline 110
; 		PORTC &= ~0x20;
	cbi 0x15,5
	.dbline 111
; 	}
	xjmp L12
L11:
	.dbline 113
	.dbline 114
	sbi 0x15,5
	.dbline 115
L12:
	.dbline -2
	.dbline 116
;  	else
;  	{
;  		PORTC |= 0x20;
;  	}
; }
L10:
	.dbline 0 ; func end
	ret
	.dbsym r CS2 16 c
	.dbend
	.dbfunc e Set_CS1 _Set_CS1 fV
;            CS1 -> R16
	.even
_Set_CS1::
	.dbline -1
	.dbline 125
; 
; //******************************************************************************
; // Function    : Set_CS1
; // Input       : CS1 - CS1 Control Line Level
; // Output      : none
; // Description : Low Level Interface Function
; //******************************************************************************
; void Set_CS1(INT8U CS1)
; {
	.dbline 126
; 	if(CS1 == 0)
	tst R16
	brne L14
	.dbline 127
; 	{
	.dbline 128
; 		PORTC &= ~0x40;
	cbi 0x15,6
	.dbline 129
; 	}
	xjmp L15
L14:
	.dbline 131
	.dbline 132
	sbi 0x15,6
	.dbline 133
L15:
	.dbline -2
	.dbline 134
; 	else
; 	{
; 		PORTC |= 0x40;
; 	}
; }
L13:
	.dbline 0 ; func end
	ret
	.dbsym r CS1 16 c
	.dbend
	.dbfunc e Set_RST _Set_RST fV
;            RST -> R16
	.even
_Set_RST::
	.dbline -1
	.dbline 144
; 
; 
; //******************************************************************************
; // Function    : Set_CS1
; // Input       : CS1 - CS1 Control Line Level
; // Output      : none
; // Description : Low Level Interface Function
; //******************************************************************************
; void Set_RST(INT8U RST)
; {
	.dbline 145
; 	if(RST == 0)
	tst R16
	brne L17
	.dbline 146
; 	{
	.dbline 147
; 		PORTC &= ~0x80;
	cbi 0x15,7
	.dbline 148
; 	}
	xjmp L18
L17:
	.dbline 150
	.dbline 151
	sbi 0x15,7
	.dbline 152
L18:
	.dbline -2
	.dbline 153
; 	else
; 	{
; 		PORTC |= 0x80;
; 	}
; }
L16:
	.dbline 0 ; func end
	ret
	.dbsym r RST 16 c
	.dbend
	.dbfunc e Set_Data _Set_Data fV
;           data -> R16
	.even
_Set_Data::
	.dbline -1
	.dbline 162
;  
; //******************************************************************************
; // Function    : Set_Data
; // Input       : data - Data Line Level
; // Output      : none
; // Description : Low Level Interface Function
; //******************************************************************************
; void Set_Data(INT8U data)
; {
	.dbline 163
; 	PORTA  = data;
	out 0x1b,R16
	.dbline -2
	.dbline 164
; }
L19:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbend
	.dbfunc e LCD_Command_DispOnOff _LCD_Command_DispOnOff fV
;          onoff -> R20
	.even
_LCD_Command_DispOnOff::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 173
; 
; //******************************************************************************
; // Function    : LCD_Command_DispOnOff
; // Input       : onoff = 1 -> LCD Display Enabled,else Disabled
; // Output      : none
; // Description : Command Level Function,Display ONOFF Control
; //******************************************************************************
; void LCD_Command_DispOnOff(INT8U onoff)
; {
	.dbline 174
; 	Set_RW(0);
	clr R16
	xcall _Set_RW
	.dbline 175
; 	Set_DI(0);
	clr R16
	xcall _Set_DI
	.dbline 176
; 	Set_EN(0);
	clr R16
	xcall _Set_EN
	.dbline 177
; 	Set_Data(0x3E + onoff);
	mov R16,R20
	subi R16,194    ; addi 62
	xcall _Set_Data
	.dbline 178
; 	Set_EN(1);
	ldi R16,1
	xcall _Set_EN
	.dbline 179
; 	Set_EN(0);
	clr R16
	xcall _Set_EN
	.dbline -2
	.dbline 180
; }
L20:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r onoff 20 c
	.dbend
	.dbfunc e LCD_Command_SetStartLine _LCD_Command_SetStartLine fV
;      startline -> R20
	.even
_LCD_Command_SetStartLine::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 189
; 
; //******************************************************************************
; // Function    : LCD_Command_SetStartLine
; // Input       : startline - Display Start Line,See Specification
; // Output      : none
; // Description : Command Level Function,Set Display Start Line
; //******************************************************************************
; void LCD_Command_SetStartLine(INT8U startline)
; {
	.dbline 190
; 	Set_RW(0);
	clr R16
	xcall _Set_RW
	.dbline 191
; 	Set_DI(0);																
	clr R16
	xcall _Set_DI
	.dbline 192
; 	Set_EN(0);																
	clr R16
	xcall _Set_EN
	.dbline 193
; 	Set_Data(0xC0 + startline);
	mov R16,R20
	subi R16,64    ; addi 192
	xcall _Set_Data
	.dbline 194
; 	Set_EN(1);																
	ldi R16,1
	xcall _Set_EN
	.dbline 195
; 	Set_EN(0);																
	clr R16
	xcall _Set_EN
	.dbline -2
	.dbline 196
; }
L21:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r startline 20 c
	.dbend
	.dbfunc e LCD_Command_Set_X _LCD_Command_Set_X fV
;              x -> R20
	.even
_LCD_Command_Set_X::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 205
; 
; //******************************************************************************
; // Function    : LCD_Command_Set_X
; // Input       : x - Display Row,from 0 to 7 for 128*64 LCD
; // Output      : none
; // Description : Command Level Function,Set Operation X Address
; //******************************************************************************
; void LCD_Command_Set_X(INT8U x)
; {
	.dbline 206
; 	Set_RW(0);
	clr R16
	xcall _Set_RW
	.dbline 207
; 	Set_DI(0);
	clr R16
	xcall _Set_DI
	.dbline 208
; 	Set_EN(0);
	clr R16
	xcall _Set_EN
	.dbline 209
; 	Set_Data(0xB8 + x);
	mov R16,R20
	subi R16,72    ; addi 184
	xcall _Set_Data
	.dbline 210
; 	Set_EN(1);
	ldi R16,1
	xcall _Set_EN
	.dbline 211
; 	Set_EN(0);
	clr R16
	xcall _Set_EN
	.dbline -2
	.dbline 212
; }
L22:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r x 20 c
	.dbend
	.dbfunc e LCD_Command_Set_Y _LCD_Command_Set_Y fV
;         column -> R20
	.even
_LCD_Command_Set_Y::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 221
; 
; //******************************************************************************
; // Function    : LCD_Command_Set_Y
; // Input       : y - Display Column,from 0 to 63 for 128*64 LCD
; // Output      : none
; // Description : Command Level Function,Set Operation Y Address
; //******************************************************************************
; void LCD_Command_Set_Y(INT8U column)
; {
	.dbline 222
; 	Set_RW(0);
	clr R16
	xcall _Set_RW
	.dbline 223
; 	Set_DI(0);
	clr R16
	xcall _Set_DI
	.dbline 224
; 	Set_EN(0);
	clr R16
	xcall _Set_EN
	.dbline 225
; 	Set_Data(0x40 + column);
	mov R16,R20
	subi R16,192    ; addi 64
	xcall _Set_Data
	.dbline 226
; 	Set_EN(1);
	ldi R16,1
	xcall _Set_EN
	.dbline 227
; 	Set_EN(0);
	clr R16
	xcall _Set_EN
	.dbline -2
	.dbline 228
; }
L23:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r column 20 c
	.dbend
	.dbfunc e LCD_Command_WriteByte _LCD_Command_WriteByte fV
;           data -> R20
	.even
_LCD_Command_WriteByte::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 237
; 
; //******************************************************************************
; // Function    : LCD_Command_WriteByte
; // Input       : data - Display Data
; // Output      : none
; // Description : Command Level Function,Write Display Data to DDRAM
; //******************************************************************************
; void LCD_Command_WriteByte(INT8U data)
; {
	.dbline 238
; 	Set_RW(0);
	clr R16
	xcall _Set_RW
	.dbline 239
; 	Set_DI(1);
	ldi R16,1
	xcall _Set_DI
	.dbline 240
; 	Set_EN(0);
	clr R16
	xcall _Set_EN
	.dbline 241
; 	Set_Data(data);
	mov R16,R20
	xcall _Set_Data
	.dbline 242
; 	Set_EN(1);
	ldi R16,1
	xcall _Set_EN
	.dbline 243
; 	Set_EN(0);
	clr R16
	xcall _Set_EN
	.dbline -2
	.dbline 244
; }
L24:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r data 20 c
	.dbend
	.dbfunc e LCD_Reset _LCD_Reset fV
	.even
_LCD_Reset::
	.dbline -1
	.dbline 253
; 
; //******************************************************************************
; // Function    : LCD_Reset
; // Input       : none
; // Output      : none
; // Description : Command Level Function,Soft RESET LCD Module
; //******************************************************************************
; void LCD_Reset(void)
; {
	.dbline 254
; 	Set_RST(0);
	clr R16
	xcall _Set_RST
	.dbline 255
; 	Set_RST(1);
	ldi R16,1
	.dbline -2
	.dbline 256
; }
L25:
	.dbline 0 ; func end
	xjmp _Set_RST
	.dbend
	.dbfunc e LCD_Init _LCD_Init fV
	.even
_LCD_Init::
	.dbline -1
	.dbline 265
; 
; //******************************************************************************
; // Function    : LCD_Init
; // Input       : none
; // Output      : none
; // Description : Application Level Function,Init LCD
; //******************************************************************************
; void LCD_Init(void)
; {
	.dbline 266
; 	LCD_Reset();
	xcall _LCD_Reset
	.dbline 267
; 	LCD_Clear_Line(0,7);
	ldi R18,7
	clr R16
	xcall _LCD_Clear_Line
	.dbline 268
; 	LCD_Command_DispOnOff(1);
	ldi R16,1
	xcall _LCD_Command_DispOnOff

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产调教视频一区| 亚洲无线码一区二区三区| 免费成人av资源网| 高潮精品一区videoshd| 欧美日韩二区三区| 国产精品乱码久久久久久| 麻豆一区二区三| 日本丶国产丶欧美色综合| 久久免费的精品国产v∧| 亚洲一卡二卡三卡四卡| 成人av在线一区二区三区| 欧美一区二区精品在线| 一区二区视频在线| 懂色av中文字幕一区二区三区| 欧美一卡二卡三卡| 午夜精品一区二区三区电影天堂| 91丨porny丨户外露出| 久久久精品免费免费| 久久99国产乱子伦精品免费| 91麻豆精品国产91久久久久久久久| 亚洲少妇30p| 福利91精品一区二区三区| wwww国产精品欧美| 激情六月婷婷久久| 精品粉嫩aⅴ一区二区三区四区| 午夜精品久久久久久久久久久 | 国产精品久久影院| 激情国产一区二区| 日韩精品一区二区三区蜜臀| 日韩专区在线视频| 欧美老肥妇做.爰bbww视频| 亚洲一区免费在线观看| 91电影在线观看| 亚洲免费观看高清| 欧美伊人久久大香线蕉综合69| 亚洲天堂中文字幕| 色成人在线视频| 亚洲午夜电影网| 欧美一区二区美女| 激情五月婷婷综合| 国产日产欧美一区| www.视频一区| 亚洲国产视频a| 日韩欧美一二三区| 风间由美一区二区av101| 中文字幕中文字幕在线一区 | 亚洲天堂2016| 欧美在线小视频| 日本伊人色综合网| 久久久久一区二区三区四区| 北条麻妃一区二区三区| 一区二区三区中文字幕电影| 欧美精品久久99久久在免费线 | 欧美欧美欧美欧美| 黄一区二区三区| 国产精品久久久久桃色tv| 在线精品视频一区二区三四| 日韩不卡一区二区三区| 久久精品夜色噜噜亚洲a∨| 97精品久久久午夜一区二区三区 | www亚洲一区| 国产成人免费9x9x人网站视频| 国产精品久久久久久久久果冻传媒 | 偷拍亚洲欧洲综合| 精品国精品国产| 91一区二区在线| 久久精品久久久精品美女| 国产精品网站在线| 欧美电影在线免费观看| 国产成人99久久亚洲综合精品| 亚洲乱码中文字幕综合| 日韩精品综合一本久道在线视频| 成人av网站免费观看| 日本视频一区二区| 亚洲品质自拍视频| 精品美女被调教视频大全网站| av成人动漫在线观看| 理论片日本一区| 一区二区在线免费观看| 国产日产欧美精品一区二区三区| 欧美性videosxxxxx| 成人综合在线网站| 免费观看在线色综合| 亚洲综合激情另类小说区| 久久久久久久综合| 日韩视频一区二区在线观看| 色婷婷精品久久二区二区蜜臀av| 国内精品自线一区二区三区视频| 亚洲靠逼com| 欧美极品xxx| 欧美大尺度电影在线| 精品视频在线看| 91污片在线观看| 成人小视频免费观看| 麻豆精品在线播放| 肉肉av福利一精品导航| 亚洲美女在线一区| 亚洲欧洲美洲综合色网| 国产欧美综合色| 久久久久亚洲蜜桃| 久久亚洲精精品中文字幕早川悠里| 555www色欧美视频| 欧美日韩小视频| 欧美色网一区二区| 色伊人久久综合中文字幕| 不卡视频一二三四| 成人激情视频网站| 成人福利视频网站| 成人国产精品免费| av在线不卡免费看| jizz一区二区| 99精品热视频| 色综合欧美在线| 一本色道久久加勒比精品| 91亚洲精华国产精华精华液| av一区二区三区四区| eeuss国产一区二区三区| a4yy欧美一区二区三区| 99re热视频精品| 色诱视频网站一区| 91国产丝袜在线播放| 欧美中文字幕不卡| 欧美日韩aaa| 日韩免费视频线观看| 久久久久免费观看| 国产精品国产馆在线真实露脸| 国产精品国产三级国产三级人妇| 亚洲欧美综合网| 亚洲国产精品久久人人爱| 天堂影院一区二区| 九九视频精品免费| 成人性视频网站| 91麻豆高清视频| 欧美日韩国产乱码电影| 日韩欧美另类在线| 国产精品国产三级国产a| 亚洲一线二线三线视频| 蜜臀av一区二区在线观看| 精品亚洲国内自在自线福利| 成人激情免费视频| 91久久久免费一区二区| 7777精品伊人久久久大香线蕉的 | 91九色02白丝porn| 欧美肥妇bbw| 日本一区免费视频| 亚洲最大成人综合| 精品一区二区在线播放| kk眼镜猥琐国模调教系列一区二区| 在线观看国产91| 久久久久久久久久久久久久久99| 亚洲男人的天堂av| 老司机免费视频一区二区三区| 国产成+人+日韩+欧美+亚洲| 欧美视频精品在线观看| 久久久不卡影院| 亚洲线精品一区二区三区 | 色成年激情久久综合| 日韩一级欧美一级| 自拍偷拍亚洲综合| 久久不见久久见免费视频1| 色综合久久久久综合体桃花网| 日韩欧美成人激情| 亚洲激情中文1区| 极品少妇xxxx精品少妇| 国产自产视频一区二区三区| 精品美女一区二区三区| 首页国产欧美久久| 亚洲综合区在线| 国产精品一区二区视频| 欧美日韩国产免费| 亚洲免费看黄网站| 国产精品自拍网站| 日韩视频一区二区在线观看| 一区二区视频在线看| 成人性视频免费网站| 欧美videofree性高清杂交| 亚洲第一福利一区| 99天天综合性| 欧美国产日韩亚洲一区| 国产一区亚洲一区| 精品国产乱码久久| 免费观看成人av| 欧美日韩在线三区| 亚洲综合免费观看高清完整版| 北条麻妃国产九九精品视频| 久久伊99综合婷婷久久伊| 免费成人av资源网| 91精品国产高清一区二区三区蜜臀| 亚洲精品视频在线观看免费| 成人h动漫精品| 国产精品丝袜久久久久久app| 国产一二精品视频| 日韩一区二区三区视频在线 | 福利一区二区在线| 久久久精品tv| 国产高清精品网站| 国产日韩综合av| 成人黄色a**站在线观看| 国产欧美日韩三区| 国产+成+人+亚洲欧洲自线|