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

📄 lcd_m8.s

📁 AVR ICC基于AVR MEGA8单片机的LCD程序!
💻 S
📖 第 1 页 / 共 3 页
字号:
; }
; 
; //Watchdog initialize
; // prescale: 256K
; void watchdog_init(void)
; {
;  WDR(); //this prevents a timout on enabling
;  WDTCR = 0x0C; //WATCHDOG ENABLED - dont forget to issue WDRs
; }
; 
; //call this routine to initialize all peripherals
; void init_devices(void)
; {
;  //stop errant interrupts until set up
;  CLI(); //disable all interrupts
;  port_init();
;  watchdog_init();
;  
;  MCUCR = 0x00;
;  GICR  = 0x00;
;  TIMSK = 0x00; //timer interrupt sources
;  SEI(); //re-enable interrupts
;  //all peripherals are now initialized
; }
; 
; void main(void)
; {
; char i;
; unit k;
;  uchar flash *p1[]={hz_wo,hz_ai,hz_yan,hz_shan,hz_da,hz_xue,NULL};	
; delay(100);
; init_devices(); 
; 
; initlcd();
; 
; delay(1000);
; 
; while(1)
; {
; dis_5(1,0,k++);
; i=dis_hz_row(16,1,p1);
; disen_row(1,3,"I Love You @>-+");
; dis_en_row(8,5," all peripherals are now initialized..");
; 
; 
; }
; }
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
L2:
	.dbline 440
; 
; 
	.dbline 441
; 
	subi R16,1
	sbci R17,0
	.dbline 442
; 
L3:
	.dbline 443
; 
	ldi R24,1
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brlt L2
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r time 16 I
	.dbend
	.dbfunc e delay_1ms _delay_1ms fV
;             i1 -> R16,R17
	.even
_delay_1ms::
	.dbline -1
	.dbline 448
; 
; 
; 
; 
; 
	.dbline 449
; 
	ldi R16,1
	ldi R17,0
	xjmp L9
L6:
	.dbline 450
L7:
	.dbline 449
	subi R16,255  ; offset = 1
	sbci R17,255
L9:
	.dbline 449
	cpi R16,118
	ldi R30,4
	cpc R17,R30
	brlo L6
	.dbline -2
L5:
	.dbline 0 ; func end
	ret
	.dbsym r i1 16 i
	.dbend
	.dbfunc e delay _delay fV
;             i2 -> R20,R21
;              n -> R22,R23
	.even
_delay::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 454
; 
; 
; 
; 
; 
	.dbline 455
; 
	clr R20
	clr R21
	xjmp L12
L11:
	.dbline 457
	.dbline 457
	xcall _delay_1ms
	.dbline 458
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 458
	wdr
	.dbline 459
L12:
	.dbline 456
; 
	cp R20,R22
	cpc R21,R23
	brlo L11
	.dbline -2
L10:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i2 20 i
	.dbsym r n 22 i
	.dbend
	.dbfile D:\ele\AVR\ICC\LCD\lcd-M8/lcd.h
	.dbfunc e writelcd _writelcd fV
;            dat -> R20
	.even
_writelcd::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 31
	.dbline 32
	cbi 0x15,2
	.dbline 33
	cbi 0x15,1
	.dbline 34
	sbi 0x15,2
	.dbline 35
	out 0x1b,R20
	.dbline 35
	ldi R16,1
	ldi R17,0
	xcall _del
	.dbline 36
	cbi 0x15,2
	.dbline -2
L14:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r dat 20 c
	.dbend
	.dbfunc e writelcdcon _writelcdcon fV
;            dat -> R20
	.even
_writelcdcon::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 40
	.dbline 41
	cbi 0x15,0
	.dbline 42
	sbi 0x15,3
	.dbline 42
	sbi 0x15,4
	.dbline 43
	mov R16,R20
	xcall _writelcd
	.dbline -2
L15:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r dat 20 c
	.dbend
	.dbfunc e writelcddat _writelcddat fV
;            dat -> R20
	.even
_writelcddat::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 47
	.dbline 48
	sbi 0x15,0
	.dbline 49
	mov R16,R20
	xcall _writelcd
	.dbline -2
L16:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r dat 20 c
	.dbend
	.dbfunc e restlcd _restlcd fV
	.even
_restlcd::
	.dbline -1
	.dbline 53
	.dbline 54
	sbi 0x15,5
	.dbline 55
	ldi R16,1
	ldi R17,0
	xcall _delay
	.dbline 56
	cbi 0x15,5
	.dbline 57
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 58
	sbi 0x15,5
	.dbline -2
L17:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e lcdon _lcdon fV
	.even
_lcdon::
	.dbline -1
	.dbline 62
	.dbline 63
	cbi 0x15,0
	.dbline 64
	sbi 0x15,3
	.dbline 64
	sbi 0x15,4
	.dbline 65
	ldi R16,63
	xcall _writelcd
	.dbline -2
L18:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e lcdoff _lcdoff fV
	.even
_lcdoff::
	.dbline -1
	.dbline 69
	.dbline 70
	cbi 0x15,0
	.dbline 71
	sbi 0x15,3
	.dbline 71
	sbi 0x15,4
	.dbline 72
	ldi R16,62
	xcall _writelcd
	.dbline -2
L19:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e fromx _fromx fV
;            dat -> R20
	.even
_fromx::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 76
	.dbline 77
	cbi 0x15,0
	.dbline 78
	sbi 0x15,3
	.dbline 78
	sbi 0x15,4
	.dbline 79
	mov R16,R20
	ori R16,192
	xcall _writelcd
	.dbline -2
L20:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r dat 20 c
	.dbend
	.dbfunc e sety _sety fV
;            dat -> R20
	.even
_sety::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 83
	.dbline 84
	cbi 0x15,0
	.dbline 85
	mov R16,R20
	ori R16,184
	xcall _writelcd
	.dbline -2
L21:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r dat 20 c
	.dbend
	.dbfunc e setx _setx fV
;            dat -> R20
	.even
_setx::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 89
	.dbline 90
	cpi R20,64
	brsh L23
	.dbline 91
	.dbline 91
	sbi 0x15,3
	.dbline 91
	cbi 0x15,4
	.dbline 91
	xjmp L24
L23:
	.dbline 93
	.dbline 93
	cbi 0x15,3
	.dbline 93
	sbi 0x15,4
	.dbline 93
	subi R20,64
	.dbline 93
L24:
	.dbline 94
	cbi 0x15,0
	.dbline 95
	mov R16,R20
	ori R16,64
	xcall _writelcd
	.dbline -2
L22:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r dat 20 c
	.dbend
	.dbfunc e w8 _w8 fV
;            dat -> y+4
;              y -> R20
;              x -> R22
	.even
_w8::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 99
	.dbline 100
	mov R16,R22
	xcall _setx
	.dbline 101
	mov R16,R20
	xcall _sety
	.dbline 102
	ldd R16,y+4
	com R16
	xcall _writelcddat
	.dbline 103
	wdr
	.dbline -2
L25:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l dat 4 c
	.dbsym r y 20 c
	.dbsym r x 22 c
	.dbend
	.dbfunc e clrlcd _clrlcd fV
;              j -> R20
;              i -> R22
	.even
_clrlcd::
	xcall push_gset2
	sbiw R28,1
	.dbline -1
	.dbline 107
	.dbline 109
	clr R20
	xjmp L30
L27:
	.dbline 110
	clr R22
	xjmp L34
L31:
	.dbline 111
	.dbline 112
	clr R2
	std y+0,R2
	mov R18,R20
	mov R16,R22
	xcall _w8
	.dbline 113
L32:
	.dbline 110
	inc R22
L34:
	.dbline 110
	cpi R22,128
	brlo L31
L28:
	.dbline 109
	inc R20
L30:
	.dbline 109
	cpi R20,8
	brlo L27
	.dbline -2
L26:
	adiw R28,1
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r j 20 c
	.dbsym r i 22 c
	.dbend
	.dbfunc e clr_row _clr_row fV
;              i -> R20
;              b -> R22
;              a -> R12
;            row -> R10
	.even
_clr_row::
	xcall push_gset4
	mov R12,R18
	mov R10,R16
	sbiw R28,1
	ldd R22,y+9
	.dbline -1
	.dbline 118
	.dbline 120
	sbi 0x15,3
	sbi 0x15,4
	.dbline 121
	mov R20,R12
	xjmp L39
L36:
	.dbline 122
	clr R2
	std y+0,R2
	mov R18,R10
	mov R16,R20
	xcall _w8
L37:
	.dbline 121
	inc R20
L39:
	.dbline 121
	cp R20,R22
	brlo L36
	.dbline -2
L35:
	adiw R28,1
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r b 22 c
	.dbsym r a 12 c
	.dbsym r row 10 c
	.dbend
	.dbfunc e dis_en _dis_en fc
;              p -> R20,R21
;              i -> R22
;              c -> R22
;              y -> R10
;              x -> R12
	.even
_dis_en::
	xcall push_gset4
	mov R10,R18
	mov R12,R16
	sbiw R28,1
	ldd R22,y+9
	.dbline -1
	.dbline 126
	.dbline 130
	cpi R22,65
	brlo L41
	ldi R24,90
	cp R24,R22
	brlo L41
	.dbline 131
	.dbline 132
	ldi R24,5
	mul R24,R22
	movw R20,R0
	ldi R24,<_A_Z-325
	ldi R25,>_A_Z-325
	add R20,R24
	adc R21,R25
	.dbline 133
	xjmp L42
L41:
	.dbline 134
	cpi R22,97
	brlo L44
	ldi R24,122
	cp R24,R22
	brlo L44
	.dbline 135
	.dbline 136
	ldi R24,5
	mul R24,R22
	movw R20,R0
	ldi R24,<_a_z-485
	ldi R25,>_a_z-485
	add R20,R24
	adc R21,R25
	.dbline 137
	xjmp L45
L44:
	.dbline 138
	cpi R22,48
	brlo L47
	ldi R24,57
	cp R24,R22
	brlo L47
	.dbline 139
	.dbline 140
	ldi R24,5
	mul R24,R22
	movw R20,R0
	ldi R24,<_num0_9-240
	ldi R25,>_num0_9-240
	add R20,R24
	adc R21,R25
	.dbline 141
	xjmp L48
L47:
	.dbline 143
	.dbline 144
	clr R23
	cpi R22,58
	ldi R30,0
	cpc R23,R30
	breq L54
	ldi R24,58
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brlt L60
L59:
	cpi R22,46
	ldi R30,0
	cpc R23,R30
	breq L53
	cpi R22,47
	ldi R30,0
	cpc R23,R30
	breq L58
	xjmp L50
L60:
	cpi R22,94
	ldi R30,0
	cpc R23,R30
	breq L56
	cpi R22,95
	ldi R30,0
	cpc R23,R30
	breq L55
	cpi R22,94
	ldi R30,0
	cpc R23,R30
	brlt L50
L61:
	cpi R22,126
	ldi R30,0
	cpc R23,R30
	breq L57
	xjmp L50
X0:
	.dbline 145
L53:
	.dbline 146
	ldi R20,<_x_p
	ldi R21,>_x_p
	.dbline 146
	xjmp L51
L54:
	.dbline 147
	ldi R20,<_x_mh
	ldi R21,>_x_mh
	.dbline 147
	xjmp L51
L55:
	.dbline 148
	ldi R20,<_x_ds
	ldi R21,>_x_ds
	.dbline 148
	xjmp L51
L56:
	.dbline 149
	ldi R20,<_x_shang
	ldi R21,>_x_shang
	.dbline 149
	xjmp L51
L57:
	.dbline 150
	ldi R20,<_x_xia
	ldi R21,>_x_xia
	.dbline 150
	xjmp L51
L58:
	.dbline 151
	ldi R20,<_x_xg
	ldi R21,>_x_xg
	.dbline 151
	xjmp L51
L50:
	.dbline 152
	ldi R20,<_space
	ldi R21,>_space
	.dbline 152
L51:
	.dbline 154
L48:
L45:
L42:
	.dbline 155
	clr R22
	xjmp L65
L62:
	.dbline 156
	mov R30,R22
	clr R31
	add R30,R20
	adc R31,R21
	lpm R30,Z
	std y+0,R30
	mov R18,R10
	mov R16,R12
	add R16,R22
	xcall _w8
L63:
	.dbline 155
	inc R22
L65:
	.dbline 155
	cpi R22,5
	brlo L62
	.dbline 157
	mov R16,R12
	subi R16,251    ; addi 5
	.dbline -2
L40:
	adiw R28,1
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r p 20 pkc
	.dbsym r i 22 c
	.dbsym r c 22 c
	.dbsym r y 10 c
	.dbsym r x 12 c
	.dbend
	.dbfunc e dis_en_row _dis_en_row fc
;              i -> R20
;            cnt -> R22
;              p -> R10,R11
;              y -> R12
;              x -> R20
	.even
_dis_en_row::
	xcall push_gset4
	mov R12,R18
	mov R20,R16
	sbiw R28,1
	ldd R10,y+9
	ldd R11,y+10
	.dbline -1
	.dbline 163
	.dbline 164
	mov R22,R20
	.dbline 165
	clr R20
	xjmp L70
L67:
	.dbline 166
	.dbline 167
	ldi R24,127
	cp R24,R22
	brsh L71
	.dbline 167
	.dbline 167
	clr R22
	.dbline 167
	inc R12
	.dbline 167
L71:
	.dbline 168
	mov R30,R20
	clr R31
	add R30,R10
	adc R31,R11
	ldd R2,z+0
	std y+0,R2
	mov R18,R12
	mov R16,R22
	xcall _dis_en
	mov R22,R16
	.dbline 169
L68:
	.dbline 165
	inc R20
L70:
	.dbline 165
	mov R30,R20
	clr R31
	add R30,R10
	adc R31,R11
	ldd R2,z+0
	tst R2
	brne L67
	.dbline 170
	mov R16,R22
	.dbline -2
L66:
	adiw R28,1
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r cnt 22 c
	.dbsym r p 10 pc
	.dbsym r y 12 c
	.dbsym r x 20 c
	.dbend
	.dbfunc e dis_num _dis_num fc
;              i -> R20
;              c -> R22
;              y -> R10
;              x -> R12
	.even
_dis_num::
	xcall push_gset4
	mov R10,R18
	mov R12,R16
	sbiw R28,1
	ldd R22,y+9
	.dbline -1
	.dbline 176
	.dbline 178
	clr R20
	xjmp L77
L74:
	.dbline 179
	.dbline 180
	ldi R24,5
	mul R24,R22
	movw R30,R0
	mov R2,R20

⌨️ 快捷键说明

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