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

📄 1602.s

📁 这是用于atmega128控制1602的源程序
💻 S
字号:
	.module _1602.c
	.area text(rom, con, rel)
	.dbfile E:\产品\mega128-board\程序\1602\1602.c
	.dbfile E:\产品\mega128-board\程序\1602\1602.h
	.dbfunc e s_ms _s_ms fV
;             ms -> R16,R17
	.even
_s_ms::
	.dbline -1
	.dbline 15
; ///////////////////////////////////////////////////////////
; //////////////北京东控自动化技术有限公司///////////////////
; /////////////////////作者:乌东东//////////////////////////
; ///////////////////////2008-9-18///////////////////////////
; ///////////////////////版权所有////////////////////////////
; 
; 
; #include<iom128v.h>
; #include"1602.h"
; #define uchar unsigned char 
; #define uint unsigned int 
; 
; uchar wz[]={"WWW.ISMCU.COM"};
; uchar gd[]={"Good Luck!"};
; 
	.dbline 16
; main()
	xjmp L5
L2:
	.dbline 16
L3:
	.dbline 16
	subi R16,1
	sbci R17,0
L5:
	.dbline 16
	ldi R24,1
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brlo L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r ms 16 i
	.dbend
	.dbfunc e busy _busy fV
;           temp -> R20
	.even
_busy::
	st -y,R20
	.dbline -1
	.dbline 21
; {
; DDRA=0xff;
; PORTA=0xff;
; DDRG=0xff;
; PORTG=0xff;
	.dbline 23
; LcdInit();
; WriteChar(1,1,13,wz);
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 24
; WriteChar(2,3,10,gd);
	lds R24,101
	andi R24,254
	sts 101,R24
	.dbline 25
; }
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 26
	lds R24,101
	ori R24,2
	sts 101,R24
	.dbline 27
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	xjmp L8
L7:
	.dbline 29
	.dbline 30
	lds R24,101
	ori R24,4
	sts 101,R24
	.dbline 31
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 32
	clr R2
	out 0x1a,R2
	.dbline 33
	ldi R24,255
	out 0x1b,R24
	.dbline 34
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 35
	in R20,0x19
	andi R20,128
	.dbline 36
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 37
	ldi R24,255
	out 0x1a,R24
	.dbline 38
	out 0x1b,R24
	.dbline 39
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 40
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 41
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 42
L8:
	.dbline 28
	tst R20
	brne L7
X1:
	.dbline -2
L6:
	.dbline 0 ; func end
	ld R20,y+
	ret
	.dbsym r temp 20 c
	.dbend
	.dbfunc e writecom _writecom fV
;            com -> R10
	.even
_writecom::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 47
	.dbline 48
	xcall _busy
	.dbline 49
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 50
	lds R24,101
	andi R24,254
	sts 101,R24
	.dbline 51
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 52
	lds R24,101
	andi R24,253
	sts 101,R24
	.dbline 53
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 54
	lds R24,101
	ori R24,4
	sts 101,R24
	.dbline 55
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 56
	out 0x1b,R10
	.dbline 57
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 58
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 59
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline -2
L10:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r com 10 c
	.dbend
	.dbfunc e LcdInit _LcdInit fV
	.even
_LcdInit::
	.dbline -1
	.dbline 64
	.dbline 65
	ldi R16,56
	xcall _writecom
	.dbline 66
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 67
	ldi R16,1
	xcall _writecom
	.dbline 68
	ldi R16,10000
	ldi R17,39
	xcall _s_ms
	.dbline 69
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 70
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 71
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 72
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 73
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 74
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 75
	ldi R16,2
	xcall _writecom
	.dbline 76
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 77
	ldi R16,6
	xcall _writecom
	.dbline 78
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 79
	ldi R16,12
	xcall _writecom
	.dbline 80
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 81
	ldi R16,56
	xcall _writecom
	.dbline 82
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e writedata _writedata fV
;           data -> R10
	.even
_writedata::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 87
	.dbline 88
	xcall _busy
	.dbline 89
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 90
	lds R24,101
	ori R24,1
	sts 101,R24
	.dbline 91
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 92
	lds R24,101
	andi R24,253
	sts 101,R24
	.dbline 93
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 94
	lds R24,101
	ori R24,4
	sts 101,R24
	.dbline 95
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 96
	out 0x1b,R10
	.dbline 97
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 98
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 99
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline -2
L12:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r data 10 c
	.dbend
	.dbfunc e readdata _readdata fc
;           temp -> R10
	.even
_readdata::
	st -y,R10
	.dbline -1
	.dbline 105
	.dbline 107
	xcall _busy
	.dbline 108
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 109
	lds R24,101
	ori R24,1
	sts 101,R24
	.dbline 110
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 111
	lds R24,101
	ori R24,2
	sts 101,R24
	.dbline 112
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 113
	lds R24,101
	ori R24,4
	sts 101,R24
	.dbline 114
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 115
	clr R2
	out 0x1a,R2
	.dbline 116
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 117
	in R10,0x19
	.dbline 118
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 119
	ldi R24,255
	out 0x1a,R24
	.dbline 120
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 121
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 122
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 123
	mov R16,R10
	.dbline -2
L13:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r temp 10 c
	.dbend
	.dbfunc e WriteCGRAM _WriteCGRAM fV
;              t -> R10,R11
;              i -> R20,R21
;        pBuffer -> R22,R23
;            num -> R10,R11
	.even
_WriteCGRAM::
	xcall push_xgsetF00C
	movw R22,R18
	movw R10,R16
	.dbline -1
	.dbline 133
	.dbline 135
	ldi R16,64
	xcall _writecom
	.dbline 136
	lds R24,101
	ori R24,1
	sts 101,R24
	.dbline 137
	lds R24,101
	andi R24,253
	sts 101,R24
	.dbline 138
	movw R20,R10
	xjmp L18
L15:
	.dbline 139
	.dbline 140
	movw R30,R22
	elpm R10,Z+
	elpm R11,Z
	.dbline 141
	lds R24,101
	ori R24,4
	sts 101,R24
	.dbline 142
	out 0x1b,R10
	.dbline 143
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 144
	subi R22,254  ; offset = 2
	sbci R23,255
	.dbline 145
L16:
	.dbline 138
	subi R20,1
	sbci R21,0
L18:
	.dbline 138
	cpi R20,0
	cpc R20,R21
	brne L15
X2:
	.dbline -2
L14:
	.dbline 0 ; func end
	xjmp pop_xgsetF00C
	.dbsym r t 10 i
	.dbsym r i 20 i
	.dbsym r pBuffer 22 pki
	.dbsym r num 10 i
	.dbend
	.dbfunc e WriteMenu _WriteMenu fV
;              t -> R10
;              i -> R22
;        pBuffer -> R20,R21
	.even
_WriteMenu::
	xcall push_xgsetF00C
	movw R20,R16
	.dbline -1
	.dbline 155
	.dbline 157
	ldi R16,128
	xcall _writecom
	.dbline 159
	lds R24,101
	ori R24,1
	sts 101,R24
	.dbline 160
	lds R24,101
	andi R24,253
	sts 101,R24
	.dbline 161
	ldi R16,50
	ldi R17,0
	xcall _s_ms
	.dbline 162
	clr R22
	xjmp L23
L20:
	.dbline 163
	.dbline 164
	movw R30,R20
	elpm R10,Z
	.dbline 165
	out 0x1b,R10
	.dbline 166
	lds R24,101
	ori R24,4
	sts 101,R24
	.dbline 167
	ldi R16,50
	ldi R17,0
	xcall _s_ms
	.dbline 168
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 169
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 170
L21:
	.dbline 162
	inc R22
L23:
	.dbline 162
	cpi R22,16
	brlo L20
X3:
	.dbline 171
	ldi R16,192
	xcall _writecom
	.dbline 173
	lds R24,101
	ori R24,1
	sts 101,R24
	.dbline 174
	lds R24,101
	andi R24,253
	sts 101,R24
	.dbline 175
	ldi R16,50
	ldi R17,0
	xcall _s_ms
	.dbline 176
	clr R22
	xjmp L27
L24:
	.dbline 177
	.dbline 178
	movw R30,R20
	elpm R10,Z
	.dbline 179
	out 0x1b,R10
	.dbline 180
	lds R24,101
	ori R24,4
	sts 101,R24
	.dbline 181
	ldi R16,50
	ldi R17,0
	xcall _s_ms
	.dbline 182
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 183
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 184
L25:
	.dbline 176
	inc R22
L27:
	.dbline 176
	cpi R22,16
	brlo L24
X4:
	.dbline -2
L19:
	.dbline 0 ; func end
	xjmp pop_xgsetF00C
	.dbsym r t 10 c
	.dbsym r i 22 c
	.dbsym r pBuffer 20 pkc
	.dbend
	.dbfunc e WriteNum _WriteNum fV
;            num -> R20,R21
;            col -> R10,R11
;            row -> R22,R23
	.even
_WriteNum::
	xcall push_xgsetF00C
	movw R10,R18
	movw R22,R16
	ldd R20,y+6
	ldd R21,y+7
	.dbline -1
	.dbline 194
	.dbline 195
	cpi R22,1
	ldi R30,0
	cpc R23,R30
	brne L29
X5:
	.dbline 195
	movw R22,R10
	subi R22,128  ; offset = 128
	sbci R23,255
	xjmp L30
L29:
	.dbline 196
	movw R22,R10
	subi R22,64  ; offset = 192
	sbci R23,255
L30:
	.dbline 197
	mov R16,R22
	xcall _writecom
	.dbline 198
	cpi R20,0
	cpc R20,R21
	brne L33
X6:
	ldi R24,1
	ldi R25,0
	movw R10,R24
	xjmp L34
L33:
	clr R10
	clr R11
L34:
	ldi R24,9
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brsh L35
X7:
	ldi R22,1
	ldi R23,0
	xjmp L36
L35:
	clr R22
	clr R23
L36:
	movw R2,R10
	or R2,R22
	or R3,R23
	tst R2
	brne X8
	tst R3
	breq L31
X8:
	.dbline 198
	ldi R20,48
	ldi R21,0
	xjmp L32
L31:
	.dbline 199
	subi R20,208  ; offset = 48
	sbci R21,255
L32:
	.dbline 201
	lds R24,101
	ori R24,1
	sts 101,R24
	.dbline 202
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 203
	lds R24,101
	andi R24,253
	sts 101,R24
	.dbline 204
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 205
	out 0x1b,R20
	.dbline 206
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 207
	lds R24,101
	ori R24,4
	sts 101,R24
	.dbline 208
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 209
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 210
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline -2
L28:
	.dbline 0 ; func end
	xjmp pop_xgsetF00C
	.dbsym r num 20 i
	.dbsym r col 10 i
	.dbsym r row 22 i
	.dbend
	.dbfunc e WriteChar _WriteChar fV
;              t -> R12
;              i -> R10
;        pBuffer -> R20,R21
;            num -> y+8
;            col -> R10
;            row -> R22
	.even
_WriteChar::
	xcall push_xgsetF03C
	mov R10,R18
	mov R22,R16
	ldd R20,y+10
	ldd R21,y+11
	.dbline -1
	.dbline 220
	.dbline 222
	cpi R22,1
	brne L38
X9:
	.dbline 222
	mov R22,R10
	subi R22,128    ; addi 128
	xjmp L39
L38:
	.dbline 223
	mov R22,R10
	subi R22,64    ; addi 192
L39:
	.dbline 224
	mov R16,R22
	xcall _writecom
	.dbline 228
	lds R24,101
	ori R24,1
	sts 101,R24
	.dbline 229
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 230
	lds R24,101
	andi R24,253
	sts 101,R24
	.dbline 231
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 232
	ldd R10,y+8
	xjmp L43
L40:
	.dbline 233
	.dbline 234
	movw R30,R20
	ldd R12,z+0
	.dbline 235
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 236
	out 0x1b,R12
	.dbline 237
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 238
	lds R24,101
	ori R24,4
	sts 101,R24
	.dbline 239
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 240
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 241
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 242
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 243
L41:
	.dbline 232
	dec R10
L43:
	.dbline 232
	tst R10
	brne L40
X10:
	.dbline -2
L37:
	.dbline 0 ; func end
	xjmp pop_xgsetF03C
	.dbsym r t 12 c
	.dbsym r i 10 c
	.dbsym r pBuffer 20 pc
	.dbsym l num 8 i
	.dbsym r col 10 c
	.dbsym r row 22 c
	.dbend
	.area data(ram, con, rel)
	.dbfile E:\产品\mega128-board\程序\1602\1602.h
_wz::
	.blkb 14
	.area idata
	.byte 'W,'W,'W,46,'I,'S,'M,'C,'U,46,'C,'O,'M,0
	.area data(ram, con, rel)
	.dbfile E:\产品\mega128-board\程序\1602\1602.h
	.dbfile E:\产品\mega128-board\程序\1602\1602.c
	.dbsym e wz _wz A[14:14]c
_gd::
	.blkb 11
	.area idata
	.byte 'G,'o,'o,'d,32,'L,'u,'c,'k,33,0
	.area data(ram, con, rel)
	.dbfile E:\产品\mega128-board\程序\1602\1602.c
	.dbsym e gd _gd A[11:11]c
	.area text(rom, con, rel)
	.dbfile E:\产品\mega128-board\程序\1602\1602.c
	.dbfunc e main _main fI
	.even
_main::
	sbiw R28,4
	.dbline -1
	.dbline 17
	.dbline 18
	ldi R24,255
	out 0x1a,R24
	.dbline 19
	out 0x1b,R24
	.dbline 20
	sts 100,R24
	.dbline 21
	sts 101,R24
	.dbline 22
	xcall _LcdInit
	.dbline 23
	ldi R24,<_wz
	ldi R25,>_wz
	std y+3,R25
	std y+2,R24
	ldi R24,13
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,1
	xcall _WriteChar
	.dbline 24
	ldi R24,<_gd
	ldi R25,>_gd
	std y+3,R25
	std y+2,R24
	ldi R24,10
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,3
	ldi R16,2
	xcall _WriteChar
	.dbline -2
L44:
	.dbline 0 ; func end
	adiw R28,4
	ret
	.dbend

⌨️ 快捷键说明

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