4071|2

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

主程序是死循环可以吗? [复制链接]

大家好:
    我的一个程序主程序是死循环(程序不是我写的),我老是觉得不大对,但是写程序的人告诉我这个没问题,是让主机在一直执行这个程序,大家帮我看下,主程序如下:
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


谢谢!到底是不是死循环?是死循环的话主程序可不可以这样使用?

最新回复

哦明白了,谢谢!  详情 回复 发表于 2009-8-7 09:13
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
单片机主程序就是个死循环,嘿嘿。
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
哦明白了,谢谢!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表