|
大家好:
我的一个程序主程序是死循环(程序不是我写的),我老是觉得不大对,但是写程序的人告诉我这个没问题,是让主机在一直执行这个程序,大家帮我看下,主程序如下:
main:
nop
nop
nop
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
;ljmp czcl_xycz;跳到总判断
;---------------------------------------------- 关闭所有警报 和 当前警报音类型寄存器 清零
;mail_qling:;
;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;读入 当前报警音类型寄存器
;lcall delayss
;lcall delayss
ljmp czcl_xycz_lloop01;跳到总判断 下
;------------------------------------------总判断
czcl_xycz:mov a,temp1;读入数据代码
czcl_xycz_lloop01:cjne a,#001001b,czcl_xycz_lloop02;是工程吗?
mov dqjbylx,#001001b;本警音代码 另存为 当前警报类型
lcall jb_sy_03;调用 发生工程音
ljmp czcl_xycz_exit;退出
;------------------------------------------
czcl_xycz_lloop02:cjne a,#001010b,czcl_xycz_lloop03;是开道吗?
mov dqjbylx,#001010b;本警音代码 另存为 当前警报类型
lcall jb_sy_05;调用 发生开道
ljmp czcl_xycz_exit;退出
;------------------------------------------
czcl_xycz_lloop03:cjne a,#001011b,czcl_xycz_lloop04;是公安吗
mov dqjbylx,#001011b;本警音代码 另存为 当前警报类型
lcall jb_sy_07;调用 发生公安
ljmp czcl_xycz_exit;退出
;------------------------------------------
czcl_xycz_lloop04:cjne a,#001100b,czcl_xycz_lloop05;是救护吗
mov dqjbylx,#001100b;本警音代码 另存为 当前警报类型
lcall jb_sy_09;调用 发生救护
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop05:cjne a,#001101b,czcl_xycz_lloop06;是消防吗
mov dqjbylx,#001101b;本警音代码 另存为 当前警报类型
lcall jb_sy_11;调用 发生消防
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;调用 发生特殊警报
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop08:cjne a,#010001b,czcl_xycz_lloop09;是警报音 切换吗
;lcall qchcqhzx;清除缓存区和指向
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;调用 发生机枪
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop17:cjne a,#011011b,czcl_xycz_lloop18;是呜幽吗?
mov dqjbylx,#011011b;本警音代码 另存为 当前警报类型
lcall jb_sy_06;调用 发生呜幽
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop18:cjne a,#011100b,czcl_xycz_lloop19;是防3()吗?
mov dqjbylx,#011100b;本警音代码 另存为 当前警报类型
lcall jb_sy_08;调用 发生防3
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop19:cjne a,#011101b,czcl_xycz_lloop20;是3分钟灾难吗?
mov dqjbylx,#011101b;本警音代码 另存为 当前警报类型
lcall jb_sy_10;调用 发生
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop20:cjne a,#011110b,czcl_xycz_lloop21;是循环 1分钟防空音吗?
mov dqjbylx,#011110b;本警音代码 另存为 当前警报类型
lcall jb_sy_12;调用 发生
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop21:cjne a,#011111b,czcl_xycz_lloop22;是防空 连续的 吗?
mov dqjbylx,#011111b;本警音代码 另存为 当前警报类型
lcall jb_sy_14;调用 发生
ljmp czcl_xycz_exit;退出
czcl_xycz_lloop22:cjne a,#100001b,czcl_xycz_lloop23;是叭嘀叭嘀叭 吗?
mov dqjbylx,#100001b;本警音代码 另存为 当前警报类型
lcall jb_sy_16;调用 发生
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 dqjbylx,#0;当前报警音类型寄存器 清零
clr 20h.4;取消警音发出请求
clr bzw.0;清除请求
ljmp main
谢谢!到底是不是死循环?是死循环的话主程序可不可以这样使用?
|
|