📄 toucher2.s
字号:
.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 + -