📄 display_board2.0.s
字号:
; PDataY++;
lds R24,_PDataY
lds R25,_PDataY+1
adiw R24,1
sts _PDataY+1,R25
sts _PDataY,R24
.dbline 319
; break;
xjmp L81
L85:
.dbline 322
; }
; case 2:
; { //反向滚屏
.dbline 323
; PDataY--;
lds R24,_PDataY
lds R25,_PDataY+1
sbiw R24,1
sts _PDataY+1,R25
sts _PDataY,R24
.dbline 324
; break;
xjmp L81
X4:
.dbline 327
; }
; case 3:
; {
.dbline 328
; break;
L87:
.dbline 331
; }
; case 4:
; { //覆盖模式
.dbline 332
; if(ModelContJuge =1)
ldi R24,1
sts _ModelContJuge,R24
tst R24
breq L88
.dbline 333
; {
.dbline 334
; PDataYMax++;
lds R24,_PDataYMax
lds R25,_PDataYMax+1
adiw R24,1
sts _PDataYMax+1,R25
sts _PDataYMax,R24
.dbline 335
; PDataYMin++;
lds R24,_PDataYMin
lds R25,_PDataYMin+1
adiw R24,1
sts _PDataYMin+1,R25
sts _PDataYMin,R24
.dbline 336
; }
xjmp L89
L88:
.dbline 338
; else
; {
.dbline 339
; PDataYMax--;
lds R24,_PDataYMax
lds R25,_PDataYMax+1
sbiw R24,1
sts _PDataYMax+1,R25
sts _PDataYMax,R24
.dbline 340
; PDataYMin--;
lds R24,_PDataYMin
lds R25,_PDataYMin+1
sbiw R24,1
sts _PDataYMin+1,R25
sts _PDataYMin,R24
.dbline 341
; }
L89:
.dbline 342
; if(PDataYMax >PFileMax)
lds R2,_PDataYMax
lds R3,_PDataYMax+1
cp R20,R2
cpc R21,R3
brge L90
.dbline 343
; {
.dbline 344
; ModelContJuge =0;
clr R2
sts _ModelContJuge,R2
.dbline 345
; }
L90:
.dbline 346
; if(PDataYMax <PFileMax)
lds R2,_PDataYMax
lds R3,_PDataYMax+1
cp R2,R20
cpc R3,R21
brge L81
.dbline 347
; {
.dbline 348
; ModelContJuge =1;
ldi R24,1
sts _ModelContJuge,R24
.dbline 349
; }
.dbline 350
; break;
.dbline 353
; }
; case 5:
; {
.dbline 354
; break;
L80:
L81:
.dbline 357
ldi R16,4
ldi R17,0
xcall _RAM_Read
mov R2,R16
ldi R16,5
ldi R17,0
push R2
xcall _RAM_Read
pop R2
mov R4,R16
clr R5
mov R5,R4
clr R4
clr R3
and R2,R4
and R3,R5
sts _ModelDelayTime+1,R3
sts _ModelDelayTime,R2
.dbline 358
L78:
.dbline -2
L77:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r PFileMax 20 I
.dbsym r file_length 22 i
.dbend
.dbfunc e KEY_event _KEY_event fV
.even
_KEY_event::
.dbline -1
.dbline 367
; }
; }
; ModelDelayTime =RAM_Read(4) & (RAM_Read(5)<<8);
; }
; }
;
; /**************************************************
;
; 按键\显示事件处理区
;
; ****************************************************/
; void KEY_event(void)
; { /********* 添加按键处理代码 ***************/
.dbline 368
; switch(key_num)
lds R16,_key_num
clr R17
cpi R16,0
cpc R16,R17
breq L97
X9:
cpi R16,1
ldi R30,0
cpc R17,R30
breq L97
cpi R16,2
ldi R30,0
cpc R17,R30
breq L101
cpi R16,3
ldi R30,0
cpc R17,R30
breq L104
xjmp L96
X10:
.dbline 369
; {
.dbline 371
; case 0:
; {//And your code
.dbline 373
; //RAM_Write(0x0010,0xCF);
; break;
.dbline 376
; }
; case 1:
; {
.dbline 379
; //Disp_Buff[0] =RAM_Read(0x0010)&0xf;
; //Disp_Buff[1] =RAM_Read(0x0010)>>4;
; break;
L101:
.dbline 382
; }
; case 2:
; {
.dbline 383
; DispModel++;
lds R24,_DispModel
subi R24,255 ; addi 1
sts _DispModel,R24
.dbline 384
; if(DispModel >8)
ldi R24,8
lds R2,_DispModel
cp R24,R2
brsh L97
.dbline 385
; DispModel =0;
clr R2
sts _DispModel,R2
.dbline 386
; break;
xjmp L97
L104:
.dbline 389
; }
; case 3:
; {
.dbline 390
; PORTD &=0b10111111;
in R24,0x12
andi R24,191
out 0x12,R24
.dbline 391
; break;
L96:
L97:
.dbline -2
L95:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Display_event _Display_event fV
.even
_Display_event::
.dbline -1
.dbline 398
; }
; /*..................*/
; }
; }
; // 显示事件添加
; void Display_event(void)
; { /************* 添加显示 ***********************/
.dbline 401
; //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 402
; 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 403
; 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 405
;
; Disp_Buff[3] =DispModel;
lds R2,_DispModel
sts _Disp_Buff+3,R2
.dbline 406
; Disp_Buff[6] =HeadEN;
lds R2,_HeadEN
sts _Disp_Buff+6,R2
.dbline 407
; Disp_Buff[7] =FileEnd;
lds R2,_FileEnd
sts _Disp_Buff+7,R2
.dbline -2
L105:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; temp -> <dead>
.even
_main::
.dbline -1
.dbline 413
; }
;
; /******************* 结束 ***********************************/
; /********** 主函数区 *****************************/
; void main(void)
; {
.dbline 415
; char temp;
; device_int();
xcall _device_int
L112:
.dbline 417
.dbline 419
L113:
.dbline 416
xjmp L112
X11:
.dbline -2
L111:
.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 430
; while(1)
; {
;
; }
; }
;
; /************ 中断函数区 *************************/
;
; /************************************
; 外中断
; 数电机脉冲
; *************************************/
;
; void exi_int0(void)
; {
.dbline 431
; char i =0;
clr R22
.dbline 433
; 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 434
; for(;i <8;i++)
xjmp L119
L116:
.dbline 435
.dbline 436
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 437
L117:
.dbline 434
inc R22
L119:
.dbline 434
cpi R22,8
brlo L116
.dbline 438
xcall _Screen_send
.dbline 439
lds R24,_PDataY
lds R25,_PDataY+1
adiw R24,1
sts _PDataY+1,R25
sts _PDataY,R24
.dbline 440
lds R2,_PDataYMax
lds R3,_PDataYMax+1
cp R24,R2
cpc R25,R3
brne L120
.dbline 441
lds R2,_PDataYMin
lds R3,_PDataYMin+1
sts _PDataY+1,R3
sts _PDataY,R2
L120:
.dbline -2
L115:
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 449
; {
; DispTemp[i] =RAM_Read(adress++);//地址偏移,取数到显示缓冲区
; }
; Screen_send(); //送显示屏幕数据
; PDataY++;
; if(PDataY == PDataYMax) //数据定位
; PDataY =PDataYMin;
; }
;
; /*******************************************
; 定时器中断
; 系统主要时钟基准
; ********************************************/
; void timer1_vof(void)
; {
.dbline 450
; SEI();
sei
.dbline 451
; TCNT1H = 0xd4; //setup
ldi R24,212
out 0x2d,R24
.dbline 452
; TCNT1L = 0xce;
ldi R24,206
out 0x2c,R24
.dbline 454
;
; sys_cont++; //系统调用时间变量
lds R24,_sys_cont
lds R25,_sys_cont+1
adiw R24,1
sts _sys_cont+1,R25
sts _sys_cont,R24
.dbline 456
;
; if(sys_cont ==1000)
cpi R24,232
ldi R30,3
cpc R25,R30
brne L123
.dbline 457
; sys_cont =0;
clr R2
clr R3
sts _sys_cont+1,R3
sts _sys_cont,R2
L123:
.dbline 461
; //***********************************************************
; //传输超时处理,当time_out_ms大于设定值的时候,等待等待20S,并且
; //一直发送标志符号,超过20S以后,进行错误处理
; time_out_ms++;
lds R24,_time_out_ms
lds R25,_time_out_ms+1
adiw R24,1
sts _time_out_ms+1,R25
sts _time_out_ms,R24
.dbline 462
; if (HeadEN==0 && FileEnd==0 && time_out_ms>=800 )
lds R2,_HeadEN
tst R2
brne L125
lds R2,_FileEnd
tst R2
brne L125
cpi R24,32
ldi R30,3
cpc R25,R30
brlo L125
.dbline 463
; {
.dbline 465
;
; if (sys_cont==0) //秒记时
lds R2,_sys_cont
lds R3,_sys_cont+1
tst R2
brne L127
tst R3
brne L127
X12:
.dbline 466
; {
.dbline 467
; time_out_s++;
lds R24,_time_out_s
subi R24,255 ; addi 1
sts _time_out_s,R24
.dbline 468
; if (time_out_s=20) //结束标志
ldi R24,20
sts _time_out_s,R24
tst R24
breq L129
.dbline 469
; {
.dbline 470
; time_out_ms=1; //闲置标志
ldi R24,1
ldi R25,0
sts _time_out_ms+1,R25
sts _time_out_ms,R24
.dbline 471
; HeadEN=1;
sts _HeadEN,R24
.dbline 472
; FileEnd=1;
sts _FileEnd,R24
.dbline 474
; //进行错误处理,并要跳出此结构体
; {}
.dbline 474
.dbline 475
; }
L129:
.dbline 476
; }
L127:
.dbline 479
;
;
; uart_TX(0xAA);
ldi R16,170
xcall _uart_TX
.dbline 480
; time_out_ms--;
lds R24,_time_out_ms
lds R25,_time_out_ms+1
sbiw R24,1
sts _time_out_ms+1,R25
sts _time_out_ms,R24
.dbline 482
;
; }
L125:
.dbline 483
; if (time_out_ms==1000)
lds R24,_time_out_ms
lds R25,_time_out_ms+1
cpi R24,232
ldi R30,3
cpc R25,R30
brne L131
.dbline 484
; time_out_ms=1; //1 表示空闲状态
ldi R24,1
ldi R25,0
sts _time_out_ms+1,R25
sts _time_out_ms,R24
L131:
.dbline 487
;
; //***********************************************************
; if(key_delay >0) //键盘去抖动延时变量
clr R2
lds R3,_key_delay
cp R2,R3
brsh L133
.dbline 488
; key_delay--;
mov R24,R3
subi R24,1
sts _key_delay,R24
L133:
.dbline 490
;
; if(delay_time_count >0)
lds R2,_delay_time_count
lds R3,_delay_time_count+1
tst R2
brne X13
tst R3
breq L135
X13:
.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
L135:
.dbline 493
;
; if(ModelDelayTime >0) //模式切换时间
clr R2
clr R3
lds R4,_ModelDelayTime
lds R5,_ModelDelayTime+1
cp R2,R4
cpc R3,R5
brge L137
.dbline 494
; ModelDelayTime--;
movw R24,R4
sbiw R24,1
sts _ModelDelayTime+1,R25
sts _ModelDelayTime,R24
L137:
.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
L122:
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 509
; //Screen_send();
;
; }
;
; /*************************************
; USART 接受中断
; ******************************/
; void usart_rcx(void)
; {
.dbline 511
; unsigned char uart_data;
; uart_data =UDR;
in R20,0xc
.dbline 512
; Disp_Buff[4] =uart_data&0x0f;
mov R24,R20
andi R24,15
sts _Disp_Buff+4,R24
.dbline 513
; data_store(uart_data);
mov R16,R20
xcall _data_store
.dbline 514
; uart_TX(0xAA);
ldi R16,170
xcall _uart_TX
.dbline 515
; time_out_ms=0;
clr R2
clr R3
sts _time_out_ms+1,R3
sts _time_out_ms,R2
.dbline 516
; time_out_s=0;
sts _time_out_s,R2
.dbline -2
L139:
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_board2.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 + -