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

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

?? lcd.s

?? AVR單片機ATmega16(L)應用實例—紅外線轉速儀
?? S
字號:
	.module lcd.c
	.area text(rom, con, rel)
	.dbfile D:\ac19-1\lcd.c
	.dbfunc e ePutstr _ePutstr fV
;              l -> R20
;              i -> R22
;            ptr -> R10,R11
;              y -> R12
;              x -> R14
	.even
_ePutstr::
	xcall push_gset5
	mov R12,R18
	mov R14,R16
	sbiw R28,2
	ldd R10,y+12
	ldd R11,y+13
	.dbline -1
	.dbline 15
; #include <iom16v.h>
; #include <macros.h>
; #define uchar unsigned char
; #define uint unsigned int
; #define LCM_RS_1 PORTB|=BIT(PB0)
; #define LCM_RS_0 PORTB&=~BIT(PB0)
; #define LCM_RW_1 PORTB|=BIT(PB1)
; #define LCM_RW_0 PORTB&=~BIT(PB1)
; #define LCM_EN_1 PORTB|=BIT(PB2)
; #define LCM_EN_0 PORTB&=~BIT(PB2)
; #define DataPort PORTA
; #define Busy 0x80
; //***************************************
; void ePutstr(uchar x,uchar y,uchar const *ptr)
; {
	.dbline 16
; uchar i,l=0;
	clr R20
	xjmp L3
L2:
	.dbline 17
	.dbline 17
	inc R20
	.dbline 17
L3:
	.dbline 17
; 	while(ptr[l]>31){l++;}// ptr[l]大于31時,為ASCII碼,進入while語句循環,
	mov R30,R20
	clr R31
	add R30,R10
	adc R31,R11
	lpm R30,Z
	ldi R24,31
	cp R24,R30
	brlo L2
	.dbline 19
	clr R22
	xjmp L8
L5:
	.dbline 19
; 							 //l累加,計算出字符串長度。
; 	for(i=0;i<l;i++){
	.dbline 20
; 	DisplayOneChar(x++,y,ptr[i]);// 顯示單個字符,同時x軸座標遞增。
	mov R30,R22
	clr R31
	add R30,R10
	adc R31,R11
	lpm R2,Z
	clr R3
	std y+1,R3
	std y+0,R2
	mov R18,R12
	clr R19
	mov R2,R14
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	mov R14,R24
	mov R16,R2
	clr R17
	xcall _DisplayOneChar
	.dbline 21
; 	if(x==8){//若x等于16,進入if語句。
	mov R24,R14
	cpi R24,8
	brne L9
	.dbline 21
	.dbline 22
; 		x=0;y^=1;// x賦0,y與1按位異或(取反)。
	clr R14
	.dbline 22
	ldi R24,1
	eor R12,R24
	.dbline 23
; 	}
L9:
	.dbline 24
L6:
	.dbline 19
	inc R22
L8:
	.dbline 19
	cp R22,R20
	brlo L5
	.dbline -2
L1:
	adiw R28,2
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r l 20 c
	.dbsym r i 22 c
	.dbsym r ptr 10 pkc
	.dbsym r y 12 c
	.dbsym r x 14 c
	.dbend
	.dbfunc e LocateXY _LocateXY fV
;           temp -> R20
;           posy -> R22
;           posx -> R10
	.even
_LocateXY::
	xcall push_gset3
	mov R22,R18
	mov R10,R16
	.dbline -1
	.dbline 28
;   }
; }
; //*************************************
; void LocateXY(char posx,char posy)
; {
	.dbline 30
; uchar temp;
; 	temp&=0x7f;// temp 的變化范圍0~7。
	andi R20,127
	.dbline 31
; 	temp=posx&0x07;//屏蔽高5位。
	mov R20,R10
	andi R20,7
	.dbline 32
; 	posy&=0x01;// posy的變化范圍0~1。
	andi R22,1
	.dbline 33
; 	switch(posy)
	clr R23
	cpi R22,1
	ldi R30,0
	cpc R23,R30
	breq L15
	xjmp L13
X0:
	.dbline 34
; 	{
L15:
	.dbline 35
; 	case 1:temp|=0x40;break;//若posy 為1(顯示第2行),地址碼+0x40。
	ori R20,64
	.dbline 35
	.dbline 36
; 	default:break;
L13:
	.dbline 38
; 	}
; 	temp|=0x80;//指令碼為地址碼+0x80。
	ori R20,128
	.dbline 39
; 	LcdWriteCommand(temp,0);// 將指令temp 寫入LCM,忽略忙信號檢測。
	clr R18
	clr R19
	mov R16,R20
	clr R17
	xcall _LcdWriteCommand
	.dbline -2
L11:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r temp 20 c
	.dbsym r posy 22 c
	.dbsym r posx 10 c
	.dbend
	.dbfunc e DisplayOneChar _DisplayOneChar fV
;          Wdata -> y+4
;              y -> R22
;              x -> R20
	.even
_DisplayOneChar::
	xcall push_gset2
	mov R22,R18
	mov R20,R16
	.dbline -1
	.dbline 43
; }
; //**************************************
; void DisplayOneChar(uchar x,uchar y,uchar Wdata)
; {
	.dbline 44
; LocateXY(x,y);//調用LocateXY 函數定位顯示地址。
	mov R18,R22
	mov R16,R20
	xcall _LocateXY
	.dbline 45
; LcdWriteData(Wdata);//將數據Wdata寫入LCM。
	ldd R16,y+4
	clr R17
	xcall _LcdWriteData
	.dbline -2
L16:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l Wdata 4 c
	.dbsym r y 22 c
	.dbsym r x 20 c
	.dbend
	.dbfunc e InitLcd _InitLcd fV
	.even
_InitLcd::
	.dbline -1
	.dbline 49
; }
; //****************************************
; void InitLcd(void)
; {
	.dbline 50
; LcdWriteCommand(0x38,0); //8位數據傳送,2行顯示,5*7字形,不檢測忙信號
	clr R18
	clr R19
	ldi R16,56
	ldi R17,0
	xcall _LcdWriteCommand
	.dbline 51
; Delay_nms(5);
	ldi R16,5
	ldi R17,0
	xcall _Delay_nms
	.dbline 52
; LcdWriteCommand(0x38,0); //8位數據傳送,2行顯示,5*7字形,不檢測忙信號
	clr R18
	clr R19
	ldi R16,56
	ldi R17,0
	xcall _LcdWriteCommand
	.dbline 53
; Delay_nms(5);
	ldi R16,5
	ldi R17,0
	xcall _Delay_nms
	.dbline 54
; LcdWriteCommand(0x38,0); //8位數據傳送,2行顯示,5*7字形,不檢測忙信號
	clr R18
	clr R19
	ldi R16,56
	ldi R17,0
	xcall _LcdWriteCommand
	.dbline 55
; Delay_nms(5);
	ldi R16,5
	ldi R17,0
	xcall _Delay_nms
	.dbline 56
; LcdWriteCommand(0x38,1); //8位數據傳送,2行顯示,5*7字形,檢測忙信號
	ldi R18,1
	ldi R19,0
	ldi R16,56
	ldi R17,0
	xcall _LcdWriteCommand
	.dbline 57
; LcdWriteCommand(0x08,1); //關閉顯示,檢測忙信號
	ldi R18,1
	ldi R19,0
	ldi R16,8
	ldi R17,0
	xcall _LcdWriteCommand
	.dbline 58
; LcdWriteCommand(0x01,1); //清屏,檢測忙信號
	ldi R18,1
	ldi R19,0
	ldi R16,1
	ldi R17,0
	xcall _LcdWriteCommand
	.dbline 59
; LcdWriteCommand(0x06,1); //顯示光標右移設置,檢測忙信號
	ldi R18,1
	ldi R19,0
	ldi R16,6
	ldi R17,0
	xcall _LcdWriteCommand
	.dbline 60
; LcdWriteCommand(0x0c,1); //顯示屏打開,光標不顯示、不閃爍,檢測忙信號
	ldi R18,1
	ldi R19,0
	ldi R16,12
	ldi R17,0
	xcall _LcdWriteCommand
	.dbline -2
L17:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LcdWriteCommand _LcdWriteCommand fV
;        Attribc -> R22
;            CMD -> R20
	.even
_LcdWriteCommand::
	xcall push_gset2
	mov R22,R18
	mov R20,R16
	.dbline -1
	.dbline 64
; }
; //****************************************
; void LcdWriteCommand(uchar CMD,uchar Attribc)
; {
	.dbline 65
; if(Attribc)WaitForEnable();
	tst R22
	breq L19
	.dbline 65
	xcall _WaitForEnable
L19:
	.dbline 66
; Delay_nms(5);
	ldi R16,5
	ldi R17,0
	xcall _Delay_nms
	.dbline 67
; LCM_RS_0;LCM_RW_0;_NOP();
	cbi 0x18,0
	.dbline 67
	cbi 0x18,1
	.dbline 67
	nop
	.dbline 68
; DataPort=CMD;_NOP();
	out 0x1b,R20
	.dbline 68
	nop
	.dbline 69
; LCM_EN_1;_NOP();_NOP();LCM_EN_0;
	sbi 0x18,2
	.dbline 69
	nop
	.dbline 69
	nop
	.dbline 69
	cbi 0x18,2
	.dbline -2
L18:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r Attribc 22 c
	.dbsym r CMD 20 c
	.dbend
	.dbfunc e LcdWriteData _LcdWriteData fV
;          dataW -> R20
	.even
_LcdWriteData::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 73
; }
; //***************************************
; void LcdWriteData(uchar dataW)
; {
	.dbline 74
; WaitForEnable();
	xcall _WaitForEnable
	.dbline 75
; Delay_nms(5);
	ldi R16,5
	ldi R17,0
	xcall _Delay_nms
	.dbline 76
; LCM_RS_1;LCM_RW_0;_NOP();
	sbi 0x18,0
	.dbline 76
	cbi 0x18,1
	.dbline 76
	nop
	.dbline 77
; DataPort=dataW;_NOP();
	out 0x1b,R20
	.dbline 77
	nop
	.dbline 78
; LCM_EN_1;_NOP();_NOP();LCM_EN_0;
	sbi 0x18,2
	.dbline 78
	nop
	.dbline 78
	nop
	.dbline 78
	cbi 0x18,2
	.dbline -2
L21:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r dataW 20 c
	.dbend
	.dbfunc e WaitForEnable _WaitForEnable fV
;            val -> R16
	.even
_WaitForEnable::
	.dbline -1
	.dbline 82
; }
; //****************************************
; void WaitForEnable(void)
; {
	.dbline 84
; uchar val;
; DataPort=0xff;
	ldi R24,255
	out 0x1b,R24
	.dbline 85
; LCM_RS_0;LCM_RW_1;_NOP();
	cbi 0x18,0
	.dbline 85
	sbi 0x18,1
	.dbline 85
	nop
	.dbline 86
; LCM_EN_1;_NOP();_NOP();
	sbi 0x18,2
	.dbline 86
	nop
	.dbline 86
	nop
	.dbline 87
; DDRA=0x00;
	clr R2
	out 0x1a,R2
	.dbline 88
; val=PINA;
	in R16,0x19
	xjmp L24
L23:
	.dbline 89
	.dbline 89
	in R16,0x19
	.dbline 89
	wdr
	.dbline 89
L24:
	.dbline 89
; while(val&Busy){val=PINA;WDR();}
	sbrc R16,7
	rjmp L23
	.dbline 90
; LCM_EN_0;
	cbi 0x18,2
	.dbline 91
; DDRA=0xff;
	ldi R24,255
	out 0x1a,R24
	.dbline -2
L22:
	.dbline 0 ; func end
	ret
	.dbsym r val 16 c
	.dbend

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区高清不卡| 亚洲日本韩国一区| 欧美中文字幕一区二区三区| 国产传媒日韩欧美成人| 国产一区二区三区在线观看精品 | 久久色在线观看| 日本乱码高清不卡字幕| 99热国产精品| 99精品欧美一区| 色婷婷亚洲综合| 一本到三区不卡视频| 99久久综合狠狠综合久久| 99免费精品视频| 欧美在线看片a免费观看| 欧美伊人久久久久久久久影院| 欧美午夜在线观看| 日韩视频永久免费| 精品sm在线观看| 久久综合国产精品| 欧美久久久久久久久| 在线看日本不卡| 欧美另类高清zo欧美| 欧美日韩你懂的| 久久综合狠狠综合| 国产精品每日更新在线播放网址| 国产日韩欧美精品在线| 亚洲另类在线视频| 美女任你摸久久| 成人动漫一区二区三区| 欧美午夜精品电影| 日韩视频国产视频| 国产精品久久一级| 亚洲成人先锋电影| 国产激情91久久精品导航| 亚洲天堂2016| 久久aⅴ国产欧美74aaa| 国产一区二区三区在线看麻豆| 成人av资源站| 欧美一区二区三区啪啪| 中文字幕av不卡| 婷婷久久综合九色综合伊人色| 久久国产人妖系列| 欧美怡红院视频| 日本一区二区三区在线不卡 | 高清在线成人网| 欧美伊人精品成人久久综合97| 精品国产污污免费网站入口 | 欧美老女人第四色| 亚洲欧洲日韩一区二区三区| 亚洲精品中文在线影院| 欧美不卡一区二区| 国产午夜精品在线观看| 午夜精品成人在线视频| 91亚洲精品一区二区乱码| 久久综合九色综合97_久久久| 亚洲人成在线播放网站岛国| 国产剧情一区二区| 91精品国产综合久久福利软件| 中文字幕一区二区三| 久久福利资源站| 91精品国产91久久综合桃花| 一区视频在线播放| 国产精一区二区三区| 日韩午夜激情av| 一区二区三区四区激情| 成人av网站在线观看免费| 精品女同一区二区| 视频一区欧美精品| 日韩av在线免费观看不卡| 国产999精品久久| 精品国产三级a在线观看| 日韩制服丝袜av| 欧美日本一区二区在线观看| 亚洲综合自拍偷拍| 在线观看日韩一区| 成人免费在线视频观看| 99国产精品久久久久久久久久| 国产婷婷一区二区| 国产东北露脸精品视频| 国产精品无人区| 大白屁股一区二区视频| 国产精品乱码久久久久久| 高清日韩电视剧大全免费| 国产清纯在线一区二区www| 成人国产精品免费| 亚洲免费av在线| 欧美日韩精品一区二区三区| 日韩制服丝袜av| 精品奇米国产一区二区三区| 国产成人自拍高清视频在线免费播放| 国产日韩欧美激情| 色综合久久六月婷婷中文字幕| 亚洲激情六月丁香| 91精品国产一区二区三区香蕉| 蜜臀av一区二区在线观看| 久久老女人爱爱| 99久久精品国产导航| 亚洲影院理伦片| 日韩欧美国产电影| 从欧美一区二区三区| 亚洲一区二区视频在线观看| 欧美人成免费网站| 国产美女一区二区三区| 亚洲视频 欧洲视频| 欧美人伦禁忌dvd放荡欲情| 国产精一区二区三区| 日韩伦理av电影| 在线成人小视频| 国产91清纯白嫩初高中在线观看 | 久久不见久久见免费视频7| 国产亚洲美州欧州综合国| 日本精品视频一区二区| 精一区二区三区| 亚洲视频一区在线观看| 欧美一区二区三区白人| 成人av在线网| 毛片不卡一区二区| 国产精品乱码妇女bbbb| 欧美裸体一区二区三区| 国产91精品在线观看| 午夜欧美电影在线观看| 中文字幕第一区二区| 91精品国产全国免费观看| av不卡一区二区三区| 狠狠色综合日日| 亚洲国产综合视频在线观看| 日本一区二区三区在线不卡| 欧美精品123区| 色综合天天综合网天天狠天天 | 国产精品99久久久久久久女警| 一区二区三区在线观看动漫| 久久色.com| 欧美高清视频www夜色资源网| 成人av网在线| 国产河南妇女毛片精品久久久| 日韩精品电影在线| 亚洲小少妇裸体bbw| 国产精品国产三级国产aⅴ原创| 欧美大肚乱孕交hd孕妇| 欧美精品v国产精品v日韩精品 | 亚洲免费观看高清完整版在线| 精品对白一区国产伦| 3751色影院一区二区三区| 日本精品一区二区三区高清 | 亚洲二区视频在线| 亚洲黄色片在线观看| 中文字幕亚洲一区二区va在线| 国产日韩欧美在线一区| 久久男人中文字幕资源站| 日韩亚洲欧美一区| 日韩一级高清毛片| 91精品国产高清一区二区三区| 欧美日韩一区二区三区免费看 | 久久婷婷一区二区三区| 日韩一区二区视频| 日韩午夜电影在线观看| 精品国产一区二区三区不卡| 欧美videossexotv100| 日韩精品专区在线影院观看| 日韩欧美中文字幕公布| 欧美va亚洲va在线观看蝴蝶网| 日韩欧美一区二区免费| 精品国产1区2区3区| 国产清纯白嫩初高生在线观看91 | 午夜欧美视频在线观看| 日韩成人一级大片| 精品一区二区三区免费播放| 精品一区二区三区免费播放| 国产电影一区在线| 一本到三区不卡视频| 欧美日韩亚洲综合| 日韩三级中文字幕| 国产欧美一区二区三区在线看蜜臀 | av成人免费在线| 91福利视频在线| 欧美一级一级性生活免费录像| 欧美va日韩va| 国产精品美女久久福利网站| 亚洲精品高清在线观看| 日韩电影在线免费观看| 国产精品1区2区| 不卡av在线网| 欧美精品一二三| 国产欧美一区二区在线观看| 亚洲色图一区二区| 麻豆传媒一区二区三区| 国产91丝袜在线播放| 欧美日韩在线三级| 久久精品欧美一区二区三区麻豆| 亚洲欧美一区二区久久| 青青草91视频| 91社区在线播放| 精品国产乱码久久久久久1区2区 | 色综合激情五月| 欧美一区二区三区在线电影| 日本一区二区三区久久久久久久久不 | 亚洲综合一二三区| 国产一区欧美日韩| 欧美亚洲图片小说| 国产亚洲一区二区三区|