|
程序在执行扫描时老是在一个地方进行判断该怎么办
[复制链接]
大家好,我的程序(不是自己写的)在执行判断扫描时老是停留在一个地方,怎么办?
程序段如下:
main:
nop
nop
nop
mov wdt_contr,#00111110B ;喂狗
nop
nop
nop
jnb 20h.4,main_pdqdfkh;=0没有警音发出请求 跳到 判断 汽笛放开后的警音发出请求处 检查 (恢复原来的警报)?
mov a,dqjbylx;查看当前报警音类型寄存器
cjne a,temp1,czcl_xycz;跳到 关闭所有警报 和 当前警报音类型寄存器 清零
clr 20h.4;清除
lcall qx628all;取消所有警报音
lcall fw628;628复位
mov dqjbylx,#0;当前报警音类型寄存器 清零
ljmp main
;---------------------------------------------- 判断 汽笛放开后的 警音发出请求
main_pdqdfkh:
jnb bzw.0,main;没有请求 跳 ?
clr bzw.0;清除请求
mov a,dqjbylx;读入 当前报警音类型寄存器
mov wdt_contr,#00111110B ;喂狗
ljmp czcl_xycz_lloop01;跳到总判断 下
;------------------------------------------总判断
czcl_xycz:
mov a,temp1;读入数据代码
czcl_xycz_lloop01:
setb p0.4;=0 接通 mic =1接pic628警报音
clr p0.5;2003电源 0=开 ?
clr p3.6;绿 指示灯 0=亮 ?
cjne a,#001001b,czcl_xycz_lloop02;是工程吗?
mov dqjbylx,#001001b;本警音代码 另存为 当前警报类型
lcall jb_sy_03;调用 发生工程音
;setb p3.6 ;将绿灯关掉 ?
ljmp czcl_xycz_exit;退出
;------------------------------------------
czcl_xycz_lloop02:cjne a,#001010b,czcl_xycz_lloop03;是开道吗?
mov dqjbylx,#001010b;本警音代码 另存为 当前警报类型
lcall jb_sy_05;调用 发生开道
setb p3.6 ;将绿灯关掉 ?
ljmp czcl_xycz_exit;退出
;-----------------------------------------
czcl_xycz_lloop03:cjne a,#001011b,czcl_xycz_lloop04;是公安吗
mov dqjbylx,#001011b;本警音代码 另存为 当前警报类型
lcall jb_sy_07;调用 发生公安
setb p3.6 ;将绿灯关掉 ?
ljmp czcl_xycz_exit;退出
;------------------------------------------
czcl_xycz_lloop04:cjne a,#001100b,czcl_xycz_lloop05;是救护吗
mov dqjbylx,#001100b;本警音代码 另存为 当前警报类型
lcall jb_sy_09;调用 发生救护
setb p3.6 ;将绿灯关掉 ?
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop05:cjne a,#001101b,czcl_xycz_lloop06;是消防吗
mov dqjbylx,#001101b;本警音代码 另存为 当前警报类型
lcall jb_sy_11;调用 发生消防
setb p3.6 ;将绿灯关掉 ?
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop06:cjne a,#001110b,czcl_xycz_lloop07;是治安吗
mov dqjbylx,#001110b;本警音代码 另存为 当前警报类型
lcall jb_sy_13;调用 发生治安
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop07:cjne a,#001111b,czcl_xycz_lloop08;是特殊警报吗
mov dqjbylx,#001111b;本警音代码 另存为 当前警报类型
lcall jb_sy_15;调用 发生特殊警报
setb p3.6 ;将绿灯关掉 ?
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop08:cjne a,#010001b,czcl_xycz_lloop09;是警报音 切换吗
cpl bz_jbyqh;切换警报音 新旧 ?
push psw
mov c,bz_jbyqh
mov p2.1,c
pop psw
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop09:cjne a,#010010b,czcl_xycz_lloop10;是灯控1 开吗
clr p0.6
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop10:cjne a,#010011b,czcl_xycz_lloop11;是灯控1 关吗
setb p0.6
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop11:cjne a,#010100b,czcl_xycz_lloop12;是灯控2 开吗
clr p0.7
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop12:cjne a,#010101b,czcl_xycz_lloop13;是灯控2 关吗
setb p0.7
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop13:cjne a,#010110b,czcl_xycz_lloop14;是收音吗(现用于警报音量的调节)
lcall jbylkzzcx;调用警报音量控制子程序
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop14:cjne a,#010111b,czcl_xycz_lloop15;音量+?
lcall x9511w10k
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop15:cjne a,#011001b,czcl_xycz_lloop16;音量-
lcall x9511w10kd
ljmp czcl_xycz_exit;退出
;------------------------------------------
czcl_xycz_lloop16:cjne a,#011010b,czcl_xycz_lloop17;是机枪吗?
mov dqjbylx,#011010b;本警音代码 另存为 当前警报类型
lcall jb_sy_04;调用 发生机枪
setb p3.6 ;将绿灯关掉 ?
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop17:cjne a,#011011b,czcl_xycz_lloop18;是呜幽吗?
mov dqjbylx,#011011b;本警音代码 另存为 当前警报类型
lcall jb_sy_06;调用 发生呜幽
setb p3.6 ;将绿灯关掉 ?
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop18:cjne a,#011100b,czcl_xycz_lloop19;是防3()吗?
mov dqjbylx,#011100b;本警音代码 另存为 当前警报类型
lcall jb_sy_08;调用 发生防3
setb p3.6 ;将绿灯关掉 ?
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop19:cjne a,#011101b,czcl_xycz_lloop20;是3分钟灾难吗?
mov dqjbylx,#011101b;本警音代码 另存为 当前警报类型
lcall jb_sy_10;调用 发生
setb p3.6 ;将绿灯关掉 ?
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop20:cjne a,#011110b,czcl_xycz_lloop21;是循环 1分钟防空音吗?
mov dqjbylx,#011110b;本警音代码 另存为 当前警报类型
lcall jb_sy_12;调用 发生
setb p3.6 ;将绿灯关掉 ?
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop21:cjne a,#011111b,czcl_xycz_lloop22;是防空 连续的 吗?
mov dqjbylx,#011111b;本警音代码 另存为 当前警报类型
lcall jb_sy_14;调用 发生
setb p3.6 ;将绿灯关掉 ?
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop22:cjne a,#100001b,czcl_xycz_lloop23;是叭嘀叭嘀叭 吗?
mov dqjbylx,#100001b;本警音代码 另存为 当前警报类型
lcall jb_sy_16;调用 发生
setb p3.6 ;将绿灯关掉 ?
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop23:cjne a,#100010b,czcl_xycz_lloop24;是开机 吗?
clr p0.5;2003电源 0=开
clr p3.6;绿 指示灯 0=亮
lcall qx628all;取消所有警报音
lcall fw628;628复位
mov dqjbylx,#0;当前报警音类型寄存器 清零
lcall qchcqhzx;清除缓存区和指向
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop24:cjne a,#100011b,czcl_xycz_lloop25;是关机 吗?
setb p0.5;2003电源 0=开
setb p3.6;绿 指示灯 0=亮
lcall qx628all;取消所有警报音
lcall fw628;628复位
mov dqjbylx,#0;当前报警音类型寄存器 清零
lcall qchcqhzx;清除缓存区和指向
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop25:nop
czcl_xycz_exit:
clr 20h.4;取消警音发出 请求
;;;;;
mov a,#0
mov temp1,a
mov wdt_contr,#00111110B ;喂狗
;mov dqjbylx,#0;当前报警音类型寄存器 清零
clr 20h.4;取消警音发出请求
clr bzw.0;清除请求
ljmp main
是怎么回事,大家帮我看看,谢谢!
|
|