📄 lcd12864.s
字号:
ldi R24,4
out 0x39,R24
.dbline 104
; {
sei
.dbline -2
L5:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay_us _delay_us fV
; time -> R16,R17
.even
_delay_us::
.dbline -1
.dbline 111
; dis_one_zi(2,1,X26);
; dis_one_zi(2,2,X26);
; dis_one_zi(2,3,X26);
; }
; else
; {
; dis_one_zi(2,1,tu);//汉字:图片3
.dbline 112
; dis_one_zi(2,2,pian);
wdr
xjmp L8
L7:
.dbline 114
.dbline 115
nop
.dbline 115
nop
.dbline 115
nop
.dbline 115
nop
.dbline 115
nop
.dbline 115
nop
.dbline 115
nop
.dbline 115
nop
.dbline 116
L8:
.dbline 113
; dis_one_abc(2,6,n_3);
movw R2,R16
subi R16,1
sbci R17,0
tst R2
brne L7
tst R3
brne L7
X0:
.dbline -2
L6:
.dbline 0 ; func end
ret
.dbsym r time 16 I
.dbend
.dbfunc e delay_ms _delay_ms fV
; time -> R20,R21
.even
_delay_ms::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 119
; }
; }
; else
; {
; dis_one_zi(2,1,tu);//汉字:图片3
; dis_one_zi(2,2,pian);
.dbline 120
; dis_one_abc(2,6,n_3);
wdr
xjmp L12
L11:
.dbline 122
.dbline 123
ldi R16,1000
ldi R17,3
xcall _delay_us
.dbline 124
L12:
.dbline 121
; }
movw R2,R20
subi R20,1
sbci R21,0
tst R2
brne L11
tst R3
brne L11
X1:
.dbline 125
;
;
;
; if(graphy_num==4)
wdr
.dbline -2
L10:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r time 20 I
.dbend
.dbfunc e lcd_read_code _lcd_read_code fc
; code -> R20
.even
_lcd_read_code::
xcall push_gset1
.dbline -1
.dbline 130
; {
; if(flash_flag%2==1)
; {
; dis_one_zi(3,1,X26);
; dis_one_zi(3,2,X26);
.dbline 132
; dis_one_zi(3,3,X26);
; dis_one_zi(3,4,X26);
clr R2
out 0x1a,R2
.dbline 133
; }
cbi 0x15,2
.dbline 134
; else
nop
.dbline 135
; {
sbi 0x15,3
.dbline 136
; dis_one_zi(3,1,buo);//汉字:波形显示
nop
.dbline 137
; dis_one_zi(3,2,xing);
in R20,0x16
.dbline 138
; dis_one_zi(3,3,xian);
sbi 0x15,4
.dbline 139
; dis_one_zi(3,4,shi);
ldi R16,1
ldi R17,0
xcall _delay_us
.dbline 140
; }
cbi 0x15,4
.dbline 141
; }
ldi R24,255
out 0x1a,R24
.dbline 142
; else
mov R16,R20
.dbline -2
L14:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r code 20 c
.dbend
.dbfunc e judgebusy _judgebusy fV
.even
_judgebusy::
.dbline -1
.dbline 149
; {
; dis_one_zi(3,1,buo);//汉字:波形显示
; dis_one_zi(3,2,xing);
; dis_one_zi(3,3,xian);
; dis_one_zi(3,4,shi);
; }
;
xjmp L17
L16:
.dbline 153
.dbline 156
wdr
.dbline 157
L17:
.dbline 152
; if((enter==1)&&(graphy_num!=0))
; {
; CLRLCD();
xcall _lcd_read_code
mov R2,R16
clr R3
sbrc R2,7
rjmp L16
.dbline -2
L15:
.dbline 0 ; func end
ret
.dbend
.dbfunc e lcd_write_data _lcd_write_data fV
; data -> R20
.even
_lcd_write_data::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 162
; enter=0;
; switch(graphy_num)
; {
; //******************************************************************
; case 1:
; {
; scroll(tu1);
; break;
; }
; //******************************************************************
.dbline 163
; case 2:
wdr
.dbline 164
; {
ldi R24,255
out 0x17,R24
.dbline 165
; scroll(tu2);
sbi 0x15,2
.dbline 166
; break;
nop
.dbline 167
; }
cbi 0x15,3
.dbline 168
; //******************************************************************
nop
.dbline 169
; case 3:
out 0x18,R20
.dbline 170
; {
sbi 0x15,4
.dbline 172
; scroll(tu3);
; break;
ldi R16,1
ldi R17,0
xcall _delay_us
.dbline 173
; }
cbi 0x15,4
.dbline 174
; //*******************************************************************
clr R2
out 0x17,R2
.dbline 175
; case 4:
wdr
.dbline -2
L19:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r data 20 c
.dbend
.dbfunc e lcd_write_code _lcd_write_code fV
; code -> R20
.even
_lcd_write_code::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 180
; {
; adc_init();
; wave_display();
; break;
; }
.dbline 181
; }
wdr
.dbline 182
; graphy_num=0;
ldi R24,255
out 0x17,R24
.dbline 183
; //lcd_init();
cbi 0x15,2
.dbline 184
; CLRLCD();
nop
.dbline 185
; lcd_write_code(0xc0);
cbi 0x15,3
.dbline 186
; }
nop
.dbline 187
; WDR();
out 0x18,R20
.dbline 188
; }
sbi 0x15,4
.dbline 190
;
; }
ldi R16,1
ldi R17,0
xcall _delay_us
.dbline 191
; //***********************************************************************
cbi 0x15,4
.dbline 192
; #pragma interrupt_handler int0_isr:2
clr R2
out 0x17,R2
.dbline 193
; void int0_isr(void)
wdr
.dbline -2
L20:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r code 20 c
.dbend
.dbfunc e dis_one_zi _dis_one_zi fV
; column -> R22
; row -> R10
; i -> R20
; po_to_flash -> R12,R13
; y_add -> R20
; x_add -> R22
.even
_dis_one_zi::
xcall push_gset4
mov R20,R18
mov R22,R16
ldd R12,y+8
ldd R13,y+9
.dbline -1
.dbline 200
; {
; //external interupt on INT0
; WDR();
; GICR=0X40; //清除INT0中断,延时20MS判断是否为干扰;
; delay_ms(20);
; if((PIND&0x04)==0x00)
; {
.dbline 203
; if(hanzi_flag==1)
; {
; graphy_num++;
ldi R24,2
mul R24,R22
mov R24,R0
subi R24,72 ; addi 184
mov R10,R24
.dbline 204
; TCNT1H = 0xF3; //counter high value
cpi R20,4
brsh L22
mov R22,R20
clr R23
xjmp L23
L22:
mov R22,R20
clr R23
subi R22,4
sbci R23,0
L23:
ldi R16,16
ldi R17,0
movw R18,R22
xcall empy16s
mov R22,R16
subi R22,192 ; offset = 64
sbci R23,255
.dbline 205
; TCNT1L = 0xCB; //counter low value
cpi R20,4
brsh L24
.dbline 206
; if(graphy_num==5)
.dbline 207
; {
sbi 0x15,1
.dbline 208
; graphy_num=0;
L24:
.dbline 209
; }
cpi R20,4
brlo L26
.dbline 210
; }
.dbline 211
; if(graphy_flag==1)
sbi 0x15,0
.dbline 212
; {
L26:
.dbline 214
; graphy_flag=0;
; hanzi_flag=1;
mov R16,R10
xcall _lcd_write_code
.dbline 215
; }
mov R16,R22
xcall _lcd_write_code
.dbline 216
; }
clr R20
xjmp L31
L28:
.dbline 217
; while((PIND&0x04)==0x00)//判断按键是否释放;
.dbline 218
; {
cpi R20,16
brne L32
.dbline 219
; WDR();
.dbline 220
; }
mov R16,R10
subi R16,255 ; addi 1
xcall _lcd_write_code
.dbline 221
; GICR=0XC0;
mov R16,R22
xcall _lcd_write_code
.dbline 222
; }
L32:
.dbline 223
movw R2,R12
movw R24,R2
adiw R24,1
movw R12,R24
movw R30,R2
lpm R16,Z
xcall _lcd_write_data
.dbline 224
L29:
.dbline 216
inc R20
L31:
.dbline 216
cpi R20,32
brlo L28
.dbline 225
;
;
; #pragma interrupt_handler int1_isr:3
cbi 0x15,0
.dbline 226
; void int1_isr(void)//确认键;
cbi 0x15,1
.dbline 227
; {
wdr
.dbline -2
L21:
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r column 22 c
.dbsym r row 10 c
.dbsym r i 20 c
.dbsym r po_to_flash 12 pkc
.dbsym r y_add 20 c
.dbsym r x_add 22 c
.dbend
.dbfunc e dis_one_abc _dis_one_abc fV
; column -> R22
; row -> R10
; i -> R20
; po_to_flash -> R12,R13
; y_add -> R20
; x_add -> R22
.even
_dis_one_abc::
xcall push_gset4
mov R20,R18
mov R22,R16
ldd R12,y+8
ldd R13,y+9
.dbline -1
.dbline 234
; //external interupt on INT1
; WDR();
; GICR=0X80;
; delay_ms(20);
; if((PIND&0x08)==0x00)
; {
; if(graphy_num!=0)
.dbline 237
; {
; enter=1;
; hanzi_flag=0;
ldi R24,2
mul R24,R22
mov R24,R0
subi R24,72 ; addi 184
mov R10,R24
.dbline 238
; graphy_flag=1;
cpi R20,8
brsh L35
mov R22,R20
clr R23
xjmp L36
L35:
mov R22,R20
clr R23
subi R22,8
sbci R23,0
L36:
ldi R16,8
ldi R17,0
movw R18,R22
xcall empy16s
mov R22,R16
subi R22,192 ; offset = 64
sbci R23,255
.dbline 239
; }
cpi R20,8
brsh L37
.dbline 240
; }
.dbline 241
; while((PIND&0x08)==0x00)
sbi 0x15,1
.dbline 242
; {
L37:
.dbline 243
; WDR();
cpi R20,8
brlo L39
.dbline 244
; }
.dbline 245
; GICR=0XC0;
sbi 0x15,0
.dbline 246
; }
L39:
.dbline 247
;
mov R16,R10
xcall _lcd_write_code
.dbline 248
;
mov R16,R22
xcall _lcd_write_code
.dbline 249
; #pragma interrupt_handler timer1_ovf_isr:9
clr R20
xjmp L44
L41:
.dbline 250
; void timer1_ovf_isr(void)
.dbline 251
; {
cpi R20,8
brne L45
.dbline 252
; //TIMER1 has overflowed
.dbline 253
; WDR();
mov R16,R10
subi R16,255 ; addi 1
xcall _lcd_write_code
.dbline 254
; flash_flag++;
mov R16,R22
xcall _lcd_write_code
.dbline 255
; if(graphy_num!=0)//只在选择状态下开定时器;
L45:
.dbline 256
movw R2,R12
movw R24,R2
adiw R24,1
movw R12,R24
movw R30,R2
lpm R16,Z
xcall _lcd_write_data
.dbline 257
L42:
.dbline 249
inc R20
L44:
.dbline 249
cpi R20,16
brlo L41
.dbline 258
; {
; TCNT1H = 0xF3; //reload counter high value
; TCNT1L = 0xCB; //reload counter low value
cbi 0x15,0
.dbline 259
; }
cbi 0x15,1
.dbline 260
; WDR();
wdr
.dbline -2
L34:
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r column 22 c
.dbsym r row 10 c
.dbsym r i 20 c
.dbsym r po_to_flash 12 pkc
.dbsym r y_add 20 c
.dbsym r x_add 22 c
.dbend
.dbfunc e dis_one_ban_zi _dis_one_ban_zi fV
; e -> R20
; w -> R22
; j -> R10
; i -> R12
; po_to_flash -> R14,R15
; k_add -> y+10
; y_add -> R12
; x_add -> R22
.even
_dis_one_ban_zi::
xcall push_gset5
mov R12,R18
mov R22,R16
ldd R14,y+12
ldd R15,y+13
.dbline -1
.dbline 265
; }
;
; #pragma interrupt_handler adc_isr:15
; void adc_isr(void)
; {
.dbline 268
; WDR();
; //conversion complete, read value (int) using...
; //value=ADCL; //Read 8 low bits first (important)
ldd R0,y+10
tst R0
brne L48
.dbline 268
.dbline 268
clr R20
.dbline 268
L48:
.dbline 269
; //value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
ldd R24,y+10
cpi R24,1
brne L50
.dbline 269
.dbline 269
ldi R20,8
.dbline 269
L50:
.dbline 270
; //delay_us(50);
ldi R24,2
mul R24,R22
mov R24,R0
subi R24,72 ; addi 184
mov R10,R24
.dbline 271
; adc_value=ADC&0X3FF;
mov R24,R12
cpi R24,4
brsh L52
mov R22,R24
clr R23
xjmp L53
L52:
mov R22,R12
clr R23
subi R22,4
sbci R23,0
L53:
ldi R16,16
ldi R17,0
movw R18,R22
xcall empy16s
mov R22,R16
subi R22,192 ; offset = 64
sbci R23,255
.dbline 272
; adc_value=(adc_value>>4);
mov R24,R12
cpi R24,4
brsh L54
.dbline 273
; if(hanzi_flag==0)// 只在显示波形的时候开AD
.dbline 274
; {ADCSRA = 0xCD;}
sbi 0x15,1
.dbline 275
; }
L54:
.dbline 276
; }
mov R24,R12
cpi R24,4
brlo L56
.dbline 277
; }
.dbline 278
; }
sbi 0x15,0
.dbline 279
; }
L56:
.dbline 280
; }
mov R16,R10
xcall _lcd_write_code
.dbline 281
; }
mov R16,R22
add R16,R20
xcall _lcd_write_code
.dbline 282
; }
clr R12
xjmp L61
L58:
.dbline 283
; }
.dbline 284
; }
mov R24,R12
cpi R24,8
brne L62
.dbline 285
; }
.dbline 286
; }
mov R16,R10
subi R16,255 ; addi 1
xcall _lcd_write_code
.dbline 287
; }
mov R16,R22
add R16,R20
xcall _lcd_write_code
.dbline 288
; }
L62:
.dbline 289
movw R2,R14
movw R24,R2
adiw R24,1
movw R14,R24
movw R30,R2
lpm R16,Z
xcall _lcd_write_data
.dbline 290
L59:
.dbline 282
inc R12
L61:
.dbline 282
mov R24,R12
cpi R24,16
brlo L58
.dbline 291
; }
; }
; }
cbi 0x15,0
.dbline 292
; }
cbi 0x15,1
.dbline 293
; }
wdr
.dbline -2
L47:
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r e 20 c
.dbsym r w 22 c
.dbsym r j 10 c
.dbsym r i 12 c
.dbsym r po_to_flash 14 pkc
.dbsym l k_add 10 c
.dbsym r y_add 12 c
.dbsym r x_add 22 c
.dbend
.dbfunc e CLRLCD _CLRLCD fV
; n -> R20
; m -> R22
.even
_CLRLCD::
xcall push_gset2
sbiw R28,2
.dbline -1
.dbline 298
; }
; }
; }
; }
; }
.dbline 300
; }
; }
clr R20
xjmp L68
L65:
.dbline 301
; }
.dbline 302
; }
clr R22
xjmp L72
L69:
.dbline 303
.dbline 304
ldi R24,<_X26
ldi R25,>_X26
sts _p_to_flash+1,R25
sts _p_to_flash,R24
.dbline 305
movw R2,R24
std y+1,R3
std y+0,R2
mov R18,R22
mov R16,R20
xcall _dis_one_zi
.dbline 306
wdr
.dbline 307
L70:
.dbline 302
inc R22
L72:
.dbline 302
cpi R22,8
brlo L69
.dbline 308
L66:
.dbline 300
inc R20
L68:
.dbline 300
cpi R20,4
brlo L65
.dbline -2
L64:
adiw R28,2
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r n 20 c
.dbsym r m 22 c
.dbend
.dbfunc e lcd_init _lcd_init fV
.even
_lcd_init::
.dbline -1
.dbline 312
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 313
; }
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 315
; }
; }
ldi R16,63
xcall _lcd_write_code
.dbline 317
; }
; }
ldi R16,192
xcall _lcd_write_code
.dbline 319
; }
; }
ldi R16,184
xcall _lcd_write_code
.dbline 321
; }
; }
ldi R16,64
xcall _lcd_write_code
.dbl
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -