📄 toucher.s
字号:
std y+2,R24
ldi R24,4
std y+0,R24
clr R18
ldi R16,176
xcall _juxing
.dbline 697
; juxing(0x90,0x00,0x04,0x50,0x02,0x80,0x00,0x72); //(0x00,0x50,0x280,0x72)
ldi R24,114
std y+10,R24
clr R2
std y+8,R2
ldi R24,128
std y+6,R24
ldi R24,2
std y+4,R24
ldi R24,80
std y+2,R24
ldi R24,4
std y+0,R24
clr R18
ldi R16,144
xcall _juxing
.dbline 698
; juxing(0xb0,0x00,0x04,0x73,0x02,0x80,0x00,0x95); //(0x00,0x73,0x280,0x95)
ldi R24,149
std y+10,R24
clr R2
std y+8,R2
ldi R24,128
std y+6,R24
ldi R24,2
std y+4,R24
ldi R24,115
std y+2,R24
ldi R24,4
std y+0,R24
clr R18
ldi R16,176
xcall _juxing
.dbline 699
; juxing(0x90,0x00,0x04,0x96,0x02,0x80,0x00,0xb8); //(0x00,0x96,0x280,0xb8)
ldi R24,184
std y+10,R24
clr R2
std y+8,R2
ldi R24,128
std y+6,R24
ldi R24,2
std y+4,R24
ldi R24,150
std y+2,R24
ldi R24,4
std y+0,R24
clr R18
ldi R16,144
xcall _juxing
.dbline 700
; juxing(0xb0,0x00,0x04,0xb9,0x02,0x80,0x00,0xdb); //(0x00,0xb9,0x280,0xdb)
ldi R24,219
std y+10,R24
clr R2
std y+8,R2
ldi R24,128
std y+6,R24
ldi R24,2
std y+4,R24
ldi R24,185
std y+2,R24
ldi R24,4
std y+0,R24
clr R18
ldi R16,176
xcall _juxing
.dbline 701
; juxing(0x90,0x00,0x04,0xdc,0x02,0x80,0x00,0xfe); //(0x00,0xdc,0x280,0xfe)
ldi R24,254
std y+10,R24
clr R2
std y+8,R2
ldi R24,128
std y+6,R24
ldi R24,2
std y+4,R24
ldi R24,220
std y+2,R24
ldi R24,4
std y+0,R24
clr R18
ldi R16,144
xcall _juxing
.dbline 702
; juxing(0xb0,0x00,0x04,0xff,0x02,0x80,0x01,0x21); //(0x00,0xff,0x280,0x121)
ldi R24,33
std y+10,R24
ldi R24,1
std y+8,R24
ldi R24,128
std y+6,R24
ldi R24,2
std y+4,R24
ldi R24,255
std y+2,R24
ldi R24,4
std y+0,R24
clr R18
ldi R16,176
xcall _juxing
.dbline 703
; juxing(0x90,0x00,0x05,0x22,0x02,0x80,0x01,0x44); //(0x00,0x122,0x280,0x144)
ldi R24,68
std y+10,R24
ldi R24,1
std y+8,R24
ldi R24,128
std y+6,R24
ldi R24,2
std y+4,R24
ldi R24,34
std y+2,R24
ldi R24,5
std y+0,R24
clr R18
ldi R16,144
xcall _juxing
.dbline 704
; juxing(0xb0,0x00,0x05,0x45,0x02,0x80,0x01,0x68); //(0x00,0x145,0x280,0x167)
ldi R24,104
std y+10,R24
ldi R24,1
std y+8,R24
ldi R24,128
std y+6,R24
ldi R24,2
std y+4,R24
ldi R24,69
std y+2,R24
ldi R24,5
std y+0,R24
clr R18
ldi R16,176
xcall _juxing
.dbline -2
L81:
adiw R28,11
.dbline 0 ; func end
ret
.dbend
.dbfunc e num_conversion _num_conversion fV
.even
_num_conversion::
sbiw R28,3
.dbline -1
.dbline 708
; }
; /****************转换器编号***********************/
; void num_conversion(void)
; {
.dbline 709
; xtzb(0x01,0xe0,0x00,0x36);
ldi R24,54
std y+2,R24
clr R2
std y+0,R2
ldi R18,224
ldi R16,1
xcall _xtzb
.dbline 710
; fdbs(0x04);
ldi R16,4
xcall _fdbs
.dbline 711
; xszf(0x34,0xd6); //转
ldi R18,214
ldi R16,52
xcall _xszf
.dbline 712
; xszf(0x34,0xd7); //换
ldi R18,215
ldi R16,52
xcall _xszf
.dbline 713
; xszf(0x34,0xd8); //器
ldi R18,216
ldi R16,52
xcall _xszf
.dbline 714
; xszf(0x34,0x26); //编
ldi R18,38
ldi R16,52
xcall _xszf
.dbline 715
; xszf(0x34,0x27); //号
ldi R18,39
ldi R16,52
xcall _xszf
.dbline -2
L82:
adiw R28,3
.dbline 0 ; func end
ret
.dbend
.dbfunc e Read1 _Read1 fc
; temp -> R20
; k1 -> R22
; num -> R18
; addr -> R16,R17
.even
_Read1::
xcall push_gset2
.dbline -1
.dbline 719
; }
; /*********************从内部E2中读取信息******************/
; uchar Read1(uint addr,uchar num) //读取转换器信息
; {
.dbline 720
; uchar k1=0;
clr R22
.dbline 721
; uchar temp=0;
clr R20
.dbline 722
; k1=(num-1)/8;
mov R22,R18
subi R22,1
lsr R22
lsr R22
lsr R22
.dbline 723
; temp=canuse[k1]; //读取can的使用情况
ldi R24,<_canuse
ldi R25,>_canuse
mov R30,R22
clr R31
add R30,R24
adc R31,R25
ldd R20,z+0
.dbline 724
; return temp;
mov R16,R20
.dbline -2
L83:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r temp 20 c
.dbsym r k1 22 c
.dbsym r num 18 c
.dbsym r addr 16 i
.dbend
.dbfunc e Read2 _Read2 fc
; k2 -> R22
; temp1 -> R20
; num -> R18
; addr -> R16,R17
.even
_Read2::
xcall push_gset2
.dbline -1
.dbline 727
; }
; uchar Read2(uint addr,uchar num) //读取节点使用情况
; {
.dbline 728
; uchar temp1=0;
clr R20
.dbline 729
; uchar k2=0;
clr R22
.dbline 730
; addr=num_can*4+addr;
lds R2,_num_can
ldi R24,4
mul R24,R2
add R16,R0
adc R17,R1
.dbline 731
; k2=(num-1)/8;
mov R22,R18
subi R22,1
lsr R22
lsr R22
lsr R22
.dbline 732
; temp1=detuse[num_can][k2];
mul R24,R2
movw R2,R0
ldi R24,<_detuse
ldi R25,>_detuse
add R2,R24
adc R3,R25
mov R30,R22
clr R31
add R30,R2
adc R31,R3
ldd R20,z+0
.dbline 733
; return temp1;
mov R16,R20
.dbline -2
L84:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r k2 22 c
.dbsym r temp1 20 c
.dbsym r num 18 c
.dbsym r addr 16 i
.dbend
.dbfunc e Read3 _Read3 fc
; temp1 -> R20
; addr -> R16,R17
.even
_Read3::
xcall push_gset1
.dbline -1
.dbline 736
; }
; uchar Read3(uint addr) //读取节点探测器和联动的选择情况
; {
.dbline 737
; uchar temp1=0;
clr R20
.dbline 738
; addr=num_can+addr;
lds R2,_num_can
clr R3
add R16,R2
adc R17,R3
.dbline 739
; temp1=det_link[num_can];
ldi R24,<_det_link
ldi R25,>_det_link
mov R30,R2
clr R31
add R30,R24
adc R31,R25
ldd R20,z+0
.dbline 740
; return temp1;
mov R16,R20
.dbline -2
L85:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r temp1 20 c
.dbsym r addr 16 i
.dbend
.area lit(rom, con, rel)
L87:
.byte 128,64
.byte 32,16
.byte 8,4
.byte 2,1
.area text(rom, con, rel)
.dbfile F:\AVR\zhulast\toucher.c
.dbfunc e chroma_disp _chroma_disp fV
; temp3 -> y+37
; temp2 -> y+36
; sum2 -> y+35
; sum1 -> y+34
; temp6 -> y+33
; kkk -> y+32
; a -> y+19
; temp -> R10,R11
; temp1 -> y+31
; temp0 -> y+30
; temp5 -> y+29
; counter -> R12
; addr -> R14,R15
; k1 -> y+28
; nongdu -> y+16
; temp7 -> R20
; addr_unit -> R22,R23
; rambuff -> y+5
; ii -> y+27
.even
_chroma_disp::
xcall push_gset5
sbiw R28,38
.dbline -1
.dbline 750
; }
; //uchar Read4(uint addr)
; //{
; //uchar temp;
; // temp=EEPROMread(addr);
; // return temp;
; //}
; /*********************浓度显示*******************/
; void chroma_disp(void)
; {
.dbline 751
; uchar sum1=0;
clr R0
std y+34,R0
.dbline 752
; uchar sum2=0;
std y+35,R0
.dbline 753
; uchar k1=0;
std y+28,R0
.dbline 754
; uchar ii=0;
std y+27,R0
.dbline 755
; uchar kkk=0;
std y+32,R0
.dbline 756
; uchar temp0=0;
std y+30,R0
.dbline 757
; uchar temp1=0;
std y+31,R0
.dbline 758
; uchar temp2=0;
std y+36,R0
.dbline 759
; uchar temp3=0;
std y+37,R0
.dbline 761
; //uchar temp4=0;
; uchar temp5=0;
std y+29,R0
.dbline 762
; uchar temp6=0;
std y+33,R0
.dbline 763
; uchar temp7=0;
clr R20
.dbline 764
; uchar counter=0;
clr R12
.dbline 765
; uint temp=0;
clr R10
clr R11
.dbline 766
; uint addr=0;
clr R14
clr R15
.dbline 767
; uint addr_unit=0 ; //外部E2中存储浓度单位的初始地址
clr R22
clr R23
.dbline 770
; uchar rambuff[11] ;
; uchar nongdu[3] ;
; uchar a[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
ldi R24,<L87
ldi R25,>L87
movw R30,R28
adiw R30,19
ldi R16,8
ldi R17,0
st -y,R31
st -y,R30
st -y,R25
st -y,R24
xcall asgncblk
.dbline 773
;
; /**************求出最后一个投用的结点号******************/
; for(i=3;i>=0;i--)
ldi R24,3
sts _i,R24
xjmp L91
L88:
.dbline 774
; {
.dbline 775
; for(k1=0;k1<8;k1++)
clr R0
std y+28,R0
xjmp L95
L92:
.dbline 776
; {
.dbline 777
; if((detuse[num_can][i]&a[k1])!=0) //如果没投用
lds R2,_num_can
ldi R24,4
mul R24,R2
movw R2,R0
ldi R24,<_detuse
ldi R25,>_detuse
add R2,R24
adc R3,R25
lds R30,_i
clr R31
add R30,R2
adc R31,R3
ldd R2,z+0
movw R24,R28
adiw R24,19
ldd R30,y+28
clr R31
add R30,R24
adc R31,R25
ldd R3,z+0
and R2,R3
breq L96
.dbline 778
; sum1++; //没投用的节点个数
ldd R0,y+34
inc R0
std y+34,R0
xjmp L97
L96:
.dbline 780
; else
; {
.dbline 781
; temp6=1;
clr R0
inc R0
std y+33,R0
.dbline 782
; break;
xjmp L94
L97:
.dbline 784
L93:
.dbline 775
ldd R0,y+28
inc R0
std y+28,R0
L95:
.dbline 775
ldd R24,y+28
cpi R24,8
brlo L92
L94:
.dbline 785
; }
; }
; if(temp6==1)
ldd R24,y+33
cpi R24,1
brne L98
.dbline 786
; break;
xjmp L90
L98:
.dbline 787
L89:
.dbline 773
lds R24,_i
subi R24,1
sts _i,R24
L91:
.dbline 773
lds R24,_i
cpi R24,0
brlo X5
xjmp L88
X5:
L90:
.dbline 788
; }
; sum2=32-sum1; //投用的最大节点数
ldi R24,32
ldd R0,y+34
sub R24,R0
std y+35,R24
.dbline 790
; /*******************显示部分*********************/
; xh=0xe0; //颜色 e0
ldi R24,224
sts _xh,R24
.dbline 791
; xl=0x08;
ldi R24,8
sts _xl,R24
.dbline 792
; yh=0x90;
ldi R24,144
sts _yh,R24
.dbline 793
; yl=0x59;
ldi R24,89
sts _yl,R24
.dbline 794
; num_det=page*num1+1;
lds R2,_page
ldi R24,16
mul R24,R2
mov R24,R0
subi R24,255 ; addi 1
sts _num_det,R24
.dbline 795
; temp7=(0x01<<((num_det-1)%8));
ldi R17,8
mov R16,R24
subi R16,1
xcall mod8u
mov R17,R16
ldi R16,1
xcall lsl8
mov R20,R16
.dbline 796
; counter=0;
clr R12
.dbline 797
; for(kkk=0;kkk<8;kkk++)
clr R0
std y+32,R0
xjmp L103
L100:
.dbline 798
; {
.dbline 799
; wdr(); //dog
xcall _wdr
.dbline 800
; if((kkk==1)||(kkk==3)||(kkk==5)||(kkk==7))
ldd R24,y+32
cpi R24,1
breq L108
cpi R24,3
breq L108
cpi R24,5
breq L108
cpi R24,7
brne L104
L108:
.dbline 801
; {
.dbline 802
; xh=0xc0; //换行颜色为红色
ldi R24,192
sts _xh,R24
.dbline 803
; xl=0x08;
ldi R24,8
sts _xl,R24
.dbline 804
; yh=yh|0x20; //将字体背景设为青色
lds R24,_yh
ori R24,32
sts _yh,R24
.dbline 805
; }
xjmp L105
L104:
.dbline 806
; else if((kkk==0)||(kkk==2)||(kkk==4)||(kkk==6))
ldd R0,y+32
tst R0
breq L113
mov R24,R0
cpi R24,2
breq L113
cpi R24,4
breq L113
cpi R24,6
brne L109
L113:
.dbline 807
; {
.dbline 808
; xh=0xe0; //换行颜色为黄色
ldi R24,224
sts _xh,R24
.dbline 809
; xl=0x08;
ldi R24,8
sts _xl,R24
.dbline 810
; yh=yh&0x9f; //将字体背景设为蓝色
lds R24,_yh
andi R24,159
sts _yh,R24
.dbline 811
; }
L109:
.dbline 813
; else
; ;
L110:
L105:
.dbline 814
; for(j=0;j<2;j++)
clr R2
sts _j,R2
xjmp L117
L114:
.dbline 815
; {
.dbline 816
; wdr(); //feed dog
xcall _wdr
.dbline 817
; fdbs(0x14); //放大1倍
ldi R16,20
xcall _fdbs
.dbline 818
; addr=(uint)num_can*256+(num_det-1)*8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -