⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 toucher.s

📁 基于PIC单片机
💻 S
📖 第 1 页 / 共 5 页
字号:
	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 + -