📄 display_board3.0.s
字号:
; FileEnd =0;
sts _FileEnd,R2
.dbline 318
; }
L85:
.dbline 319
; }
L83:
.dbline 320
L81:
.dbline -2
L69:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r data 20 c
.dbend
.dbfunc e Disp_Model _Disp_Model fV
; PFileMax -> R16,R17
; file_length -> R18,R19
.even
_Disp_Model::
.dbline -1
.dbline 328
; }
; }
; /**************************************************
;
; 显示效果处理
;
; ****************************************************/
; void Disp_Model(void)
; {
.dbline 329
; unsigned int file_length =0;
clr R18
clr R19
.dbline 333
; int PFileMax;
; //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 L90
X8:
tst R3
breq X9
xjmp L90
X9:
X4:
.dbline 334
; {
.dbline 335
; switch(DispModel)
lds R18,_DispModel
clr R19
cpi R18,0
cpc R18,R19
breq L95
X5:
cpi R18,1
ldi R30,0
cpc R19,R30
breq L96
cpi R18,2
ldi R30,0
cpc R19,R30
breq L97
cpi R18,3
ldi R30,0
cpc R19,R30
brne X10
xjmp L93
X10:
cpi R18,4
ldi R30,0
cpc R19,R30
breq L99
cpi R18,5
ldi R30,0
cpc R19,R30
brne X11
xjmp L93
X11:
xjmp L92
X6:
.dbline 336
; {
L95:
.dbline 338
; case 0:
; { //基本显示
.dbline 339
; PDataYMin =4;
ldi R24,4
ldi R25,0
sts _PDataYMin+1,R25
sts _PDataYMin,R24
.dbline 340
; PDataYMax =154;
ldi R24,154
sts _PDataYMax+1,R25
sts _PDataYMax,R24
.dbline 341
; break;
xjmp L93
L96:
.dbline 344
; }
; case 1:
; { //滚屏
.dbline 345
; PDataY++;
lds R24,_PDataY
lds R25,_PDataY+1
adiw R24,1
sts _PDataY+1,R25
sts _PDataY,R24
.dbline 346
; break;
xjmp L93
L97:
.dbline 349
; }
; case 2:
; { //反向滚屏
.dbline 350
; PDataY--;
lds R24,_PDataY
lds R25,_PDataY+1
sbiw R24,1
sts _PDataY+1,R25
sts _PDataY,R24
.dbline 351
; break;
xjmp L93
X7:
.dbline 354
; }
; case 3:
; {
.dbline 355
; break;
L99:
.dbline 358
; }
; case 4:
; { //覆盖模式
.dbline 359
; if(ModelContJuge =1)
ldi R24,1
sts _ModelContJuge,R24
tst R24
breq L100
.dbline 360
; {
.dbline 361
; PDataYMax++;
lds R24,_PDataYMax
lds R25,_PDataYMax+1
adiw R24,1
sts _PDataYMax+1,R25
sts _PDataYMax,R24
.dbline 362
; PDataYMin++;
lds R24,_PDataYMin
lds R25,_PDataYMin+1
adiw R24,1
sts _PDataYMin+1,R25
sts _PDataYMin,R24
.dbline 363
; }
xjmp L101
L100:
.dbline 365
; else
; {
.dbline 366
; PDataYMax--;
lds R24,_PDataYMax
lds R25,_PDataYMax+1
sbiw R24,1
sts _PDataYMax+1,R25
sts _PDataYMax,R24
.dbline 367
; PDataYMin--;
lds R24,_PDataYMin
lds R25,_PDataYMin+1
sbiw R24,1
sts _PDataYMin+1,R25
sts _PDataYMin,R24
.dbline 368
; }
L101:
.dbline 369
; if(PDataYMax >PFileMax)
lds R2,_PDataYMax
lds R3,_PDataYMax+1
cp R16,R2
cpc R17,R3
brge L102
.dbline 370
; {
.dbline 371
; ModelContJuge =0;
clr R2
sts _ModelContJuge,R2
.dbline 372
; }
L102:
.dbline 373
; if(PDataYMax <PFileMax)
lds R2,_PDataYMax
lds R3,_PDataYMax+1
cp R2,R16
cpc R3,R17
brge L93
.dbline 374
; {
.dbline 375
; ModelContJuge =1;
ldi R24,1
sts _ModelContJuge,R24
.dbline 376
; }
.dbline 377
; break;
.dbline 380
; }
; case 5:
; {
.dbline 381
; break;
L92:
L93:
.dbline 385
ldi R24,100
ldi R25,0
sts _ModelDelayTime+1,R25
sts _ModelDelayTime,R24
.dbline 386
L90:
.dbline -2
L89:
.dbline 0 ; func end
ret
.dbsym r PFileMax 16 I
.dbsym r file_length 18 i
.dbend
.dbfunc e KEY_event _KEY_event fV
.even
_KEY_event::
.dbline -1
.dbline 395
; }
; }
; //ModelDelayTime =RAM_Read(4) & (RAM_Read(5)<<8);
; ModelDelayTime =100;
; }
; }
;
; /**************************************************
;
; 按键\显示事件处理区
;
; ****************************************************/
; void KEY_event(void)
; { /********* 添加按键处理代码 ***************/
.dbline 396
; switch(key_num)
lds R16,_key_num
clr R17
cpi R16,0
cpc R16,R17
breq L109
X12:
cpi R16,1
ldi R30,0
cpc R17,R30
breq L109
cpi R16,2
ldi R30,0
cpc R17,R30
breq L113
cpi R16,3
ldi R30,0
cpc R17,R30
breq L116
xjmp L108
X13:
.dbline 397
; {
.dbline 399
; case 0:
; {//And your code
.dbline 401
; //RAM_Write(0x0010,0xCF);
; break;
.dbline 404
; }
; case 1:
; {
.dbline 407
; //Disp_Buff[0] =RAM_Read(0x0010)&0xf;
; //Disp_Buff[1] =RAM_Read(0x0010)>>4;
; break;
L113:
.dbline 410
; }
; case 2:
; {
.dbline 411
; DispModel++;
lds R24,_DispModel
subi R24,255 ; addi 1
sts _DispModel,R24
.dbline 412
; if(DispModel >8)
ldi R24,8
lds R2,_DispModel
cp R24,R2
brsh L109
.dbline 413
; DispModel =0;
clr R2
sts _DispModel,R2
.dbline 414
; break;
xjmp L109
L116:
.dbline 417
; }
; case 3:
; {
.dbline 418
; PORTD &=0b10111111;
in R24,0x12
andi R24,191
out 0x12,R24
.dbline 419
; break;
L108:
L109:
.dbline -2
L107:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Display_event _Display_event fV
.even
_Display_event::
.dbline -1
.dbline 426
; }
; /*..................*/
; }
; }
; // 显示事件添加
; void Display_event(void)
; { /************* 添加显示 ***********************/
.dbline 429
; //Disp_Buff[1] =>>4;
; //Disp_Buff[6] =head[2]&0x0f;
; Disp_Buff[0] =DataIndex&0x0f;
lds R24,_DataIndex
lds R25,_DataIndex+1
andi R24,15
andi R25,0
sts _Disp_Buff,R24
.dbline 430
; Disp_Buff[1] =(DataIndex>>4)&0x0f;
lds R24,_DataIndex
lds R25,_DataIndex+1
asr R25
ror R24
asr R25
ror R24
asr R25
ror R24
asr R25
ror R24
andi R24,15
andi R25,0
sts _Disp_Buff+1,R24
.dbline 431
; Disp_Buff[2] =DataIndex>>8;
lds R2,_DataIndex
lds R3,_DataIndex+1
mov R2,R3
clr R3
sbrc R2,7
com R3
sts _Disp_Buff+2,R2
.dbline 433
; //Disp_Buff[4] =PDataY&0x0f;
; Disp_Buff[3] =DispModel;
lds R2,_DispModel
sts _Disp_Buff+3,R2
.dbline 434
; Disp_Buff[6] =HeadEN;
lds R2,_HeadEN
sts _Disp_Buff+6,R2
.dbline 435
; Disp_Buff[7] =FileEnd;
lds R2,_FileEnd
sts _Disp_Buff+7,R2
.dbline -2
L117:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; temp -> <dead>
.even
_main::
.dbline -1
.dbline 441
; }
;
; /******************* 结束 ***********************************/
; /********** 主函数区 *****************************/
; void main(void)
; {
.dbline 443
; char temp;
; device_int();
xcall _device_int
L124:
.dbline 445
.dbline 446
.dbline 447
L125:
.dbline 444
xjmp L124
X14:
.dbline -2
L123:
.dbline 0 ; func end
ret
.dbsym l temp 1 c
.dbend
.dbfunc e exi_int0 _exi_int0 fV
; adress -> R20,R21
; i -> R22
.even
_exi_int0::
xcall push_lset
xcall push_gset2
.dbline -1
.dbline 458
; while(1)
; {
; ;
; }
; }
;
; /************ 中断函数区 *************************/
;
; /************************************
; 外中断
; 数电机脉冲
; *************************************/
;
; void exi_int0(void)
; {
.dbline 459
; char i =0;
clr R22
.dbline 461
; int adress;
; adress =PDataY<<3; //列地址转化为存储地址
lds R20,_PDataY
lds R21,_PDataY+1
lsl R20
rol R21
lsl R20
rol R21
lsl R20
rol R21
.dbline 462
; for(;i <8;i++)
xjmp L131
L128:
.dbline 463
.dbline 464
movw R2,R20
subi R20,255 ; offset = 1
sbci R21,255
movw R16,R2
xcall _RAM_Read
ldi R24,<_DispTemp
ldi R25,>_DispTemp
mov R30,R22
clr R31
add R30,R24
adc R31,R25
std z+0,R16
.dbline 465
L129:
.dbline 462
inc R22
L131:
.dbline 462
cpi R22,8
brlo L128
.dbline 466
xcall _Screen_send
.dbline 467
lds R24,_PDataY
lds R25,_PDataY+1
adiw R24,1
sts _PDataY+1,R25
sts _PDataY,R24
.dbline 468
lds R2,_PDataYMax
lds R3,_PDataYMax+1
cp R24,R2
cpc R25,R3
brne L132
.dbline 469
lds R2,_PDataYMin
lds R3,_PDataYMin+1
sts _PDataY+1,R3
sts _PDataY,R2
L132:
.dbline -2
L127:
xcall pop_gset2
xcall pop_lset
.dbline 0 ; func end
reti
.dbsym r adress 20 I
.dbsym r i 22 c
.dbend
.dbfunc e timer1_vof _timer1_vof fV
.even
_timer1_vof::
xcall push_lset
.dbline -1
.dbline 477
; {
; DispTemp[i] =RAM_Read(adress++);//地址偏移,取数到显示缓冲区
; }
; Screen_send(); //送显示屏幕数据
; PDataY++;
; if(PDataY == PDataYMax) //数据定位
; PDataY =PDataYMin;
; }
;
; /*******************************************
; 定时器中断
; 系统主要时钟基准
; ********************************************/
; void timer1_vof(void)
; {
.dbline 478
; SEI();
sei
.dbline 479
; TCNT1H = 0xd4; //setup
ldi R24,212
out 0x2d,R24
.dbline 480
; TCNT1L = 0xce;
ldi R24,206
out 0x2c,R24
.dbline 482
;
; sys_cont++; //系统调用时间变量
lds R24,_sys_cont
lds R25,_sys_cont+1
adiw R24,1
sts _sys_cont+1,R25
sts _sys_cont,R24
.dbline 484
;
; if(sys_cont ==1000)
cpi R24,232
ldi R30,3
cpc R25,R30
brne L135
.dbline 485
; sys_cont =0;
clr R2
clr R3
sts _sys_cont+1,R3
sts _sys_cont,R2
L135:
.dbline 487
;
; if(key_delay >0) //键盘去抖动延时变量
clr R2
lds R3,_key_delay
cp R2,R3
brsh L137
.dbline 488
; key_delay--;
mov R24,R3
subi R24,1
sts _key_delay,R24
L137:
.dbline 490
;
; if(delay_time_count >0)
lds R2,_delay_time_count
lds R3,_delay_time_count+1
tst R2
brne X15
tst R3
breq L139
X15:
.dbline 491
; delay_time_count--; //ms延时用变量
lds R24,_delay_time_count
lds R25,_delay_time_count+1
sbiw R24,1
sts _delay_time_count+1,R25
sts _delay_time_count,R24
L139:
.dbline 493
;
; if(ModelDelayTime >0) //模式切换时间
clr R2
clr R3
lds R4,_ModelDelayTime
lds R5,_ModelDelayTime+1
cp R2,R4
cpc R3,R5
brge L141
.dbline 494
; ModelDelayTime--;
movw R24,R4
sbiw R24,1
sts _ModelDelayTime+1,R25
sts _ModelDelayTime,R24
L141:
.dbline 496
;
; Disp_key_group(); //显示刷新,取键值到缓冲区
xcall _Disp_key_group
.dbline 497
; Key_num(); //键值后期处理以及去抖函数
xcall _Key_num
.dbline 498
; Disp_Model(); //屏幕显示特效模式
xcall _Disp_Model
.dbline 499
; KEY_event(); //按键事件处理
xcall _KEY_event
.dbline 500
; Display_event(); //显示事件
xcall _Display_event
.dbline -2
L134:
xcall pop_lset
.dbline 0 ; func end
reti
.dbend
.dbfunc e usart_rcx _usart_rcx fV
; uart_data -> R20
.even
_usart_rcx::
xcall push_lset
xcall push_gset1
.dbline -1
.dbline 507
; }
;
; /*************************************
; USART 接受中断
; ******************************/
; void usart_rcx(void)
; {
.dbline 509
; unsigned char uart_data;
; uart_data =UDR;
in R20,0xc
.dbline 510
; data_store(uart_data);//存储数据
mov R16,R20
xcall _data_store
.dbline 511
; Disp_Buff[4] =uart_data&0x0f;
mov R24,R20
andi R24,15
sts _Disp_Buff+4,R24
.dbline 512
; Disp_Buff[5] =uart_data>>4;
mov R24,R20
swap R24
andi R24,#0x0F
sts _Disp_Buff+5,R24
.dbline 513
; uart_TX(0xAA); //返回数据
ldi R16,170
xcall _uart_TX
.dbline 514
; time_out_ms=0; //超时毫秒计数
clr R2
clr R3
sts _time_out_ms+1,R3
sts _time_out_ms,R2
.dbline 515
; time_out_s=0; //超时秒计数
sts _time_out_s,R2
.dbline -2
L143:
xcall pop_gset1
xcall pop_lset
.dbline 0 ; func end
reti
.dbsym r uart_data 20 c
.dbend
.area bss(ram, con, rel)
.dbfile display_board3.0.c
_Head::
.blkb 3
.dbsym e Head _Head A[3:3]c
_DispTemp::
.blkb 8
.dbsym e DispTemp _DispTemp A[8:8]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -