⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ks0108.s

📁 AVR(ATmega16)的LCD_KS0108控制器的驱动程序。
💻 S
📖 第 1 页 / 共 4 页
字号:
	.module KS0108.c
	.area text(rom, con, rel)
	.dbfile D:/PROGRA~1/AVRTOO~1/Icc/include/delay.h
	.dbfunc e delay_1us _delay_1us fV
	.even
_delay_1us::
	.dbline -1
	.dbline 2
; 
; /*----------------------------------
	.dbline 3
;  成功地LCD_ks0108(128*64)!
	nop
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay_nus _delay_nus fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_nus::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 7
;  可显示字符,汉字,图象,并可滚动显示!
;  LGM12641BS1R--KS0108 Driver
;  2007.4.14
; -------------------------------------*/
	.dbline 8
;  
	clr R20
	clr R21
	.dbline 9
; #include <iom16v.h>
	xjmp L6
L3:
	.dbline 10
	xcall _delay_1us
L4:
	.dbline 9
	subi R20,255  ; offset = 1
	sbci R21,255
L6:
	.dbline 9
	cp R20,R22
	cpc R21,R23
	brlo L3
	.dbline -2
L2:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfunc e delay_1ms _delay_1ms fV
;              i -> R16,R17
	.even
_delay_1ms::
	.dbline -1
	.dbline 14
; #include <macros.h>
; #include <delay.h>
; #include "LCD.h"
; #include "zimo2.h"
; 
	.dbline 16
	clr R16
	clr R17
	xjmp L11
L8:
	.dbline 16
L9:
	.dbline 16
	subi R16,255  ; offset = 1
	sbci R17,255
L11:
	.dbline 16
; #define uchar unsigned char
; #define uint  unsigned int 
	cpi R16,116
	ldi R30,4
	cpc R17,R30
	brlo L8
	.dbline -2
L7:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.dbfunc e delay_nms _delay_nms fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_nms::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 20
; 
; void main()
; {uchar i=0;
;  LCD_Init();
	.dbline 21
; /* LCD_WriteCH(0,4,L,X1);
	clr R20
	clr R21
	.dbline 22
;  LCD_WriteHZ(2,0,L,hz5);
	xjmp L16
L13:
	.dbline 23
	xcall _delay_1ms
L14:
	.dbline 22
	subi R20,255  ; offset = 1
	sbci R21,255
L16:
	.dbline 22
	cp R20,R22
	cpc R21,R23
	brlo L13
	.dbline -2
L12:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\LCD_KS0108/LCD.h
	.dbfunc e LCD_WriteC _LCD_WriteC fV
;            cmd -> R20
	.even
_LCD_WriteC::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 62
;  LCD_WriteHZ(3,0,L,hz5);
;  LCD_WriteHZ(4,0,L,hz5);
;  LCD_WriteHZ(5,0,L,hz5);
;  LCD_WriteHZ(6,0,L,hz5);
;  
;  LCD_WriteCH(0,14,L,MaoHao);
;  
;  LCD_WriteCH(0,24,L,X4);
;  LCD_WriteHZ(4,20,L,hz5);
;  LCD_WriteHZ(5,20,L,hz5);
;  LCD_WriteHZ(6,20,L,hz5);
;  
;  LCD_WriteCH(0,34,L,MaoHao);
;  
;  LCD_WriteCH(0,44,L,X3);
;  LCD_WriteHZ(5,40,L,hz5);
;  LCD_WriteHZ(6,40,L,hz5);
;  
;  LCD_WriteCH(0,56,L,MaoHao);
;  
;  LCD_WriteHZ(0,10,R,X3);
;  LCD_WriteHZ(6,0,R,hz5);
;  
;  LCD_WriteHZ(3,20,R,hz5);
;  LCD_WriteHZ(4,20,R,hz5);
;  LCD_WriteHZ(5,20,R,hz5);
;  LCD_WriteHZ(6,20,R,hz5);
;  LCD_WriteHZ(4,40,R,hz5);
;  LCD_WriteHZ(5,40,R,hz5);
;  LCD_WriteHZ(6,40,R,hz5);
;  LCD_WriteHZ(6,40,R,hz5);*/
;  
; /* LCD_WriteHZ(0,16,L,hz0);
;  LCD_WriteHZ(1,32,L,hz1);
;  LCD_WriteHZ(2,48,L,hz2);
;  LCD_WriteHZ(3,0,R,hz3);
;  LCD_WriteHZ(4,16,R,hz4);
;  delay_nms(2500);
;  while(1){
;    Set_Startline(i++);
	.dbline 62
	cbi 0x1b,3
	.dbline 63
;    if(i==64) i=0;
	cbi 0x1b,2
	.dbline 64
;  	LCD_WritePIC(0,8,Hello);}	*/
	cbi 0x1b,4
	.dbline 65
;  LCD_WritePIC(0,8,Hello);
	out 0x18,R20
	.dbline 66
;  delay_nms(500);
	sbi 0x1b,4
	.dbline 67
;  LCD_WritePIC(0,8,psc);
	ldi R16,1
	ldi R17,0
	xcall _delay_nus
	.dbline 68
;  delay_nms(500);
	cbi 0x1b,4
	.dbline 69
;  LCD_WritePIC(0,8,gui);
	ldi R16,20
	ldi R17,0
	xcall _delay_nus
	.dbline -2
L17:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r cmd 20 c
	.dbend
	.dbfunc e LCD_WriteD _LCD_WriteD fV
;           data -> R20
	.even
_LCD_WriteD::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 72
; }
; }
; }
	.dbline 72
	cbi 0x1b,3
	.dbline 73
; }
	sbi 0x1b,2
	.dbline 74
; }
	cbi 0x1b,4
	.dbline 75
; }
	out 0x18,R20
	.dbline 76
; }
	sbi 0x1b,4
	.dbline 77
; }
	ldi R16,1
	ldi R17,0
	xcall _delay_nus
	.dbline 78
; }
	cbi 0x1b,4
	.dbline 79
; }
	ldi R16,20
	ldi R17,0
	xcall _delay_nus
	.dbline -2
L18:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r data 20 c
	.dbend
	.dbfunc e Set_XY _Set_XY fV
;              y -> R20
;              x -> R22
	.even
_Set_XY::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 87
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 87
	subi R22,72    ; addi 184
	.dbline 88
; }
	subi R20,192    ; addi 64
	.dbline 89
; }
	mov R16,R22
	xcall _LCD_WriteC
	.dbline 90
; }
	mov R16,R20
	xcall _LCD_WriteC
	.dbline -2
L19:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r y 20 c
	.dbsym r x 22 c
	.dbend
	.dbfunc e Set_Startline _Set_Startline fV
;              i -> R20
	.even
_Set_Startline::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 96
; }
; }
; }
; }
; }
; }
	.dbline 97
; }
	mov R16,R20
	subi R16,64    ; addi 192
	xcall _LCD_WriteC
	.dbline -2
L20:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.dbfunc e LCD_Select _LCD_Select fV
;              x -> R16
	.even
_LCD_Select::
	.dbline -1
	.dbline 104
; }
; }
; }
; }
; }
; }
; }
	.dbline 104
	cpi R16,16
	brne L22
	.dbline 104
	.dbline 105
; }
	sbi 0x1b,0
	.dbline 106
; }
	cbi 0x1b,1
	.dbline 106
	xjmp L23
L22:
	.dbline 107
; }
	cpi R16,32
	brne L24
	.dbline 107
	.dbline 108
; }
	cbi 0x1b,0
	.dbline 109
; }
	sbi 0x1b,1
	.dbline 109
	xjmp L25
L24:
	.dbline 110
; }
	cpi R16,48
	brne L26
	.dbline 110
	.dbline 111
; }
	sbi 0x1b,1
	.dbline 112
; }
	sbi 0x1b,0
	.dbline 112
	xjmp L27
L26:
	.dbline 113
; }
	.dbline 114
; }
	cbi 0x1b,0
	.dbline 115
; }
	cbi 0x1b,1
	.dbline 115
L27:
L25:
L23:
	.dbline -2
L21:
	.dbline 0 ; func end
	ret
	.dbsym r x 16 c
	.dbend
	.dbfunc e LCD_Clear _LCD_Clear fV
;              i -> R20
;              j -> R22
;              k -> R22
	.even
_LCD_Clear::
	xcall push_gset2
	mov R22,R16
	.dbline -1
	.dbline 122
; }
; }
; }
; }
; }
; }
; }
	.dbline 123
; }
	ldi R16,48
	xcall _LCD_Select
	.dbline 124
	mov R20,R22
	xjmp L32
L29:
	.dbline 124
; }
	.dbline 125
; }
	clr R18
	mov R16,R20
	xcall _Set_XY
	.dbline 126
	clr R22
	xjmp L36
L33:
	.dbline 126
	.dbline 127
	clr R16
	xcall _LCD_WriteD
	.dbline 127
L34:
	.dbline 126
	inc R22
L36:
	.dbline 126
	cpi R22,64
	brlo L33
	.dbline 127
L30:
	.dbline 124
	inc R20
L32:
	.dbline 124
	cpi R20,8
	brlo L29
	.dbline -2
L28:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r j 22 c
	.dbsym r k 22 c
	.dbend
	.dbfunc e LCD_Init _LCD_Init fV
	.even
_LCD_Init::
	.dbline -1
	.dbline 134
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 134
	sbi 0x1a,0
	.dbline 135
; }
	sbi 0x1a,1
	.dbline 136
; }
	sbi 0x1a,3
	.dbline 137
; }
	sbi 0x1a,4
	.dbline 138
; }
	sbi 0x1a,2
	.dbline 139
; }
	ldi R24,255
	out 0x17,R24
	.dbline 140
; }
	ldi R16,63
	xcall _LCD_WriteC
	.dbline 141
; }
	ldi R16,192
	xcall _LCD_WriteC
	.dbline 142
; }
	clr R18
	clr R16
	xcall _Set_XY
	.dbline -2
L37:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LCD_WriteHZ _LCD_WriteHZ fV
;              i -> R20
;             hz -> R22,R23
;             cs -> y+8
;              y -> R10
;              x -> R12
	.even
_LCD_WriteHZ::
	xcall push_gset4
	mov R10,R18
	mov R12,R16
	ldd R22,y+10
	ldd R23,y+11
	.dbline -1
	.dbline 150
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 151
; }
	ldd R16,y+8
	xcall _LCD_Select
	.dbline 152
; }
	mov R18,R10
	mov R16,R12
	xcall _Set_XY
	.dbline 153
	clr R20
	xjmp L42
L39:
	.dbline 153
	.dbline 154
	movw R30,R22
	lpm R16,Z
	xcall _LCD_WriteD
	.dbline 155
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 155
L40:
	.dbline 153
	inc R20
L42:
	.dbline 153
; }
	cpi R20,16
	brlo L39
	.dbline 156
; }
; }
; }
	mov R18,R10
	mov R16,R12
	subi R16,255    ; addi 1
	xcall _Set_XY
	.dbline 157
	clr R20
	xjmp L46
L43:
	.dbline 157
	.dbline 158
	movw R30,R22
	lpm R16,Z
	xcall _LCD_WriteD
	.dbline 159
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 159
L44:
	.dbline 157
	inc R20
L46:
	.dbline 157
; }
	cpi R20,16
	brlo L43
	.dbline -2
L38:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r hz 22 pkc
	.dbsym l cs 8 c
	.dbsym r y 10 c
	.dbsym r x 12 c
	.dbend
	.dbfunc e LCD_WriteCH _LCD_WriteCH fV
;              i -> R20
;             ch -> R22,R23
;             cs -> y+8
;              y -> R10
;              x -> R12
	.even
_LCD_WriteCH::
	xcall push_gset4
	mov R10,R18
	mov R12,R16
	ldd R22,y+10
	ldd R23,y+11
	.dbline -1
	.dbline 168
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 169
; }
	ldd R16,y+8
	xcall _LCD_Select
	.dbline 170
; }
	mov R18,R10
	mov R16,R12
	xcall _Set_XY
	.dbline 171
	clr R20
	xjmp L51
L48:
	.dbline 171
	.dbline 172
	movw R30,R22
	lpm R16,Z
	xcall _LCD_WriteD
	.dbline 173
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 173
L49:
	.dbline 171
	inc R20
L51:
	.dbline 171
; }
	cpi R20,8
	brlo L48
	.dbline 174
; }
; }
; }
	mov R18,R10
	mov R16,R12
	subi R16,255    ; addi 1
	xcall _Set_XY
	.dbline 175
	clr R20
	xjmp L55
L52:
	.dbline 175
	.dbline 176
	movw R30,R22
	lpm R16,Z
	xcall _LCD_WriteD
	.dbline 177
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 177
L53:
	.dbline 175
	inc R20
L55:
	.dbline 175
; }
	cpi R20,8
	brlo L52
	.dbline -2
L47:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r ch 22 pkc
	.dbsym l cs 8 c
	.dbsym r y 10 c
	.dbsym r x 12 c
	.dbend
	.dbfunc e LCD_WritePIC _LCD_WritePIC fV
;             jj -> R22
;             ii -> R20
;             kk -> R22
;            pic -> R10,R11
;              j -> R12
;              i -> R14
	.even
_LCD_WritePIC::
	xcall push_gset5
	mov R12,R18
	mov R14,R16
	ldd R10,y+10
	ldd R11,y+11
	.dbline -1
	.dbline 185
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 186
; }
	clr R20
	.dbline 186
	clr R22
	.dbline 186
	.dbline 187
	mov R20,R14
	xjmp L60
L57:
	.dbline 187
; }
	.dbline 188
	clr R22
	xjmp L64
L61:
	.dbline 188
	.dbline 189
	ldi R16,16
	xcall _LCD_Select
	.dbline 190
	mov R18,R22
	mov R16,R20
	xcall _Set_XY
	.dbline 191
	movw R30,R10
	lpm R16,Z
	xcall _LCD_WriteD
	.dbline 192
	movw R24,R10
	adiw R24,1
	movw R10,R24
	.dbline 192
L62:
	.dbline 188
	inc R22
L64:
	.dbline 188
; }
	cpi R22,64
	brlo L61
	.dbline 193
	clr R22
	xjmp L68
L65:
	.dbline 193
	.dbline 194
	ldi R16,32
	xcall _LCD_Select
	.dbline 195
	mov R18,R22
	mov R16,R20
	xcall _Set_XY
	.dbline 196
	movw R30,R10
	lpm R16,Z
	xcall _LCD_WriteD
	.dbline 197
	movw R24,R10
	adiw R24,1
	movw R10,R24
	.dbline 197
L66:
	.dbline 193
	inc R22
L68:
	.dbline 193
	cpi R22,64
	brlo L65
	.dbline 198
L58:
	.dbline 187
	inc R20
L60:
	.dbline 187
	cp R20,R12
	brlo L57
	.dbline -2
L56:
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r jj 22 c
	.dbsym r ii 20 c
	.dbsym r kk 22 c
	.dbsym r pic 10 pkc
	.dbsym r j 12 c
	.dbsym r i 14 c
	.dbend
	.area lit(rom, con, rel)
_hz2::
	.byte 0,248
	.byte 140,139
	.byte 136,248
	.byte 64,48
	.byte 143,8
	.byte 8,8
	.byte 8,248
	.byte 0,0
	.byte 0,127
	.byte 16,16
	.byte 16,63
	.byte 0,0
	.byte 0,3
	.byte 38,64
	.byte 32,31
	.byte 0,0
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\LCD_KS0108/zimo2.h
	.dbsym e hz2 _hz2 A[32:32]kc
_hz1::
	.byte 2,242
	.byte 146,18
	.byte 18,18
	.byte 242,2
	.byte 242,'R
	.byte 146,18
	.byte 18,242
	.byte 2,0
	.byte 0,127
	.byte 0,7
	.byte 34,96
	.byte 63,0
	.byte 127,0
	.byte 35,33
	.byte 96,63
	.byte 0,0
	.dbsym e hz1 _hz1 A[32:32]kc
_hz0::
	.byte 0,132
	.byte 132,148
	.byte 149,150
	.byte 148,252
	.byte 148,150
	.byte 149,148
	.byte 148,132
	.byte 128,0
	.byte 128,128
	.byte 'D,'D
	.byte 36,20
	.byte 12,7
	.byte 12,20
	.byte 36,'d
	.byte 196,'D
	.byte 0,0
	.dbsym e hz0 _hz0 A[32:32]kc
_hz3::
	.byte 32,32
	.byte 32,32
	.byte 224,56
	.byte 39,32
	.byte 32,32
	.byte 224,32
	.byte 32,32
	.byte 32,0
	.byte 128,128
	.byte 64,'A
	.byte 34,34
	.byte 20,12
	.byte 12,11
	.byte 16,48
	.byte 224,64
	.byte 0,0
	.dbsym e hz3 _hz3 A[32:32]kc
_hz4::
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 192,63
	.byte 194,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,64
	.byte 32,16
	.byte 12,3
	.byte 0,0
	.byte 1,6
	.byte 12,24
	.byte 48,96
	.byte 32,0
	.dbsym e hz4 _hz4 A[32:32]kc
_hz5::
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.dbsym e hz5 _hz5 A[32:32]kc
_X0::
	.byte 0,224
	.byte 16,8
	.byte 8,16
	.byte 224,0
	.byte 0,15
	.byte 16,32

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -