EF0 DATA 19H
EF1 DATA 20H
EF2 DATA 21H
EF3 DATA 22H
EF4 DATA 23H
EF5 DATA 24H
EF6 DATA 25H
EF7 DATA 26H
EF8 DATA 27H
EF9 DATA 28H
EF10 DATA 29H
EF11 DATA 30H
EF12 DATA 31H
ORG 0000H
LJMP MAIN
ORG 0003H
AJMP SS
ORG 0013H
AJMP SSS
ORG 0032H
MAIN: MOV DPTR,#TAB
MOV IE,#85H
SETB PX1
MOV R6,#24
MOV SP,#50H
MOV EF12,#01H
LOOP: MOV R5,#03FH
MOV R4,#03FH
MOV R3,#03FH
MOV R2,#03FH
MOV R1,#03FH
MOV R0,#03FH
ACALL D
LOOP6: MOV EF5,#00H
LOOP5: MOV EF4,#00H
LOOP4: MOV EF3,#00H
LOOP3: MOV EF2,#00H
LOOP2: MOV EF1,#00H
LOOP1: MOV EF0,#00H
DJNZ EF12,D0
ZO: MOV EF5,#01H
MOV EF4,#01H
MOV EF3,#01H
MOV EF2,#01H
MOV EF1,#01H
MOV EF0,#01H
D0: MOV EF12,#02H
MOV A,EF0
MOVC A,@A+DPTR
MOV R0,A
ACALL D
INC EF0
ACALL DEL
CJNE R0,#067H,D0
AJMP D1
D1: MOV A,EF1
CJNE R1,#06DH,D10
MOV R1,#3FH
AJMP D2
D10: MOVC A,@A+DPTR
MOV R1,A
ACALL D
INC EF1
AJMP LOOP1
D2: MOV A,EF2
CJNE R2,#07FH,D20
MOV R2,#3FH
AJMP D3
D20: MOVC A,@A+DPTR
MOV R2,A
ACALL D
INC EF2
CJNE R2,#067H,LOOP2
D3: MOV A,EF3
CJNE R3,#06DH,D30
MOV R3,#03FH
AJMP D4
D30: MOVC A,@A+DPTR
MOV R3,A
ACALL D
INC EF3
CJNE R3,#07DH,LOOP3
D4: MOV A,EF4
MOVC A,@A+DPTR
MOV R4,A
ACALL D
INC EF4
DJNZ R6,LOOP6
CJNE R4,#067H,LOOP4
D5: MOV A,EF5
MOVC A,@A+DPTR
MOV EF7,A
ACALL D
INC EF5
AJMP LOOP5
;
D: PUSH ACC ;显示子程序
MOV A,#0FEH
MOV P0,R0
MOV P2,A
RL A
ACALL DE
MOV P0,R1
MOV P2,A
RL A
ACALL DE
MOV P0,R2
SETB P07
MOV P2,A
RL A
ACALL DE
MOV P0,R3
MOV P2,A
RL A
ACALL DE
MOV P0,R4
SETB P07
MOV P2,A
RL A
ACALL DE
MOV P0,EF7
MOV P2,A
ACALL DE
POP ACC
RET
DEL: MOV EF8,#5BH
DEL2: ACALL D
DJNZ EF8,DEL2
RET
DE: PUSH PSW
MOV EF9,#01H
DL2: MOV EF10,#8EH
DL: MOV EF11,#02H
DJNZ EF11,$
DJNZ EF10,DL
DJNZ EF9,DL2
POP PSW
RET
DELOO: ;误差 0us
MOV EF9,#0C7H
DL1:
MOV EF10,#78H
DL0:
MOV EF11,#01H
DJNZ EF11,$
DJNZ EF10,DL0
DJNZ EF9,DL1
RET
TAB: DB 03FH,006H,05BH,04FH,066H
DB 06DH,07DH,007H,07FH,067H
RET
;
SS: ACALL DELOO ;中断
MAI: MOV R7,#00H
LOOP01: MOV P1,#0FH
MOV A,P1
CJNE A,#0FH,F
ACALL D
AJMP LOOP01
F: ACALL DELOO ;按键
CJNE A,#0FH,FO
AJMP LOOP01
FO: MOV P1,#0BFH
JNB P10,L0
JNB P11,L1
JNB P12,L2
JNB P13,L3
F1: MOV P1,#0DFH
JNB P10,L4
JNB P11,L5
JNB P12,L6
JNB P13,L7
F2: MOV P1,#0EFH
JNB P10,L8
JNB P11,L9
JNB P12,O0
JNB P13,MAI
W6: AJMP LOOP01
L0: MOV A,#00H
MOV R6,A
AJMP LOOP9
L1: MOV A,#01H
MOV R6,A
AJMP LOOP9
L2: MOV A,#02H
MOV R6,A
AJMP LOOP9
L3: MOV A,#03H
MOV R6,A
AJMP LOOP9
L4: MOV A,#04H
MOV R6,A
AJMP LOOP9
L5: MOV A,#05H
MOV R6,A
AJMP LOOP9
L6: MOV A,#06H
MOV R6,A
AJMP LOOP9
L7: MOV A,#07H
MOV R6,A
AJMP LOOP9
L8: MOV A,#08H
MOV R6,A
AJMP LOOP9
L9: MOV A,#09H
MOV R6,A
LOOP9: INC R7
MOVC A,@A+DPTR
CJNE R7,#01,W1
MOV EF5,R6
MOV EF7,A
W1: CJNE R7,#02,W2
MOV EF4,R6
MOV R4,A
W2: CJNE R7,#03,W3
MOV EF3,R6
MOV R3,A
W3: CJNE R7,#04,W4
MOV EF2,R6
MOV R2,A
W4: CJNE R7,#05,W5
MOV EF1,R6
MOV R1,A
W5: CJNE R7,#06,W6
MOV EF0,R6
MOV R0,A
O0: RETI
;
SSS: ACALL DELOO
MOV R5,#03FH
MOV R4,#03FH
MOV R3,#03FH
MOV R2,#03FH
MOV R1,#03FH
MOV R0,#03FH
ACALL D
MOV EF5,#00H
MOV EF4,#00H
MOV EF3,#00H
MOV EF2,#00H
MOV EF1,#00H
MOV EF0,#00H
RETI
END
条件与是两个&&字符,应该写成if(miao==0&&fen==0)
响十下最简单的就是用for或者while循环,如下,但这样会有其它问题,你可以实际测下,到时再追问。
unsigned char i=10;
do {
beep=1;
delay1(10);
beep=0;
}
while(--i > 0);
时间运行到整点时间时,闹钟响,几点钟就响几声(每声 持续响 2 秒,每两声之间时间间隔 2 秒)
利用单片机定时器计时,液晶1602显示时分秒。
独立按键设置时间。
整点报时,1点蜂鸣器响1下,2点蜂鸣器响2下,同理其他点。
#include<reg51h>
#include<intrinsh>
#define uchar unsigned char
uchar pwm,ctl=5;
sbit fmq=P1^0;
bit flag;
void delay(uchar a)
{
uchar i;
while(a--)for(i=0;i<120;i++);
}
void t0isr() interrupt 1
{
pwm++;
if(pwm<=ctl)P0=0xff;
else P0=0x00;
if(pwm==100)
{
pwm=0;
ctl++;
}
if(ctl==100)flag=1;
}
main()
{
uchar i,led;
TMOD=0x02;
TH0=236;
TL0=236;
ET0=1;
EA=1;
while(1)
{
led=0xfe;
for(i=0;i<8;i++)
{
P0=led;
led=led<<1;
delay(200);
}
led=0xff;
delay(200);
led=0x7f;
for(i=0;i<8;i++)
{
P0=led;
led=led>>1;
delay(200);
}
TR0=1;
flag=1;
while(flag);
TR0=0;
}
}
plc中蜂鸣器长鸣一次程序,首先要确定蜂鸣器是否已经连接到PLC控制器上,并且检查电源是否正常。
如果电源正常,可以尝试检查PLC程序,看看是否有蜂鸣器的控制程序。
如果没有,可以尝试添加蜂鸣器的控制程序,并确保蜂鸣器的输出信号正确连接到PLC控制器上。
最后,可以尝试运行PLC程序,看看蜂鸣器是否能够正常工作。
设按键为k1,k2,k3
void main()
{
char beepflag=0;
while(1)
{
if((k1==0)
beepflag|=0x01;
else
beepflag&=0xFE;
if(k2==0) //按键按下
beepflag|=0x02;
else
beepflag&=0xFD;
if(k3==0) //按键按下
beepflag|=0x04;
else
beepflag&=0xFB;
//------------这里判断字符低三位,如果有其中两位置一,则开启蜂鸣器
}
}
思路大概就是这样,如对您有帮助,请采纳,谢谢!
以上就是关于求程序数字钟。要求1显示小时和分钟2整点报时3四按键 选择 加1 减1 确认4秒由一个LED闪烁表示使用52单片机全部的内容,包括:求程序数字钟。要求1显示小时和分钟2整点报时3四按键 选择 加1 减1 确认4秒由一个LED闪烁表示使用52单片机、单片机时钟整点蜂鸣器响十下、单片机整点报时几点响几下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)