📄 display_board3.0.s
字号:
.dbline 287
L68:
.dbline 280
in R2,0x36
sbrs R2,7
rjmp L67
.dbline 288
; }
; }
; Disp_Buff[7] =2;
ldi R24,2
sts _Disp_Buff+7,R24
.dbline 289
; if ((TWSR & 0xF8) != MT_SLA_ACK)
in R24,0x1
andi R24,248
cpi R24,24
breq L73
.dbline 290
; {
.dbline 291
; TWCR = (1<<TWINT)|(1<<TWSTO)|(1<<TWEN);
ldi R24,148
out 0x36,R24
.dbline 292
; goto start;
xjmp L58
L73:
.dbline 294
; }
; TWDR = data; //送数据
out 0x3,R20
.dbline 295
; TWCR = (1<<TWINT) | (1<<TWEN);
ldi R24,132
out 0x36,R24
xjmp L76
L75:
.dbline 297
; while (!(TWCR & (1<<TWINT)))
; {
.dbline 298
; if(I2C_TIME_OUT >1000)
ldi R24,1000
ldi R25,3
lds R2,_I2C_TIME_OUT
lds R3,_I2C_TIME_OUT+1
cp R24,R2
cpc R25,R3
brsh L78
.dbline 299
; {
.dbline 300
; TWCR = (1<<TWINT)|(1<<TWSTO)|(1<<TWEN);
ldi R24,148
out 0x36,R24
.dbline 301
; goto start;
xjmp L58
L78:
.dbline 303
L76:
.dbline 296
in R2,0x36
sbrs R2,7
rjmp L75
.dbline 304
; }
; }
; Disp_Buff[7] =3;
ldi R24,3
sts _Disp_Buff+7,R24
.dbline 305
; if ((TWSR & 0xF8) != MT_DATA_ACK)
in R24,0x1
andi R24,248
cpi R24,40
breq L81
.dbline 306
; {
.dbline 308
; //goto start;
; }
L81:
.dbline 309
; TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
ldi R24,148
out 0x36,R24
.dbline -2
.dbline 310
; }
L57:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r data 20 c
.dbend
.dbfunc e Screen_send _Screen_send fV
; i -> R20
.even
_Screen_send::
xcall push_gset1
.dbline -1
.dbline 315
; /***************************************************
; 向显示屏送数据
; ***************************************************/
; void Screen_send(void)
; {
.dbline 316
; char i =8;
ldi R20,8
.dbline 317
; PORTB &=0B11101111; //送RCK信号,底电平
in R24,0x18
andi R24,239
out 0x18,R24
.dbline 318
; for(;i >0;)
xjmp L87
L84:
.dbline 319
.dbline 320
dec R20
.dbline 321
ldi R24,<_DispTemp
ldi R25,>_DispTemp
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
xcall _SPI_MasterTransmit
.dbline 322
L85:
.dbline 318
L87:
.dbline 318
clr R2
cp R2,R20
brlo L84
.dbline 323
; {
; i--;
; SPI_MasterTransmit(DispTemp[i]);
; }
; PORTB |=0B00010000; //关闭RCK信号,高电平
sbi 0x18,4
.dbline -2
.dbline 324
; }
L83:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e SPI_MasterTransmit _SPI_MasterTransmit fV
; cData -> R16
.even
_SPI_MasterTransmit::
.dbline -1
.dbline 327
; //SPI硬件通讯
; void SPI_MasterTransmit(char cData)
; {
.dbline 328
; SPDR = cData;/* 启动数据传输 */
out 0xf,R16
L89:
.dbline 329
L90:
.dbline 329
; while(!(SPSR & (1<<SPIF)));/* 等待传输结束 */
sbis 0xe,7
rjmp L89
.dbline -2
.dbline 330
; }
L88:
.dbline 0 ; func end
ret
.dbsym r cData 16 c
.dbend
.dbfunc e RAM_Write _RAM_Write fV
; High8Bit -> R20
; data -> R18
; adress -> R16,R17
.even
_RAM_Write::
xcall push_gset1
.dbline -1
.dbline 336
; /**************************************************
; 数据接受,外部RAM读写
; ****************************************************/
; //写外部RAM
; void RAM_Write(int adress,char data)
; {
.dbline 338
; char High8Bit;
; High8Bit=adress >>8;
movw R20,R16
mov R20,R21
clr R21
sbrc R20,7
com R21
.dbline 339
; PORTD |=0B11100000; //关ALE 读关闭 写关闭
in R24,0x12
ori R24,224
out 0x12,R24
.dbline 340
; PORTC =0;
clr R2
out 0x15,R2
.dbline 341
; DDRA =0XFF;
ldi R24,255
out 0x1a,R24
.dbline 342
; PORTA =adress;
out 0x1b,R16
.dbline 343
; PORTD &=0xe7;
in R24,0x12
andi R24,231
out 0x12,R24
.dbline 344
; PORTC =High8Bit;
out 0x15,R20
.dbline 345
; PORTD |=(High8Bit <<3) & 0x18;
mov R24,R20
lsl R24
lsl R24
lsl R24
andi R24,24
in R2,0x12
or R2,R24
out 0x12,R2
.dbline 346
; PORTD &=0b01111111;
in R24,0x12
andi R24,127
out 0x12,R24
.dbline 347
; PORTA =data;
out 0x1b,R18
.dbline 348
; PORTD &=0b10111111;
in R24,0x12
andi R24,191
out 0x12,R24
.dbline -2
.dbline 349
; }
L92:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r High8Bit 20 c
.dbsym r data 18 c
.dbsym r adress 16 I
.dbend
.dbfunc e RAM_Read _RAM_Read fc
; High8Bit -> R20
; adress -> R16,R17
.even
_RAM_Read::
xcall push_gset1
.dbline -1
.dbline 352
; //读外部RAM
; char RAM_Read(int adress)
; {
.dbline 354
; char High8Bit;
; High8Bit=adress >>8;
movw R20,R16
mov R20,R21
clr R21
sbrc R20,7
com R21
.dbline 355
; PORTD |=0B11100000; //关ALE 读关闭 写关闭
in R24,0x12
ori R24,224
out 0x12,R24
.dbline 356
; DDRA =0XFF;
ldi R24,255
out 0x1a,R24
.dbline 357
; PORTA =adress;
out 0x1b,R16
.dbline 358
; PORTD &=0xe7;
in R24,0x12
andi R24,231
out 0x12,R24
.dbline 359
; PORTC =High8Bit;
out 0x15,R20
.dbline 360
; PORTD |=(High8Bit <<3) & 0x18;
mov R24,R20
lsl R24
lsl R24
lsl R24
andi R24,24
in R2,0x12
or R2,R24
out 0x12,R2
.dbline 361
; PORTD &=0b01011111;
in R24,0x12
andi R24,95
out 0x12,R24
.dbline 362
; DDRA =0;
clr R2
out 0x1a,R2
.dbline 363
; PORTA =0XFF;
ldi R24,255
out 0x1b,R24
.dbline 364
; return PINA;
in R16,0x19
.dbline -2
L93:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r High8Bit 20 c
.dbsym r adress 16 I
.dbend
.dbfunc e data_store _data_store fV
; data -> R20
.even
_data_store::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 368
; }
; //存储数据到外部RAM
; void data_store(char data)
; {
.dbline 369
; if((data ==76) &&(FileEnd ==1)) //数据起始位检测
cpi R20,76
brne L95
lds R24,_FileEnd
cpi R24,1
brne L95
.dbline 370
; {
.dbline 371
; HeadEN =1; //开启头文件数据传输
ldi R24,1
sts _HeadEN,R24
.dbline 372
; HeadLoad =0; //头文件指针清零
clr R2
sts _HeadLoad,R2
.dbline 373
; DataIndex =0; //存储数据指针清零
clr R3
sts _DataIndex+1,R3
sts _DataIndex,R2
.dbline 374
; }
L95:
.dbline 375
; if((HeadEN ==0) &&(FileEnd ==0))
lds R2,_HeadEN
tst R2
breq X2
xjmp L97
X2:
lds R2,_FileEnd
tst R2
breq X3
xjmp L97
X3:
.dbline 376
; {
.dbline 377
; RAM_Write(DataIndex,data); //数组送数
mov R18,R20
lds R16,_DataIndex
lds R17,_DataIndex+1
xcall _RAM_Write
.dbline 378
; if(DataIndex ==2) //送文件长度数据到变量
lds R24,_DataIndex
lds R25,_DataIndex+1
cpi R24,2
ldi R30,0
cpc R25,R30
brne L99
.dbline 379
; {
.dbline 380
; FileLength =(RAM_Read(0x0001)<<8)|RAM_Read(0x0000);
ldi R16,1
ldi R17,0
xcall _RAM_Read
mov R2,R16
clr R16
clr R17
push R2
xcall _RAM_Read
pop R2
mov R3,R2
mov R2,R16
sts _FileLength+1,R3
sts _FileLength,R2
.dbline 381
; }
L99:
.dbline 382
; DataIndex++; //数据指针加1
lds R24,_DataIndex
lds R25,_DataIndex+1
adiw R24,1
sts _DataIndex+1,R25
sts _DataIndex,R24
.dbline 383
; if(((DataIndex >=FileLength)||(DataIndex >=32767))&& (DataIndex >16))
lds R2,_FileLength
lds R3,_FileLength+1
cp R24,R2
cpc R25,R3
brge L103
cpi R24,255
ldi R30,127
cpc R25,R30
brlt L101
L103:
ldi R24,16
ldi R25,0
lds R2,_DataIndex
lds R3,_DataIndex+1
cp R24,R2
cpc R25,R3
brge L101
.dbline 384
; {
.dbline 385
; HeadEN =1;
ldi R24,1
sts _HeadEN,R24
.dbline 386
; FileEnd =1;
sts _FileEnd,R24
.dbline 387
; }
L101:
.dbline 388
; }
L97:
.dbline 389
; if(HeadEN ==1) //循环检测文件起始标志
lds R24,_HeadEN
cpi R24,1
brne L104
.dbline 390
; {
.dbline 391
; Head[HeadLoad] =data;
ldi R24,<_Head
ldi R25,>_Head
lds R30,_HeadLoad
clr R31
add R30,R24
adc R31,R25
std z+0,R20
.dbline 392
; HeadLoad++;
lds R24,_HeadLoad
subi R24,255 ; addi 1
sts _HeadLoad,R24
.dbline 393
; if(HeadLoad ==3)
cpi R24,3
brne L106
.dbline 394
; {
.dbline 395
; if((Head[0] ==76) && (Head[1] ==69) &&(Head[2] ==68))//文件起始表示吻合
lds R24,_Head
cpi R24,76
brne L108
lds R24,_Head+1
cpi R24,69
brne L108
lds R24,_Head+2
cpi R24,68
brne L108
.dbline 396
; {
.dbline 397
; HeadEN =0;
clr R2
sts _HeadEN,R2
.dbline 398
; FileEnd =0;
sts _FileEnd,R2
.dbline 399
; }
L108:
.dbline 400
; }
L106:
.dbline 401
L104:
.dbline -2
.dbline 402
; }
; }
L94:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r data 20 c
.dbend
.dbfunc e Disp_Model _Disp_Model fV
; PYMax -> R16,R17
; file_length -> R16,R17
.even
_Disp_Model::
.dbline -1
.dbline 409
; /**************************************************
;
; 显示效果处理
;
; ****************************************************/
; void Disp_Model(void)
; {
.dbline 410
; unsigned int file_length =0;
clr R16
clr R17
.dbline 411
; int PYMax =FileLength >>8;
lds R16,_FileLength
lds R17,_FileLength+1
mov R16,R17
clr R17
sbrc R16,7
com R17
.dbline 414
; //DispModel =RAM_Read(2) & (RAM_Read(3)<<8); //model控制字节
; //PFileMax =(RAM_Read(0) & RAM_Read(1)<<8)>>3; //计算缓冲区域的最大列数
; if(ModelDelayTime ==0)
lds R2,_ModelDelayTime
lds R3,_ModelDelayTime+1
tst R2
breq X8
xjmp L113
X8:
tst R3
breq X9
xjmp L113
X9:
X4:
.dbline 415
; {
.dbline 416
; switch(DispModel)
lds R16,_DispModel
clr R17
cpi R16,0
cpc R16,R17
breq L118
X5:
cpi R16,1
ldi R30,0
cpc R17,R30
breq L119
cpi R16,2
ldi R30,0
cpc R17,R30
breq L120
cpi R16,3
ldi R30,0
cpc R17,R30
brne X10
xjmp L116
X10:
cpi R16,4
ldi R30,0
cpc R17,R30
breq L122
cpi R16,5
ldi R30,0
cpc R17,R30
brne X11
xjmp L116
X11:
xjmp L115
X6:
.dbline 417
; {
L118:
.dbline 419
; case 0:
; { //基本显示
.dbline 420
; PDataYMin =2;
ldi R24,2
ldi R25,0
sts _PDataYMin+1,R25
sts _PDataYMin,R24
.dbline 421
; PDataYMax =152;
ldi R24,152
sts _PDataYMax+1,R25
sts _PDataYMax,R24
.dbline 422
; break;
xjmp L116
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -