现在程序在仿真上可以正常运行,但是加上蜂鸣器之后并不响,请问是哪的原因?确实不知道该怎么修改了。。。
程序如下- LED_0 EQU 30H
- LED_1 EQU 31H
- LED_2 EQU 32H
- LED_3 EQU 33H
- BUFFER EQU 34H ;显示缓存
- ADC EQU 35H
- TCNTA EQU 36H
- TCNTB EQU 37H
- H_TEMP EQU 38H ;液位上限
- L_TEMP EQU 39H ;液位下限
- FLAG BIT 00H
- H_ALM BIT P3.0
- L_ALM BIT P3.1
- SOUND BIT P3.7
- CLOCK BIT P2.4
- ST BIT P2.5
- EOC BIT P2.6
- OE BIT P2.7
- ORG 00H
- SJMP START
- ORG 0BH
- LJMP INT_T0
- ORG 1BH
- LJMP INT_T1
- START: MOV LED_0,#00H
- MOV LED_1,#00H
- MOV LED_2,#00H
- MOV DPTR,#TABLE ;送段码表首地址
- MOV H_TEMP,#153 ;204/255=0.8 高于80%报警
- MOV L_TEMP,#77 ;77/255=0.3 低于30%报警
- MOV TMOD,#12H ;开中断
- MOV TH0,#245
- MOV TL0,#0
- MOV IE,#8AH
- CLR C
- SETB TR0 ;为ADC0808提供时钟
- WAIT: SETB H_ALM
- SETB L_ALM
- CLR ST
- SETB ST
- CLR ST ;启动转换
- JNB EOC,[ DISCUZ_CODE_1 ]nbsp; ;等待输出结果
- SETB OE ;允许输出
- MOV ADC,P1 ;读取A/D转换结果
- CLR OE ;关闭输出
- MOV A,ADC ;将A/D转换结果转换成BCD码
- SUBB A,L_TEMP ;判断是否低于下限
- JC LALM
- MOV A,H_TEMP
- MOV R0,ADC
- SUBB A,R0 ;判断是否高于上限
- JC HALM
- CLR TR1
- LJMP PROC
- LALM: CLR L_ALM ;低位报警
- SETB TR1
- CLR FLAG
- LJMP PROC
- HALM: CLR H_ALM ;高位报警
- SETB TR1
- SETB FLAG
- LJMP PROC
- PROC: MOV A,ADC ;数值转换
- MOV B,#51
- DIV AB
- MOV LED_2,A
- MOV A,B
- MOV B,#10
- DIV AB
- MOV LED_1,A
- MOV LED_0,B
- LCALL DISP ;显示A/D转换结果
- SJMP WAIT
- INT_T0: CPL CLOCK ;提供ADC0808时钟
- RETI
- INT_T1: CPL SOUND
- INC TCNTA
- MOV A,TCNTA
- JB FLAG,I1 ;判断是低位报警还是高位报警
- CJNE A,#30,RETUNE ;低位报警声
- SJMP I2
- I1: CJNE A,#20,RETUNE ;高位报警声
- I2: MOV TCNTA,#0
- INC TCNTB
- MOV A,TCNTB
- CJNE A,#25,RETUNE
- MOV TCNTA,#0
- MOV TCNTB,#0
- LCALL DELAY2
- RETUNE: RETI
- DISP: MOV A,LED_0 ;数码管显示子程序
- MOVC A,@A+DPTR ;将字段码转换显示码
- CLR P2.3
- MOV P0,A
- LCALL DELAY
- SETB P2.3
- MOV A,LED_1
- MOVC A,@A+DPTR
- CLR P2.2
- MOV P0,A
- LCALL DELAY
- SETB P2.2
- MOV A,LED_2
- MOVC A,@A+DPTR
- ORL A,#80H ;显示小数点
- MOV BUFFER+2,A ;送显示缓存
- CLR P2.1
- MOV P0,A
- LCALL DELAY
- SETB P2.1
- RET
- DELAY: MOV R6,#10 ;延时5ms
- D1: MOV R7,#250
- DJNZ R7,$
- DJNZ R6,D1
- RET
- DELAY2: MOV R5,#20
- D2: MOV R6,#20
- D3: MOV R7,#250
- DJNZ R7,$
- DJNZ R6,D3
- DJNZ R5,D2
- RET
- TABLE: DB 3FH,06H,5BH,4FH,66H ;0,1,2,3,4 共阴极接法
- DB 6DH,7DH,07H,7FH,6FH ;5,6,7,8,9,
- END
复制代码
|