📄 display_board3.0.s
字号:
L119:
.dbline 425
; }
; case 1:
; { //滚屏
.dbline 426
; PDataY++;
lds R24,_PDataY
lds R25,_PDataY+1
adiw R24,1
sts _PDataY+1,R25
sts _PDataY,R24
.dbline 427
; break;
xjmp L116
L120:
.dbline 430
; }
; case 2:
; { //反向滚屏
.dbline 431
; PDataY--;
lds R24,_PDataY
lds R25,_PDataY+1
sbiw R24,1
sts _PDataY+1,R25
sts _PDataY,R24
.dbline 432
; break;
xjmp L116
X7:
.dbline 435
; }
; case 3:
; {
.dbline 436
; break;
L122:
.dbline 439
; }
; case 4:
; { //覆盖模式
.dbline 440
; if(ModelContJuge ==1)
lds R24,_ModelContJuge
cpi R24,1
brne L123
.dbline 441
; {
.dbline 442
; PDataYMax++;
lds R24,_PDataYMax
lds R25,_PDataYMax+1
adiw R24,1
sts _PDataYMax+1,R25
sts _PDataYMax,R24
.dbline 443
; PDataYMin++;
lds R24,_PDataYMin
lds R25,_PDataYMin+1
adiw R24,1
sts _PDataYMin+1,R25
sts _PDataYMin,R24
.dbline 444
; }
xjmp L124
L123:
.dbline 446
; else
; {
.dbline 447
; PDataYMax--;
lds R24,_PDataYMax
lds R25,_PDataYMax+1
sbiw R24,1
sts _PDataYMax+1,R25
sts _PDataYMax,R24
.dbline 448
; PDataYMin--;
lds R24,_PDataYMin
lds R25,_PDataYMin+1
sbiw R24,1
sts _PDataYMin+1,R25
sts _PDataYMin,R24
.dbline 449
; }
L124:
.dbline 450
; if(PDataYMax >302)//PYMax)
ldi R24,302
ldi R25,1
lds R2,_PDataYMax
lds R3,_PDataYMax+1
cp R24,R2
cpc R25,R3
brge L125
.dbline 451
; {
.dbline 452
; ModelContJuge =0;
clr R2
sts _ModelContJuge,R2
.dbline 453
; }
L125:
.dbline 454
; if(PDataYMin <2)
lds R24,_PDataYMin
lds R25,_PDataYMin+1
cpi R24,2
ldi R30,0
cpc R25,R30
brge L116
.dbline 455
; {
.dbline 456
; ModelContJuge =1;
ldi R24,1
sts _ModelContJuge,R24
.dbline 457
; }
.dbline 458
; break;
.dbline 461
; }
; case 5:
; {
.dbline 462
; break;
L115:
L116:
.dbline 466
ldi R24,30
ldi R25,0
sts _ModelDelayTime+1,R25
sts _ModelDelayTime,R24
.dbline 467
L113:
.dbline -2
.dbline 468
; }
; }
; //ModelDelayTime =RAM_Read(4) & (RAM_Read(5)<<8);
; ModelDelayTime =30;
; }
; }
L112:
.dbline 0 ; func end
ret
.dbsym r PYMax 16 I
.dbsym r file_length 16 i
.dbend
.dbfunc e KEY_event _KEY_event fV
.even
_KEY_event::
.dbline -1
.dbline 475
; /**************************************************
;
; 按键\显示事件处理区
;
; ****************************************************/
; void KEY_event(void)
; { /********* 添加按键处理代码 ***************/
.dbline 476
; switch(key_num)
lds R16,_key_num
clr R17
cpi R16,0
cpc R16,R17
breq L134
X12:
cpi R16,1
ldi R30,0
cpc R17,R30
breq L132
cpi R16,2
ldi R30,0
cpc R17,R30
breq L132
cpi R16,3
ldi R30,0
cpc R17,R30
breq L141
xjmp L131
X13:
.dbline 477
; {
L134:
.dbline 479
; case 0:
; {//And your code
.dbline 480
; Disp_Buff[2] =!Disp_Buff[2];
lds R2,_Disp_Buff+2
tst R2
brne L137
ldi R16,1
ldi R17,0
xjmp L138
L137:
clr R16
clr R17
L138:
sts _Disp_Buff+2,R16
.dbline 481
; break;
xjmp L132
X14:
.dbline 484
; }
; case 1:
; {
.dbline 486
;
; break;
.dbline 489
; }
; case 2:
; {
.dbline 490
; break;
L141:
.dbline 493
; }
; case 3:
; {
.dbline 494
; DispModel++;
lds R24,_DispModel
subi R24,255 ; addi 1
sts _DispModel,R24
.dbline 495
; if(DispModel >8)
ldi R24,8
lds R2,_DispModel
cp R24,R2
brsh L132
.dbline 496
; DispModel =0;
clr R2
sts _DispModel,R2
.dbline 497
; break;
L131:
L132:
.dbline -2
.dbline 501
; }
; /*..................*/
; }
; }
L130:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Display_event _Display_event fV
.even
_Display_event::
.dbline -1
.dbline 504
; // 显示事件添加
; void Display_event(void)
; { /************* 添加显示 ***********************/
.dbline -2
.dbline 506
;
; }
L144:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; temp -> R20
.even
_main::
.dbline -1
.dbline 510
; /******************* 结束 ***********************************/
; /********** 主函数区 *****************************/
; void main(void)
; {
.dbline 511
; char temp =0;
clr R20
.dbline 512
; device_int();
xcall _device_int
xjmp L147
L146:
.dbline 514
; while(1)
; {
.dbline 515
; if(Disp_Buff[2] !=0)
lds R2,_Disp_Buff+2
tst R2
breq L149
.dbline 516
; {
.dbline 517
; Disp_Buff[0] =temp &0x0f;
mov R24,R20
andi R24,15
sts _Disp_Buff,R24
.dbline 518
; Disp_Buff[1] =temp >>4;
mov R24,R20
swap R24
andi R24,#0x0F
sts _Disp_Buff+1,R24
.dbline 519
; twi_send(temp++);
mov R2,R20
subi R20,255 ; addi 1
mov R16,R2
xcall _twi_send
.dbline 520
; delay(5);
ldi R16,5
ldi R17,0
xcall _delay
.dbline 521
; }
L149:
.dbline 523
L147:
.dbline 513
xjmp L146
X15:
.dbline -2
.dbline 524
;
; }
; }
L145:
.dbline 0 ; func end
ret
.dbsym r temp 20 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 532
; /************ 中断函数区 *************************/
;
; /************************************
; 外中断
; 数电机脉冲
; *************************************/
; void exi_int0(void)
; {
.dbline 533
; char i =0;
clr R22
.dbline 535
; 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 536
; for(;i <8;i++)
xjmp L157
L154:
.dbline 537
.dbline 538
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 539
L155:
.dbline 536
inc R22
L157:
.dbline 536
cpi R22,8
brlo L154
.dbline 540
xcall _Screen_send
.dbline 541
lds R24,_PDataY
lds R25,_PDataY+1
adiw R24,1
sts _PDataY+1,R25
sts _PDataY,R24
.dbline 542
lds R2,_PDataYMax
lds R3,_PDataYMax+1
cp R24,R2
cpc R25,R3
brlt L158
.dbline 543
lds R2,_PDataYMin
lds R3,_PDataYMin+1
sts _PDataY+1,R3
sts _PDataY,R2
L158:
.dbline -2
.dbline 544
; {
; DispTemp[i] =RAM_Read(adress++);//地址偏移,取数到显示缓冲区
; }
; Screen_send(); //送显示屏幕数据
; PDataY++;
; if(PDataY >= PDataYMax) //数据定位
; PDataY =PDataYMin ;
; }
L153:
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 550
; /*******************************************
; 定时器中断
; 系统主要时钟基准
; ********************************************/
; void timer1_vof(void)
; {
.dbline 551
; SEI();
sei
.dbline 552
; TCNT1H = 0xd4; //setup
ldi R24,212
out 0x2d,R24
.dbline 553
; TCNT1L = 0xce;
ldi R24,206
out 0x2c,R24
.dbline 555
;
; sys_cont++; //系统调用时间变量
lds R24,_sys_cont
lds R25,_sys_cont+1
adiw R24,1
sts _sys_cont+1,R25
sts _sys_cont,R24
.dbline 557
;
; if(sys_cont ==1000)
cpi R24,232
ldi R30,3
cpc R25,R30
brne L161
.dbline 558
; sys_cont =0;
clr R2
clr R3
sts _sys_cont+1,R3
sts _sys_cont,R2
L161:
.dbline 560
;
; if(key_delay >0) //键盘去抖动延时变量
clr R2
lds R3,_key_delay
cp R2,R3
brsh L163
.dbline 561
; key_delay--;
mov R24,R3
subi R24,1
sts _key_delay,R24
L163:
.dbline 563
;
; if(delay_time_count >0)
lds R2,_delay_time_count
lds R3,_delay_time_count+1
tst R2
brne X16
tst R3
breq L165
X16:
.dbline 564
; 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
L165:
.dbline 566
;
; if(ModelDelayTime >0) //模式切换时间
clr R2
clr R3
lds R4,_ModelDelayTime
lds R5,_ModelDelayTime+1
cp R2,R4
cpc R3,R5
brge L167
.dbline 567
; ModelDelayTime--;
movw R24,R4
sbiw R24,1
sts _ModelDelayTime+1,R25
sts _ModelDelayTime,R24
L167:
.dbline 569
;
; I2C_TIME_OUT++;
lds R24,_I2C_TIME_OUT
lds R25,_I2C_TIME_OUT+1
adiw R24,1
sts _I2C_TIME_OUT+1,R25
sts _I2C_TIME_OUT,R24
.dbline 570
; if(I2C_TIME_OUT ==2000)
cpi R24,208
ldi R30,7
cpc R25,R30
brne L169
.dbline 571
; I2C_TIME_OUT ==0;
L169:
.dbline 573
;
; Disp_key_group(); //显示刷新,取键值到缓冲区
xcall _Disp_key_group
.dbline 574
; Key_num(); //键值后期处理以及去抖函数
xcall _Key_num
.dbline 575
; Disp_Model(); //屏幕显示特效模式
xcall _Disp_Model
.dbline 576
; KEY_event(); //按键事件处理
xcall _KEY_event
.dbline 577
; Display_event(); //显示事件
xcall _Display_event
.dbline -2
.dbline 579
; //twi_send(sys_cont);
; }
L160:
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 584
; /*************************************
; USART 接受中断
; ******************************/
; void usart_rcx(void)
; {
.dbline 586
; unsigned char uart_data;
; uart_data =UDR;
in R20,0xc
.dbline 587
; data_store(uart_data);//存储数据
mov R16,R20
xcall _data_store
.dbline 588
; uart_TX(0xAA); //返回数据
ldi R16,170
xcall _uart_TX
.dbline 589
; time_out_ms=0; //超时毫秒计数
clr R2
clr R3
sts _time_out_ms+1,R3
sts _time_out_ms,R2
.dbline 590
; time_out_s=0; //超时秒计数
sts _time_out_s,R2
.dbline -2
.dbline 591
; }
L171:
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 + -