lcd.s
来自「用avr单片机接收GPS的数据的c语言程序」· S 代码 · 共 2,558 行 · 第 1/4 页
S
2,558 行
lds R2,_latitude+1
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 186
; *lcd_display_wrp++='D';
ldi R24,68
st Z+,R24
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 187
; *lcd_display_wrp++=latitude[2];
lds R2,_latitude+2
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 188
; *lcd_display_wrp++=latitude[3];
lds R2,_latitude+3
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 189
; *lcd_display_wrp++=latitude[4];
lds R2,_latitude+4
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 190
; *lcd_display_wrp++=latitude[5];
lds R2,_latitude+5
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 191
; *lcd_display_wrp++=latitude[6];
lds R2,_latitude+6
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 192
; *lcd_display_wrp++=latitude[7];
lds R2,_latitude+7
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 193
; *lcd_display_wrp++=latitude[8];
lds R2,_latitude+8
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 194
; *lcd_display_wrp++=NSind;
lds R2,_NSind
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 197
;
;
; lcd_display_wrp=&lcd_display2_buffer[0][0];
ldi R24,<_lcd_display2_buffer
ldi R25,>_lcd_display2_buffer
sts _lcd_display_wrp+1,R25
sts _lcd_display_wrp,R24
.dbline 198
; lcd_display_rdp=&lcd_display2_buffer[0][0];
sts _lcd_display_rdp+1,R25
sts _lcd_display_rdp,R24
.dbline 199
; SEI();
sei
.dbline -2
L10:
.dbline 0 ; func end
ret
.dbsym l i 1 I
.dbsym r aptr 16 pc
.dbend
.dbfunc e Write_longtitude _Write_longtitude fV
; i -> <dead>
; aptr -> R16,R17
.even
_Write_longtitude::
.dbline -1
.dbline 206
;
; }
;
;
; //write longtitude to lcd buffer
; void Write_longtitude(void)
; {
.dbline 211
;
; char* aptr;
; int i;
;
; aptr=time;
ldi R16,<_time
ldi R17,>_time
.dbline 213
;
; lcd_display_wrp=&lcd_display2_buffer[3][1];
ldi R24,<_lcd_display2_buffer+63+1
ldi R25,>_lcd_display2_buffer+63+1
sts _lcd_display_wrp+1,R25
sts _lcd_display_wrp,R24
.dbline 214
; *lcd_display_wrp++='L';
ldi R24,76
lds R30,_lcd_display_wrp
lds R31,_lcd_display_wrp+1
st Z+,R24
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 215
; *lcd_display_wrp++='O';
ldi R24,79
st Z+,R24
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 216
; *lcd_display_wrp++='N';
ldi R24,78
st Z+,R24
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 217
; *lcd_display_wrp++=':';
ldi R24,58
st Z+,R24
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 219
;
; *lcd_display_wrp++=longtitude[0];
lds R2,_longtitude
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 220
; *lcd_display_wrp++=longtitude[1];
lds R2,_longtitude+1
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 221
; *lcd_display_wrp++=longtitude[2];
lds R2,_longtitude+2
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 222
; *lcd_display_wrp++='D';
ldi R24,68
st Z+,R24
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 223
; *lcd_display_wrp++=longtitude[3];
lds R2,_longtitude+3
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 224
; *lcd_display_wrp++=longtitude[4];
lds R2,_longtitude+4
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 225
; *lcd_display_wrp++=longtitude[5];
lds R2,_longtitude+5
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 226
; *lcd_display_wrp++=longtitude[6];
lds R2,_longtitude+6
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 227
; *lcd_display_wrp++=longtitude[7];
lds R2,_longtitude+7
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 228
; *lcd_display_wrp++=longtitude[8];
lds R2,_longtitude+8
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 229
; *lcd_display_wrp++=longtitude[9];
lds R2,_longtitude+9
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 230
; *lcd_display_wrp++=EWind;
lds R2,_EWind
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 233
;
;
; lcd_display_wrp=&lcd_display2_buffer[0][0];
ldi R24,<_lcd_display2_buffer
ldi R25,>_lcd_display2_buffer
sts _lcd_display_wrp+1,R25
sts _lcd_display_wrp,R24
.dbline 234
; lcd_display_rdp=&lcd_display2_buffer[0][0];
sts _lcd_display_rdp+1,R25
sts _lcd_display_rdp,R24
.dbline 235
; SEI();
sei
.dbline -2
L21:
.dbline 0 ; func end
ret
.dbsym l i 1 I
.dbsym r aptr 16 pc
.dbend
.dbfunc e Write_date _Write_date fV
; i -> <dead>
; aptr -> R16,R17
.even
_Write_date::
.dbline -1
.dbline 240
;
; }
;
; void Write_date(void)
; {
.dbline 245
;
; char* aptr;
; int i;
;
; aptr=time;
ldi R16,<_time
ldi R17,>_time
.dbline 247
;
; lcd_display_wrp=&lcd_display2_buffer[4][1];
ldi R24,<_lcd_display2_buffer+84+1
ldi R25,>_lcd_display2_buffer+84+1
sts _lcd_display_wrp+1,R25
sts _lcd_display_wrp,R24
.dbline 248
; *lcd_display_wrp++='D';
ldi R24,68
lds R30,_lcd_display_wrp
lds R31,_lcd_display_wrp+1
st Z+,R24
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 249
; *lcd_display_wrp++='A';
ldi R24,65
st Z+,R24
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 250
; *lcd_display_wrp++='T';
ldi R24,84
st Z+,R24
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 251
; *lcd_display_wrp++='E';
ldi R24,69
st Z+,R24
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 252
; *lcd_display_wrp++=':';
ldi R24,58
st Z+,R24
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 254
;
; *lcd_display_wrp++=date[4];//year
lds R2,_date+4
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 255
; *lcd_display_wrp++=date[5];
lds R2,_date+5
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 256
; *lcd_display_wrp++='-';
ldi R24,45
st Z+,R24
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 257
; *lcd_display_wrp++=date[2];//month
lds R2,_date+2
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 258
; *lcd_display_wrp++=date[3];
lds R2,_date+3
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 259
; *lcd_display_wrp++='-';
st Z+,R24
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 260
; *lcd_display_wrp++=date[0];//day
lds R2,_date
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 261
; *lcd_display_wrp++=date[1];
lds R2,_date+1
st Z+,R2
sts _lcd_display_wrp+1,R31
sts _lcd_display_wrp,R30
.dbline 263
;
; lcd_display_wrp=&lcd_display2_buffer[0][0];
ldi R24,<_lcd_display2_buffer
ldi R25,>_lcd_display2_buffer
sts _lcd_display_wrp+1,R25
sts _lcd_display_wrp,R24
.dbline 264
; lcd_display_rdp=&lcd_display2_buffer[0][0];
sts _lcd_display_rdp+1,R25
sts _lcd_display_rdp,R24
.dbline 265
; SEI();
sei
.dbline -2
L33:
.dbline 0 ; func end
ret
.dbsym l i 1 I
.dbsym r aptr 16 pc
.dbend
.dbfunc e lcd_wr1_ins _lcd_wr1_ins fV
; lcd_wr_temp -> R20
; lcd_wr_buffer -> R16
.even
_lcd_wr1_ins::
xcall push_gset1
.dbline -1
.dbline 276
;
; }
; /*****************************************************
; LCD function
; inclue
;
; *****************************************************/
;
; //写lcd的cs1命令寄存器函数
; void lcd_wr1_ins (unsigned char lcd_wr_buffer)
; {
.dbline 278
; unsigned char lcd_wr_temp;
; e_off; //读lcd状态
cbi 0x12,7
.dbline 279
; rw_on;
sbi 0x12,3
.dbline 280
; di_off;
cbi 0x12,4
.dbline 281
; cs1_on;
sbi 0x15,7
.dbline 282
; DDRA&=0x03;
in R24,0x1a
andi R24,3
out 0x1a,R24
.dbline 283
; PORTA&=0x03;
in R24,0x1b
andi R24,3
out 0x1b,R24
.dbline 284
; DDRC&=0xFC;
in R24,0x14
andi R24,252
out 0x14,R24
.dbline 285
; PORTC&=0xFC;
in R24,0x15
andi R24,252
out 0x15,R24
.dbline 286
; e_on;
sbi 0x12,7
.dbline 287
; NOP();
nop
.dbline 288
; NOP();
nop
.dbline 289
; NOP();
nop
.dbline 290
; lcd_wr_temp=(PINA&0xfc);
in R20,0x19
andi R20,252
.dbline 291
; lcd_wr_temp|=(PINC&0x03);
in R24,0x13
andi R24,3
or R20,R24
.dbline 292
; e_off;
cbi 0x12,7
.dbline 293
; cs1_off;
cbi 0x15,7
xjmp L43
L42:
.dbline 295
.dbline 296
cbi 0x12,7
.dbline 297
sbi 0x12,3
.dbline 298
cbi 0x12,4
.dbline 299
sbi 0x15,7
.dbline 300
in R24,0x1a
andi R24,3
out 0x1a,R24
.dbline 301
in R24,0x1b
andi R24,3
out 0x1b,R24
.dbline 302
in R24,0x14
andi R24,252
out 0x14,R24
.dbline 303
in R24,0x15
andi R24,252
out 0x15,R24
.dbline 304
sbi 0x12,7
.dbline 305
nop
.dbline 306
nop
.dbline 307
nop
.dbline 308
in R20,0x19
andi R20,252
.dbline 309
in R24,0x13
andi R24,3
or R20,R24
.dbline 310
cbi 0x12,7
.dbline 311
cbi 0x15,7
.dbline 312
L43:
.dbline 294
; while(lcd_wr_temp&0x90)
mov R24,R20
andi R24,144
brne L42
.dbline 313
; {
; e_off; //读lcd状态
; rw_on;
; di_off;
; cs1_on;
; DDRA&=0x03;
; PORTA&=0x03;
; DDRC&=0xFC;
; PORTC&=0xFC;
; e_on;
; NOP();
; NOP();
; NOP();
; lcd_wr_temp=(PINA&0xfc);
; lcd_wr_temp|=(PINC&0x03);
; e_off;
; cs1_off;
; }
; e_off; //写lcd命令
cbi 0x12,7
.dbline 314
; rw_off;
cbi 0x12,3
.dbline 315
; di_off;
cbi 0x12,4
.dbline 316
; cs1_on;
sbi 0x15,7
.dbline 317
; PORTA&=0x03;
in R24,0x1b
andi R24,3
out 0x1b,R24
.dbline 318
; PORTA|=(lcd_wr_buffer&0xFC);
mov R24,R16
andi R24,252
in R2,0x1b
or R2,R24
out 0x1b,R2
.dbline 319
; PORTC&=0xFC;
in R24,0x15
andi R24,252
out 0x15,R24
.dbline 320
; PORTC|=(lcd_wr_buffer&0x03);
mov R24,R16
andi R24,3
in R2,0x15
or R2,R24
out 0x15,R2
.dbline 321
; DDRA|=0xFC;
in R24,0x1a
ori R24,252
out 0x1a,R24
.dbline 322
; DDRC|=0X03;
in R24,0x14
ori R24,3
out 0x14,R24
.dbline 323
; e_on;
sbi 0x12,7
.dbline 324
; NOP();
nop
.dbline 325
; NOP();
nop
.dbline 326
; NOP();
nop
.dbline 327
; NOP();
nop
.dbline 328
; e_off;
cbi 0x12,7
.dbline 329
; cs1_off;
cbi 0x15,7
.dbline 330
; NOP();
nop
.dbline 331
; NOP();
nop
.dbline 332
; DDRA&=0x03;
in R24,0x1a
andi R24,3
out 0x1a,R24
.dbline 333
; DDRC&=0XFC;
in R24,0x14
andi R24,252
out 0x14,R24
.dbline -2
L41:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r lcd_wr_temp 20 c
.dbsym r lcd_wr_buffer 16 c
.dbend
.dbfunc e lcd_wr1_data _lcd_wr1_data fV
; lcd_wr_temp -> R20
; lcd_wr_buffer -> R16
.even
_lcd_wr1_data::
xcall push_gset1
.dbline -1
.dbline 338
; }
;
; //向lcd_cs1写数据函数
; void lcd_wr1_data (unsigned char lcd_wr_buffer)
; {
.dbline 340
; unsigned char lcd_wr_temp;
; e_off; //读lcd状态
cbi 0x12,7
.dbline 341
; rw_on;
sbi 0x12,3
.dbline 342
; di_off;
cbi 0x12,4
.dbline 343
; cs1_on;
sbi 0x15,7
.dbline 344
; DDRA&=0x03;
in R24,0x1a
andi R24,3
out 0x1a,R24
.dbline 345
; PORTA&=0x03;
in R24,0x1b
andi R24,3
out 0x1b,R24
.dbline 346
; DDRC&=0xFC;
in R24,0x14
andi R24,252
out 0x14,R24
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?