本帖最后由 wangzk 于 2010-4-27 08:38 编辑
把下面的程序下载到板子上后其他一切正常,只是60s倒计时至00时蜂鸣器报警声音有杂音,好像在“发抖”,不是很明显,但人耳能听的出来。排除了,硬件上焊接的问题,只能是软件的问题。哪位大侠帮忙看下啊,谢谢啦!
说明:蜂鸣器是间断报警,周期是2s。
;/////////////////////////////////////
;/////////////////////////////////////
;管脚控制说明:P1口输出段码,P3输出位码,P3.0,P3.1控制个,十位显示,低电平
;有效,控制芯片采用AT89S2051单片机,P3.4外接按键,P3.7驱动蜂鸣器,低电平有效
;/////////////////////////////////////
;/////////////////////////////////////
;/////////////////////////////////////
;/////////////////////////////////////
;系统功能说明:开机接通电源,两位数码管显示60,按键按下且未松开则开始倒计时
;至00。显示00时,若按键仍不松开,蜂鸣器开始间断报警,显示00时,若按键松开, ;蜂鸣器不报警,数码管恢复显示60.若倒计时过程中松开按键,两位数码管恢复60显示
;/////////////////////////////////////
;/////////////////////////////////////
LJMP MAIN
ORG 000BH
LJMP T0S
ORG 001BH
LJMP T1S
;///////////////主程序////////////////
MAIN:MOV SP,#60H ;设堆栈指针
MOV TMOD,#11H
MOV TH0,#3CH
MOV TL0,0B0H ;定时50ms,赋初值
MOV TH1,#0F0H
MOV TL1,#60H ;定时2.5ms
SETB EA ;开总中断允许
SETB ET0 ;开T0中断允许
SETB ET1 ;开T1中断允许
MOV R4,#20
MOV 45H,#250
MOV 30H,#60H
MOV R2,#11111110B ;个位位码
MOV R3,#11111101B ;十位位码
CLR 40.0H ;清个十位标志位
CLR 42.0H ;00计时到标志位
CLR 46H
SETB TR1 ;开T0
LL1:JB P3.4,LL0
JB P3.4,LL0
SETB TR0
LJMP LL1
LL0:
MOV 30H,#60H
MOV R4,#20
CLR TR0
CLR 42.0H
LJMP LL1
;//////T0中断服务程序///////////////////
T0S:PUSH PSW
PUSH ACC
MOV A,30H
CJNE A,#00H,NN0
LJMP NN2
NN0: DJNZ R4,HERE
MOV R4,#20
MOV A,30H
ADD A,#99H
DA A ;30H减一
MOV 30H,A
HERE:MOV TH0,#3CH
MOV TL0,0B0H
LJMP NN1
NN2:CLR TR0
SETB 42.0H ;倒计时至00置标志位
NN1:POP ACC
POP PSW
RETI
;//////T1中断服务程序//////////////////
T1S: PUSH PSW
PUSH ACC
JNB 40.0H,MM0 ;40.0H为0显示个位
MOV A,30H
ANL A,#0F0H ;低四位清零,高四位保留
SWAP A ;高,低四位互换
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A ;十位显示
MOV P3,R3
LJMP MM1
MM0: MOV A,30H
ANL A,#0FH ;高四位清零,低四位保留
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A ;个位显示
MOV P3,R2
MM1: CPL 40.0H ;显示标志位取反
DJNZ 45H,MM2
MOV 45H,#250
INC 46H
MM2:JNB 42.0H,MM4
MOV A,46H
JNB ACC.0,MM4
CLR P3.7
LJMP MM3
MM4:SETB P3.7
MM3:MOV TH1,#0F0H
MOV TL1,#60H
POP ACC
POP PSW
RETI
DELAY:MOV R6,#10 ;延时子程序
DL2:MOV R7,#100
DL1:DJNZ R7,DL1
DJNZ R6,DL2
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H ; 共阳极数码管0~9七位段码
DB 82H,0F8H,80H,90H |