📄 lcd_m8.s
字号:
; }
;
; //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 + -