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

📄 toucher2.s

📁 基于PIC单片机
💻 S
📖 第 1 页 / 共 5 页
字号:
	.module toucher2.c
	.area data(ram, con, rel)
_realaddr::
	.blkb 2
	.area idata
	.word 12288
	.area data(ram, con, rel)
	.dbfile F:\AVR\zhulast\toucher2.c
	.dbsym e realaddr _realaddr i
	.area text(rom, con, rel)
	.dbfile F:\AVR\zhulast\toucher2.c
	.dbfunc e write_print _write_print fV
;            cmd -> R16
	.even
_write_print::
	.dbline -1
	.dbline 180
; #include "allhead.h"
; 
; /****************************变量声明********************************/
; extern uchar realtimebuff[7];
; extern uchar time_set[7];
; extern uchar tx_buff[12];              //存放要发向转换器的数
; //TWI 相关全局变量
; extern uchar i2c_rd_buff[32];   //i2c读出的数最初存放的地方
; extern uchar i2c_wt_buff[35];   //写
; extern uchar fhz; 
; 
; extern uchar canuse[4];                    //转换器的投用情况 按位
; extern uchar detuse[33][4];         //所有485节点的投用情况,0,1按位起作用
; extern uchar det_link[33];         //探测器或联动模块选择字节段,按位起作用 
; 
; 
; //GAL门相关全局变量
; extern uchar gal1data ;
; extern uchar gal2data ;  //继电器控制信号1,联动模块故障1,联动输出都为1
; extern uchar gal3data ;  //指示灯为共阳极的
; extern uchar gal4data ;
; extern uchar gal5data ;
; 
; extern uint baojingaddr;         
; extern uint guzhangaddr;         //第一次取用的最新故障地址
; extern uint guzhangaddr2;        //已存住的最新故障地址
; extern uint baojingaddr2;   
; extern uint onaddr2 ;        //开关机用     
; extern uchar canuse[4];
; extern uchar detuse[33][4];         //所有485节点的投用情况,0,1按位起作用
; extern uchar zhongbuff[32][10];   // 一次接收的转换器的数
; extern uint cuo1;
; extern uint cuo2;
; extern uchar keyc;
; extern uchar gal1data;
; extern uchar gal2data;
; extern uchar gal3data;
; extern uchar gal4data;
; 
; 
; //系统坐标
; extern uchar xh;        //横坐标高字节   
; extern uchar xl;        //横坐标低字节 
; extern uchar yh;        //纵坐标高字节 
; extern uchar yl;        //纵坐标高字节 
; //矩形的右下角坐标      
; extern uchar x2h;       //横坐标高字节
; extern uchar x2l;       //横坐标低字节 
; extern uchar y2h;       //纵坐标高字节 
; extern uchar y2l;       //纵坐标高字节 
; //common use
; extern uchar i;         
; extern uchar j;
; //系统坐标转换后坐标
; extern uint x;
; extern uint y;
; 
; extern uchar biaozhi;  //USART1接收中断数据标志
; extern uchar key;      //键值
; extern uchar RXC_BUFF[15];   //触摸屏发送的数据
; extern uchar jiemian;        //界面标志
; 
; 
; //开关机记录显示用
; extern uint addre2;                     //外部E2的当前地址
; extern uchar addre2hi;          //地址高址
; extern uchar addre2lo;           //地址低址
; 
; 
; extern uchar num_open;            //存放开关机记录中的编号
; extern uchar num_open2;             //存放翻页后的第一个开关机记录编号
; extern uchar data[16];              //存放外部E2中的开关机记录中信息
; extern uchar baojing[16];           //存放外部E2中的报警记录信息 
; extern uchar guzhang[8];            //存放外部E2中的故障记录信息        
; extern uint  chroma[16]   ;         //显示的浓度
; extern uchar c[3];                  //通道关联探测器编号及高低报情况
; 
; extern uint ccc;                  //等待CAN返回计数延时用
; //uchar use_instance;         //使用情况;
; 
; /********************************************************************/
; 
; 
; extern uchar pass1[6];     //更改密码所存数组
; extern uchar pass2[6];     //确认密码所存数组
; extern uchar pass3[6];     //输入密码所存数组
; extern uchar pass[6];      //存放E2中读出的密码
; extern uchar time[22];     //存放时间设定后的值
; extern uchar high[4];      //高报浓度
; extern uchar low[4];       //低报浓度
; extern uchar passage1[4];  //通道1
; extern uchar passage2[4];  //通道2
; //extern uchar passage3[4];  //通道3
; //extern uchar passage4[4];  //通道4
; extern uchar linkage1[2];  //存放控制外设界面中输入的转换器编号
; extern uchar linkage2[2];  //存放控制外设界面中输入的探测器编号
; extern uchar linkage[4];   //存放系统设置界面中输入的调零地址号
; extern uchar old_can[2];   //原来转换器地址
; extern uchar new_can[2];   //修改后转换器地址
; extern uchar can[2];       //修改探测器界面中can的地址
; extern uchar old_det[2];   //原来探测器地址
; extern uchar new_det[2];   //修改后探测器地址
; extern uchar index_link1;  //指向linkage1数组中的数
; extern uchar index_link2;  //指向linkage2数组中的数
; extern uchar index_link;   //指向linkage数组中的数
; extern uchar bd;           //指向biaoding数组中的数
; //uchar send_buff[8];
; //uchar recv_buff[8];
; extern uchar p1;           //对应old_can数组
; extern uchar p2;           //对应new_can数组
; extern uchar p3;           //对应can数组
; extern uchar p4;           //对应old_det数组
; extern uchar p5;           //对应new_det数组
; extern uchar m1;           //对应pass1数组
; extern uchar m2;           //对应pass2数组
; extern uchar m3;           //对应pass3数组
; extern uchar m;            //对应pass数组
; extern uchar n;            //对应time数组
; extern uchar n1;           //对应high数组
; extern uchar n2;           //对应low数组
; extern uchar way1;         //通道1标志
; extern uchar way2;         //通道2标志
; //extern uchar way3;         //通道3标志
; //extern uchar way4;         //通道4标志
; extern uchar page;         //翻页标志
; extern uchar flag_can;     //can标志
; //extern uchar flag_sound;   //按键音
; extern uchar flag_print;   //打印标志
; extern uchar gas_type;     //气体类型
; extern uchar unit_chroma;  //浓度单位
; extern uchar info_det[4];  //存放高低报浓度转换后的值
; extern uchar choice;       //选择
; extern uchar regist;       //注册
; extern uchar denglu;       //登录
; extern uchar num_can;      //can编号
; extern uchar num_det;      //节点编号
; extern uchar num_det2;     //已选择的节点的编号
; extern uchar addr_can;     //控制外设界面中转换器编号
; extern uchar addr_can1;    //联动界面中通道1关联的转换器编号
; extern uchar addr_can2;    //联动界面中通道2关联的转换器编号
; //extern uchar addr_can3;    //联动界面中通道3关联的转换器编号
; //extern uchar addr_can4;    //联动界面中通道4关联的转换器编号
; extern uchar addr_det;     //控制外设界面中探测器编号
; extern uchar addr_det1;    //联动界面中通道1关联的探测器编号
; extern uchar addr_det2;    //联动界面中通道2关联的探测器编号
; //extern uchar addr_det3;    //联动界面中通道3关联的探测器编号
; //extern uchar addr_det4;    //联动界面中通道4关联的探测器编号
; //extern uchar high_low1;    //联动界面中通道1关联的高低报情况
; //extern uchar high_low2;    //联动界面中通道2关联的高低报情况
; //extern uchar high_low3;    //联动界面中通道3关联的高低报情况
; //extern uchar high_low4;    //联动界面中通道4关联的高低报情况
; extern uchar channel;      //存放通道的吸合断开情况
; extern uchar cha_local;    //存放本地通道的吸合断开情况
; extern uchar state_cha;    
; 
; //光标坐标
; extern uchar X1H;                  
; extern uchar X1L;              
; extern uchar Y1H;
; extern uchar Y1L; 
; extern uchar X2H;          
; extern uchar X2L;
; extern uchar Y2H;
; extern uchar Y2L;
; extern uint X1;                    //光标左上角横坐标
; extern uint Y1;                    //光标左上角纵坐标
; extern uint X2;                    //光标右下角横坐标
; extern uint Y2;                    //光标右下角纵坐标
; 
; //uchar first_clarm[11];            //存放首次报警信息
; uint  realaddr=0x3000;            //实时地址
; 
; 
; /******************************************************************
; ***********************打印*************************
; **********************************************************/
; 
; //写打印函数
; void write_print(uchar cmd)
; {
L2:
	.dbline 182
L3:
	.dbline 181
;     while((PIND&0x80)==0x80)
	in R2,0x10
	clr R3
	sbrc R2,7
	rjmp L2
	.dbline 183
;    	;                       //如果忙,等待      
;    	GAL5ADDR=cmd;    //输入命令
	sts 20480,R16
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r cmd 16 c
	.dbend
	.dbfunc e cha_print _cha_print fV
;          temp2 -> R20
;          temp1 -> R22
	.even
_cha_print::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 188
; }
; 
; //命令打印函数
; void cha_print(uchar temp1,uchar temp2)
; {
	.dbline 189
;     write_print(temp1);
	mov R16,R22
	xcall _write_print
	.dbline 190
;    	write_print(temp2);
	mov R16,R20
	xcall _write_print
	.dbline -2
L5:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r temp2 20 c
	.dbsym r temp1 22 c
	.dbend
	.dbfunc e int_prt _int_prt fV
	.even
_int_prt::
	.dbline -1
	.dbline 195
; }
; 
; //初始化打印机
; void int_prt(void)
; {
	.dbline 196
;     cha_print(0x1b,0x40);    //初始化
	ldi R18,64
	ldi R16,27
	xcall _cha_print
	.dbline 197
;    	cha_print(0x1b,0x31);    //行间距6
	ldi R18,49
	ldi R16,27
	xcall _cha_print
	.dbline 198
;    	write_print(0x06);
	ldi R16,6
	xcall _write_print
	.dbline 199
;    	cha_print(0x1c,0x26);      //设置汉字打印方式
	ldi R18,38
	ldi R16,28
	xcall _cha_print
	.dbline -2
L6:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e kong_print _kong_print fV
;            kkk -> R20
;           temp -> R22
	.even
_kong_print::
	xcall push_gset2
	mov R22,R16
	.dbline -1
	.dbline 203
; }
; //空格打印函数
; void kong_print(uchar temp)
; {
	.dbline 204
;     uchar kkk=0;
	clr R20
	.dbline 205
;    	for(kkk=0;kkk<temp;kkk++)
	xjmp L11
L8:
	.dbline 206
	ldi R16,32
	xcall _write_print
L9:
	.dbline 205
	inc R20
L11:
	.dbline 205
	cp R20,R22
	brlo L8
	.dbline -2
L7:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r kkk 20 c
	.dbsym r temp 22 c
	.dbend
	.dbfunc e gas_choice _gas_choice fV
	.even
_gas_choice::
	xcall push_gset1
	.dbline -1
	.dbline 212
;         write_print(0x20);
; }
; 
; /*********************气体类型选择**********************/
; 
; void gas_choice(void)
; {
	.dbline 214
;   // cha_print(0x1c,0x26);      //设置汉字打印方式
;     switch(gas_type)
	lds R20,_gas_type
	clr R21
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L17
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L18
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	brne X1
	xjmp L19
X1:
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	brne X2
	xjmp L20
X2:
	cpi R20,6
	ldi R30,0
	cpc R21,R30
	brne X3
	xjmp L21
X3:
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	brge X4
	xjmp L14
X4:
L22:
	cpi R20,255
	ldi R30,0
	cpc R21,R30
	breq L16
	xjmp L14
X0:
	.dbline 215
;    	{
L16:
	.dbline 217
;         case 0xff:
; 	  	{
	.dbline 218
; 		    cha_print(0xcc,0xec);  //天     
	ldi R18,236
	ldi R16,204
	xcall _cha_print
	.dbline 219
; 		  	cha_print(0xc8,0xbb);  //然
	ldi R18,187
	ldi R16,200
	xcall _cha_print
	.dbline 220
; 		  	cha_print(0xc6,0xf8);  //气
	ldi R18,248
	ldi R16,198
	xcall _cha_print
	.dbline 221
; 	  	}
	.dbline 222
; 	  	break;
	xjmp L14
L17:
	.dbline 224
; 	  	case 0x02:
; 	  	{
	.dbline 225
; 		    cha_print(0xd2,0xba);  //液
	ldi R18,186
	ldi R16,210
	xcall _cha_print
	.dbline 226
; 			cha_print(0xbb,0xaf);  //化
	ldi R18,175
	ldi R16,187
	xcall _cha_print
	.dbline 227
; 		  	cha_print(0xc6,0xf8);  //气
	ldi R18,248
	ldi R16,198
	xcall _cha_print
	.dbline 228
; 	  	}
	.dbline 229
; 	  	break;
	xjmp L14
L18:
	.dbline 231
; 	  	case 0x03:
; 	  	{
	.dbline 232
; 		    cha_print(0xc3,0xba);  //煤
	ldi R18,186
	ldi R16,195
	xcall _cha_print
	.dbline 233
; 			cha_print(0xd6,0xc6);  //制
	ldi R18,198
	ldi R16,214
	xcall _cha_print
	.dbline 234
; 		  	cha_print(0xc6,0xf8);  //气
	ldi R18,248
	ldi R16,198
	xcall _cha_print
	.dbline 235
; 	  	}
	.dbline 236
; 	  	break;
	xjmp L14
L19:
	.dbline 238
; 	  	case 0x04:
; 	  	{
	.dbline 239
; 		    cha_print(0xb6,0xbe);  //毒
	ldi R18,190
	ldi R16,182
	xcall _cha_print
	.dbline 240
; 			cha_print(0xd0,0xd4);  //性
	ldi R18,212
	ldi R16,208
	xcall _cha_print
	.dbline 241
; 		  	cha_print(0xc6,0xf8);  //气
	ldi R18,248
	ldi R16,198
	xcall _cha_print
	.dbline 242
; 			cha_print(0xcc,0xe5);  //体
	ldi R18,229
	ldi R16,204
	xcall _cha_print
	.dbline 243
; 	  	} 
	.dbline 244
; 	  	break;
	xjmp L14
L20:
	.dbline 246
; 	  	case 0x05:
; 	  	{
	.dbline 247
; 		    cha_print(0xbf,0xc9);  //可
	ldi R18,201
	ldi R16,191
	xcall _cha_print
	.dbline 248
; 			cha_print(0xc8,0xbc);  //燃
	ldi R18,188
	ldi R16,200
	xcall _cha_print
	.dbline 249
; 		  	cha_print(0xc6,0xf8);  //气
	ldi R18,248
	ldi R16,198
	xcall _cha_print
	.dbline 250
; 			cha_print(0xcc,0xe5);  //体
	ldi R18,229
	ldi R16,204
	xcall _cha_print
	.dbline 251
; 	  	}
	.dbline 252
; 	  	break;
	xjmp L14
L21:
	.dbline 254
	.dbline 255
	ldi R18,208
	ldi R16,211
	xcall _cha_print
	.dbline 256
	ldi R18,250
	ldi R16,187
	xcall _cha_print
	.dbline 257
	ldi R18,220
	ldi R16,200
	xcall _cha_print
	.dbline 258
	ldi R18,193
	ldi R16,188
	xcall _cha_print
	.dbline 259
	.dbline 260
	.dbline 262
L14:
	.dbline -2
L12:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e unit_judge _unit_judge fV
	.even
_unit_judge::
	xcall push_gset1
	.dbline -1
	.dbline 269
; 	  	case 0x06:
; 	  	{
; 		    cha_print(0xd3,0xd0);  //有
; 			cha_print(0xbb,0xfa);  //机
; 		  	cha_print(0xc8,0xdc);  //溶
; 			cha_print(0xbc,0xc1);  //剂
; 	  	}
; 	  	break;
; 	  	default :
; 	  	break;
;    	}
; }
; 
; /***********************浓度单位选择**************************/
; 
; void unit_judge(void)           
; {
	.dbline 270
;     switch(unit_chroma)         //浓度单位
	lds R20,_unit_chroma
	clr R21
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L28
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L29
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	brlt L25
L30:
	cpi R20,255
	ldi R30,0
	cpc R21,R30
	breq L27
	xjmp L25
X5:
	.dbline 271
;    	{
L27:
	.dbline 273
; 	    case 0xff:                  
; 	  	{
	.dbline 274
; 		    write_print(0x25); //%
	ldi R16,37
	xcall _write_print
	.dbline 275
;          	write_print(0x4c); //L                  
	ldi R16,76
	xcall _write_print
	.dbline 276
;          	write_print(0x45); //E
	ldi R16,69
	xcall _write_print
	.dbline 277
; 		 	write_print(0x4c); //L
	ldi R16,76
	xcall _write_print
	.dbline 278
; 	  	}
	.dbline 279
; 	  	break;
	xjmp L25
L28:
	.dbline 281
; 	  	case 0x02:
; 	  	{
	.dbline 282
; 		    write_print(0x50); //P
	ldi R16,80
	xcall _write_print
	.dbline 283
;          	write_print(0x50); //P                 
	ldi R16,80
	xcall _write_print
	.dbline 284
;          	write_print(0x4d); //M
	ldi R16,77
	xcall _write_print
	.dbline 285
; 	  	}
	.dbline 286
; 	  	break;
	xjmp L25
L29:
	.dbline 288
	.dbline 289
	ldi R16,86
	xcall _write_print
	.dbline 290
	ldi R16,79
	xcall _write_print
	.dbline 291
	ldi R16,76
	xcall _write_print
	.dbline 292
	.dbline 293
	.dbline 295
L25:
	.dbline -2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -