
NND,为什么我不能发送图片?
首先进入程序:
; ****************************************************** *********
;排风扇自动控制器程序
; ---------------------------------------------- ---- ------
;郑怡2011.03.16
; ---------------------------------------------- ---- ----
;排气扇每10、20、30分钟打开一次,每个工作时间为15分钟;
; Led1,Led2,Led3分别表示工作间隔时间10、20、30. 开机默认值为
;每隔20分钟,按一次按钮K1,K2,K3进行设置.
; ---------------------------------------------- ---- --------
;端口分配: P3.5-秒闪烁,表明运行正常;
; P3.3--控制输出端口,同时连接LED,作为连接说明
; P1.5--LED1,表示在模式1下工作: 停止10分钟
; P1.6--LED2,表示在模式2下工作: 停止15分钟
; P1.7--LED3,表示在模式3下工作: 停止20分钟
; P3.7--S1按钮,按此按钮可在模式1下工作,LED1亮起
; P1.1--S2按钮,按下该按钮可在模式2下工作,LED2点亮
; P1.3--S3按钮,按下该按钮可在模式3下工作,LED3点亮
; ---------------------------------------------- ---- ----------
;使用内部晶体(约5.8M),定时器TH的初始值= EDH,TL = 2FH
; ****************************************************** *********
;
TSBIN EQU 21H;第二柜台
TMBIN EQU 22H;分钟计数器
TT0均衡器25H
KEY EQU 24H;关键值
MDEQU 27H; ֵ
KKBIT00H;排风扇开关标志,主程序根据该标志控制排风扇
; KK = 1表示排气扇已打开
LED1 BIT P1.5
LED2 BIT P1.6
LED3 BIT P1.7
S1 BIT P3.7
S2 BIT P1.1
S3 BIT P1.3
DD1 EQU 0AH;模式1的总时间
DD2 EQU 14H;模式2的总时间
DD3 EQU 1EH;模式3总时间
MMD EQU 14H;排风扇运行时间,此处设置为20分钟
ORG 0000H
AJMP主要内容
ORG 000BH
SJMP I_T0
ORG 001BH
I_T1: AJMP MAIN1
RETI
; *********** T0中断服务***********
ORG 0030H
I_T0: 按ACC
PUSH PSW
MOV TH0,#0EDH; 0.01s时间,恒定因子为0ED2FH
MOV TL0,#2FH
; AJMP MM4
MM: MOV A排风扇动图,TT0
CJNE A,#50,MM1
CPL P3.5;第二次闪光输出
MM1: MOV R3,TT0;计算100次,每次为10mS,共1S
DJNZ R3,I_T01;中断数<100(每个中断0.01S),传出
MOV R3,#100;中断次数= 100次,重新开始下一个计数
CPL P3.5;第二次闪光输出
INC TSBIN;将秒计数器增加1

MOV A,TSBIN
CJNE A,#60,I_T01;第二个计数器= 60?是的,清除第二个计数器
MOV TSBIN,#00H;清除第二个计数器
INC TMBIN;将子计数器增加1
MM4: MOV A,R2;将排气扇的剩余时间分配给蓄能器
JZ MM3
DJNZ R2,MM3
CLR KK
MM3:
MOV A,TMBIN
MM2: CJNE A,MD,I_T01;子计数器等于设定值,已清除
MOV TMBIN,#0
SETB KK;计时周期结束后,再次设置开关标志
MOV R2,#MMD;重置排气扇运行时间
I_T01: MOV TT0,R3
POP PSW
POP ACC
RETI
ORG 00F0H
主要:
MOV SP,#50H;初始化堆栈指针
MOV TMOD,#01H; T0适用于16位计时器
MOV TT0,#100
MOV TH0,#0EDH; 0.01s时间,恒定因子为0ED2FH
MOV TL0,#2FH
MOV TSBIN,#0
MOV TMBIN,#0
SETB P3.5;设置第二个闪光灯输出(可选)
CLR EX0
CLR ES
SETB ET0;打开T0中断

SETB TR0;激活T0中断
SETB EA;打开总中断
CLR P3.3;打开排气扇
SETB KK;打开标志集KK = 1
MOV MD,#DD2 + MMD;将默认模式设置为2. (此处MD = 20 + 20 = 28H)
CLR LED2;开启模式2信标LED2
MOV R2,#MMD; R2存储排气扇开启的时间
MAIN1 : ;主要加工过程
;判断和设置排气扇的状态,
JNB KK,YY1;标志是1
CLR P3.3;打开排气扇
SJMP YY2
YY1: JB KK,YY2;标志为0
SETB P3.3;关掉排气扇
YY2:
ACALL安健;按钮扫描和设置
SSS: SJMP MAIN1
; -----------按键扫描和设置------------------
安建: SETB S1;按钮S1检测
JB S1,VV1
ACALL DSPDEL
; ACALL DSPDEL
SETB S1;检测两次,抗干扰
JB S1,VV1
SETB LED2;指示模式2和3的指令
SETB LED3;
CLR LED1;打开模式1的说明
MOV MD,#DD1 + MMD;设置模式1的计数值
AJMP VV3
VV1:
SETB S2;按钮S2检测

JB S2,VV2
ACALL DSPDEL
; ACALL DSPDEL
SETB S2;检测两次,抗干扰
JB S2,VV2
SETB LED1;指示模式1和3的指令
SETB LED3;
CLR LED2;打开模式2的说明
MOV MD,#DD2 + MMD;设置模式2的计数值
AJMP VV3
VV2:
SETB S3;按钮S3检测
JB S3,输出
ACALL DSPDEL
; ACALL DSPDEL
SETB S3;检测两次,抗干扰
JB S3,输出
SETB LED1;指示关闭模式1和2
SETB LED2;
CLR LED3;打开模式3的说明
MOV MD排风扇动图,#DD3 + MMD;设置模式3的计数值
;跳出
VV3:
MOV TSBIN,#0;计时器全部清除并重新计数
MOV TMBIN,#0
MOV R2,#MMD;重置排气扇运行时间
SETB KK
OUT: RET
; **********延迟子程序**************
DSPDEL: MOV R5,#0FFH
DDS: MOV R7,#0FFH;延迟程序
DJNZ R7,$
DJNZ R5,DDS
RET
END
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/dianqi/article-222355-1.html
但可以肯定
但是起码还是遮遮掩掩的
天天骂