📄 1602b_lcd_test.s
字号:
swap R22
andi R22,#0x0F
.dbline 104
; LCD_write_char(0,th+48);
mov R18,R22
clr R19
subi R18,208 ; offset = 48
sbci R19,255
clr R16
clr R17
xcall _LCD_write_char
.dbline 105
; LCD_write_char(0,tl+48);
mov R18,R20
clr R19
subi R18,208 ; offset = 48
sbci R19,255
clr R16
clr R17
xcall _LCD_write_char
.dbline -2
L7:
adiw R28,2
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym l i 3 c
.dbsym r th 22 c
.dbsym r tl 20 c
.dbsym r s 10 c
.dbend
.dbfunc e main _main fV
; dout -> y+11
; i -> y+10
; aa -> y+9
.even
_main::
sbiw R28,12
.dbline -1
.dbline 230
; //date
; }
; //////////////////////////////////////////////////////////////
; //k1接pd0 k2接pd1 k3接pd2
; /*void settime()
; {
; uchar dout=0,i,j,k;
; ret:;
; PORTC = 0x00;
; DDRC = 0xff;
; write_data(0x8e,0x00); //关闭寄存器写保护
; dout=PINC;
; i=((dout&0x40)==0x40);
; delay_nms(100);
; if(i)
; {
; n++;
; t=0;
; LCD_write_char(0x10,0);//光标自动右移
; if(n==15)n=0;}
; switch(n)
; {
; case 1 :dout=PINC;j=((dout&0x80)==0x80);
; if(j)
; { t++;
; write_data(0x80,((read_data(0x81))&0xf0)|t);;
; LCD_set_xy(1,1);
; k=((read_data(0x81))&0xf0);
; LCD_write_char(0,k+48);
; break;//0
; }
;
; //else goto ret;
; case 2 :dout=PINC;j=((dout&0x80)==0x80);
; if(j)
; { t++;
; write_data(0x80,((read_data(0x81))&0x0f)|(t<<4));
; LCD_set_xy(2,1);
; k=(read_data(0x81));
; k=(k>>4);
; LCD_write_char(0,k+48);
; break;
; }
; //else goto ret;
; case 4 :dout=PINC;j=((dout&0x80)==0x80);
; if(j)
; { t++;
; write_data(0x82,((read_data(0x83))&0xf0)|t);
; LCD_set_xy(4,1);
; k=((read_data(0x83))&0xf0);
; LCD_write_char(0,k+48);
; break;
; }
; case 5 :dout=PINC;j=((dout&0x80)==0x80);
; if(j)
; { t++;
; write_data(0x82,((read_data(0x83))&0x0f)|(t<<4));
; LCD_set_xy(5,1);
; k=(read_data(0x83));
; k=(k>>4);
; LCD_write_char(0,k+48);
; break;
; }
; case 7 :dout=PINC;j=((dout&0x80)==0x80);
; if(j)
; { t++;
; write_data(0x84,((read_data(0x85))&0xf0)|t);
; LCD_set_xy(7,1);
; k=((read_data(0x85))&0xf0);
; LCD_write_char(0,k+48);
; break;
; }
; case 8 :dout=PINC;j=((dout&0x80)==0x80);
; if(j)
; { t++;
; write_data(0x84,((read_data(0x85))&0x0f)|(t<<4));
; LCD_set_xy(8,1);
; k=(read_data(0x85));
; k=(k>>4);
; LCD_write_char(0,k+48);
; break;
; }
; case 10 :dout=PINC;j=((dout&0x80)==0x80);
; if(j)
; { t++;
; write_data(0x86,((read_data(0x87))&0xf0)|t);
; LCD_set_xy(10,1);
; k=((read_data(0x87))&0xf0);
; LCD_write_char(0,k+48);
; break;
; }
; case 11 :dout=PINC;j=((dout&0x80)==0x80);
; if(j)
; { t++;
; write_data(0x86,((read_data(0x87))&0x0f)|(t<<4));
; LCD_set_xy(11,1);
; k=(read_data(0x87));
; k=(k>>4);
; LCD_write_char(0,k+48);
; break;
; }
; case 13 :dout=PINC;j=((dout&0x80)==0x80);
; if(j)
; { t++;
; write_data(0x88,((read_data(0x89))&0xf0)|t);
; LCD_set_xy(13,1);
; k=((read_data(0x89))&0xf0);
; LCD_write_char(0,k+48);
; break;
; }
; case 14 :dout=PINC;j=((dout&0x80)==0x80);
; if(j)
; { t++;
; write_data(0x88,((read_data(0x89))&0x0f)|(t<<4));
; LCD_set_xy(14,1);
; k=(read_data(0x89));
; k=(k>>4);
; LCD_write_char(0,k+48);
; break;
; }
; else break;
; }
; }*/
; void main(void)
; {
.dbline 231
; volatile char aa=20,i=0,dout;
ldi R24,20
std y+9,R24
.dbline 231
clr R2
std y+10,R2
.dbline 232
; OSCCAL=0X95;
ldi R24,149
out 0x31,R24
.dbline 234
; /********************************************/
; CLI();
cli
.dbline 235
; PORTD=0x00;
out 0x12,R2
.dbline 236
; DDRD |= LCD_DATA | LCD_RW;
in R24,0x11
ori R24,248
out 0x11,R24
.dbline 237
; DDRD |= LCD_RS | LCD_EN;
in R24,0x11
ori R24,48
out 0x11,R24
.dbline 238
; PORTA = 0xc7;//端口设置
ldi R24,199
out 0x1b,R24
.dbline 239
; DDRA = 0xff;
ldi R24,255
out 0x1a,R24
.dbline 242
; // PORTC = 0x00;
; //DDRC = 0xff;
; init_1302();
xcall _init_1302
.dbline 243
; init_1302();
xcall _init_1302
.dbline 244
; init_time(0x00,0x58,0x20,0x19,0x04,0x06,0x08);//秒、分、时、日、月、星期、年
ldi R24,8
std y+8,R24
ldi R24,6
std y+6,R24
ldi R24,4
std y+4,R24
ldi R24,25
std y+2,R24
ldi R24,32
std y+0,R24
ldi R18,88
clr R16
xcall _init_time
.dbline 245
; DDRC|=0x01; //置为输出
sbi 0x14,0
.dbline 246
; PORTC|=0x01;
sbi 0x15,0
.dbline 247
; timer2_init();
xcall _timer2_init
.dbline 248
; MCUCR = 0x00;
clr R2
out 0x35,R2
.dbline 249
; GICR = 0x00;
out 0x3b,R2
.dbline 250
; TIMSK = 0x40;
ldi R24,64
out 0x39,R24
.dbline 251
; LCD_init();
xcall _LCD_init
.dbline 253
; /*初始化参数*/
; zkb=1500;
ldi R24,1500
ldi R25,5
sts _zkb+1,R25
sts _zkb,R24
.dbline 254
; t1=zkb/20;
ldi R18,20
ldi R19,0
lds R16,_zkb
lds R17,_zkb+1
xcall div16s
sts _t1+1,R17
sts _t1,R16
.dbline 255
; t2=(20000-zkb)/20;
lds R2,_zkb
lds R3,_zkb+1
ldi R16,20000
ldi R17,78
sub R16,R2
sbc R17,R3
ldi R18,20
ldi R19,0
xcall div16s
sts _t2+1,R17
sts _t2,R16
.dbline 256
; zq=t1;
lds R2,_t1
lds R3,_t1+1
sts _zq+1,R3
sts _zq,R2
.dbline 258
; // Global enable interrupts
; SEI();
sei
xjmp L27
L26:
.dbline 260
; while(1)
; {
.dbline 263
; //settime();
; // showtime();
; delay2_nms(100);
ldi R16,100
ldi R17,0
xcall _delay2_nms
.dbline 264
; zkb+=aa;
ldd R2,y+9
clr R3
lds R4,_zkb
lds R5,_zkb+1
add R4,R2
adc R5,R3
sts _zkb+1,R5
sts _zkb,R4
.dbline 265
lds R24,_zkb
lds R25,_zkb+1
cpi R24,244
ldi R30,1
cpc R25,R30
breq L31
lds R24,_zkb
lds R25,_zkb+1
cpi R24,196
ldi R30,9
cpc R25,R30
brne L29
L31:
.dbline 265
; if(zkb==500||zkb==2500){ //标准应该是1000至2000
.dbline 266
; aa=-aa;
ldd R2,y+9
neg R2
std y+9,R2
.dbline 267
; }
L29:
.dbline 268
ldi R18,20
ldi R19,0
lds R16,_zkb
lds R17,_zkb+1
xcall div16s
sts _t1+1,R17
sts _t1,R16
.dbline 269
lds R2,_zkb
lds R3,_zkb+1
ldi R16,20000
ldi R17,78
sub R16,R2
sbc R17,R3
ldi R18,20
ldi R19,0
xcall div16s
sts _t2+1,R17
sts _t2,R16
.dbline 279
L27:
.dbline 259
xjmp L26
X2:
.dbline -2
L25:
adiw R28,12
.dbline 0 ; func end
ret
.dbsym l dout 11 c
.dbsym l i 10 c
.dbsym l aa 9 c
.dbend
.dbfunc e delay2_1ms _delay2_1ms fV
; i -> R16,R17
.even
_delay2_1ms::
.dbline -1
.dbline 282
; t1=zkb/20;
; t2=(20000-zkb)/20;
; //////////////////////////////////////////////
; /* LCD_write_char(0x01,0); //显示清屏
; LCD_write_string(3,0,"Welcome");
; LCD_write_string(1,1,"www.527dz.com!");
; delay_nms(5000);
; LCD_write_char(0x01,0); //显示清屏
; LCD_write_string(0,0,"Tel:13308844201");
; LCD_write_string(0,1,"527dz@527dz.com");
; delay_nms(5000);*/
; }
; }
; void delay2_1ms(void)//1ms延时函数
; {
.dbline 284
; unsigned int i;
; for (i=0;i<150;i++)
clr R16
clr R17
xjmp L36
L33:
.dbline 285
.dbline 286
L34:
.dbline 284
subi R16,255 ; offset = 1
sbci R17,255
L36:
.dbline 284
cpi R16,150
ldi R30,0
cpc R17,R30
brlo L33
.dbline -2
L32:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.dbfunc e delay2_nms _delay2_nms fV
; i -> R20,R21
; n -> R22,R23
.even
_delay2_nms::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 290
; {
; }
; }
;
; void delay2_nms(unsigned int n)//延时n毫秒
; {
.dbline 292
; unsigned int i;
; for (i=0;i<n;i++)//执行n次1毫秒延时
clr R20
clr R21
xjmp L41
L38:
.dbline 293
xcall _delay2_1ms
L39:
.dbline 292
subi R20,255 ; offset = 1
sbci R21,255
L41:
.dbline 292
cp R20,R22
cpc R21,R23
brlo L38
.dbline -2
L37:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 22 i
.dbend
.area bss(ram, con, rel)
.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
_t2::
.blkb 2
.dbsym e t2 _t2 I
_t1::
.blkb 2
.dbsym e t1 _t1 I
_zq::
.blkb 2
.dbsym e zq _zq I
_zkb::
.blkb 2
.dbsym e zkb _zkb I
.area data(ram, con, rel)
.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
L24:
.blkb 7
.area idata
.byte 's,'u,'n,'d,'a,'y,0
.area data(ram, con, rel)
.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
L22:
.blkb 9
.area idata
.byte 's,'a,'t,'u,'r,'d,'a,'y,0
.area data(ram, con, rel)
.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
L20:
.blkb 7
.area idata
.byte 'f,'r,'i,'d,'a,'y,0
.area data(ram, con, rel)
.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
L18:
.blkb 9
.area idata
.byte 't,'h,'u,'r,'s,'d,'a,'y,0
.area data(ram, con, rel)
.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
L16:
.blkb 10
.area idata
.byte 'w,'e,'d,'n,'e,'s,'d,'a,'y,0
.area data(ram, con, rel)
.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
L14:
.blkb 8
.area idata
.byte 't,'u,'e,'s,'d,'a,'y,0
.area data(ram, con, rel)
.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
L12:
.blkb 7
.area idata
.byte 'm,'o,'n,'d,'a,'y,0
.area data(ram, con, rel)
.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -