找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2431|回复: 5
打印 上一主题 下一主题
收起左侧

51单片机无法在倒计时归0时使蜂鸣器响起,求大神解答代码出了什么问题

[复制链接]
跳转到指定楼层
楼主
STRT EQU P2.6
STP EQU P2.7
CLRR EQU P3.0
SEC EQU P3.5
MIN EQU P3.6
HOUR EQU P3.7

ORG 0000H
AJMP MAIN
ORG 000BH
AJMP T0INT
ORG 001BH
AJMP T1INT
ORG 0030H

MAIN:
CPL P1.0
MOV  SP,#60H
MOV R4,#20
MOV TMOD,#11H
MOV TH0,#03CH  ;#9EH 12M晶振时定时初值取#3CB0H,还可细调,如 TL=#0B7H,可以更准  
MOV TL0,#0B0H   ;#58H
MOV TH1,#0FEH
MOV TL1,#0CH
SETB EA
SETB ET0
SETB ET1
;MOV 28H,#12   

kS: LCALL DISP ;秒调整按键
JB SEC,KM
LCALL DISP
JNB SEC,$-3
AJMP SINC

kM: JB MIN,KH ;分调整按键
LCALL DISP
JNB MIN,$-3
AJMP MINC

KH: JB HOUR,K1 ;时调整按键
LCALL DISP
JNB HOUR,$-3
AJMP HINC

SINC: INC 26H ;秒调整
MOV A,26H
CJNE A,#60,SINC0
MOV 26H,#0
SINC0: AJMP KS

MINC: INC 27H ;分调整
MOV A,27H
CJNE A,#60,MINC0
MOV 27H,#0
MINC0: AJMP KM

HINC: INC 28H ;时调整
MOV A,28H
CJNE A,#24,HINC0
MOV 28H,#0
HINC0: AJMP KH  


k1: LCALL DISP ;开始键
JB STRT,K2
LCALL DISP
JNB STRT,$-3
AJMP START

k2: JB STP,K3 ;暂停键
LCALL DISP
JNB STP,STOP
K3: JB CLRR,KS
LCALL DISP
JNB CLRR,CLEAR ;清零键
AJMP KS

START: SETB TR0     ;开始
SETB 7DH  ;7DH为开始键按下标志,此作为允许闹铃标志
AJMP K1

STOP: CLR TR0 ;暂停
CPL P1.0
AJMP K2

CLEAR: CLR     TR0 ;清零
MOV A,#0
MOV 26H,A
MOV 27H,A
MOV 28H,A
AJMP KS

DISP:
MOV A,26H
MOV B,#10
DIV AB
MOV 20H,B  ;余数(秒个位数)
MOV 21H,A  ;商(秒十位数)
MOV A,27H
MOV B,#10
DIV AB
MOV 22H,B  ;余数(分个位数)
MOV 23H,A  ;商(分十位数)
MOV A,28H
MOV B,#10
DIV AB
MOV 24H,B  ;余数(时个位数)
MOV 25H,A  ;商(时十位数)
MOV A,20H  ;秒个位
ACALL SEG7
MOV P0,A
CLR P2.0
ACALL DLY
SETB P2.0
MOV A,21H  ;秒十位
ACALL SEG7
MOV P0,A
CLR P2.1
ACALL DLY
SETB P2.1
MOV A,22H  ;分个位
ACALL SEG7
MOV P0,A
SETB P0.7
CLR P2.2
ACALL DLY
SETB P2.2
MOV A,23H  ;分十位
ACALL SEG7
MOV P0,A
CLR P2.3
ACALL DLY
SETB P2.3
MOV A,24H  ;时个位
ACALL SEG7
MOV P0,A
SETB P0.7
CLR P2.4
ACALL DLY
SETB P2.4
MOV A,25H  ;时十位
ACALL SEG7
MOV P0,A
CLR P2.5
ACALL DLY
SETB P2.5
RET
ALARM:
JNB 7DH,ALRT
MOV A,28H    ;比较小时
CJNE A,#0,RT   ;不等返回。 相等,转分钟比较
MOV A,27H    ;比较分钟
CJNE A,#0,RT
MOV A,26H    ;比较秒
CJNE A,#0,RT
SETB TR1
MOV R0,#0    ;闹铃时间到,闹铃计时清零
ALRT:
RET
RT:
RET
T0INT: MOV TH0,#03CH;#9EH ;定时中断子程序。重装定时常数
MOV TL0,#0B0H;#58H
DJNZ R4,T0INTR ;50msX20=1S,未满20次,跳出中断子程序
MOV R4,#20
CALL ALARM
DEC 26H  ;1S,秒存储单元内数-1
MOV A,26H
CJNE A,#-1,T0INTR    ;未满0S,跳转
MOV 26H,#59  ;到0S,秒单元回到60
DEC 27H  ;分-1
MOV A,27H
CJNE A,#-1,T0INTR
MOV 27H,#59
DEC 28H           ;时-1
MOV A,28H
CJNE A,#-1,T0INTR
MOV 28H,#59               
T0INTR: RETI
T1INT:
MOV TH1,#0FEH
MOV TL1,#0CH
CJNE R0,#3,T1RTI   ;闹铃时间设为5秒
CPL P1.0
CLR TR1     ;关闹铃
T1RTI:
RETI

DLY10:  MOV R3,#30
D0: ACALL DLY
DJNZ R3,D0
RET
DLY: MOV R7,#2
D1: MOV R6,#40
DJNZ R6,$
DJNZ R7,D1
RET

SEG7:INC A
MOVC A,@A+PC
RET         
         DB      03FH  ;0
     DB      006H  ;1
         DB      05BH  ;2           共阴
         DB      04FH  ;3
         DB      066H  ;4
         DB      06DH  ;5
         DB      07DH  ;6
         DB      007H  ;7
         DB      07FH  ;8
         DB      06FH  ;9
END


51hei截图_20200625223637.png (101.51 KB, 下载次数: 37)

51hei截图_20200625223637.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:789840 发表于 2020-6-25 22:38 | 只看该作者
也没有办法使倒计时停止,但是ALARM子程序不是已经跳转到T1了嘛
回复

使用道具 举报

板凳
ID:784974 发表于 2020-6-26 08:33 | 只看该作者
蜂鸣器可以更改为speaker试试,希望能帮助解决蜂鸣器的问题。
回复

使用道具 举报

地板
ID:319023 发表于 2020-6-26 09:57 | 只看该作者
加一个指示灯 测试一下咯。  蜂鸣器 也单独测试下是不是正常
回复

使用道具 举报

5#
ID:789840 发表于 2020-6-26 15:35 | 只看该作者
谢谢大家!已经解决了,是代码的问题导致无法进入ALARM子程序
回复

使用道具 举报

6#
ID:21568 发表于 2022-9-14 14:17 | 只看该作者
楼主:希望看到调试正常的程序,谢谢
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表