現在程序在仿真上可以正常運行,但是加上蜂鳴器之后并不響,請問是哪的原因?確實不知道該怎么修改了。。。
整圖.jpg (148.07 KB, 下載次數: 59)
下載附件
2021-6-10 19:34 上傳
程序如下- 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
復制代碼
|