用PIC16F877A写的报警声程序为何有颤音??
用PIC16F877A写的报警声程序为何有颤音??
源程序如下:
#INCLUDE "P16F877.INC" ;Fosc=4MHZ,T0=1us
P1 EQU 20H
P2 EQU 21H
A1 EQU 22H
A1_TEMP EQU 23H
A2 EQU 24H
;********************************************************
ORG 0000H
MAIN
BSF STATUS,RP0 ; 选BANK1
MOVLW 00H ; RC定义为输出
MOVWF TRISC
BCF STATUS,RP0 ; 选BANK0
;*********************************************************
LP0
CLRF P1
CLRF P2
;................................
LP1
MOVF P1, 0
CALL TAB1
MOVWF A1
MOVWF A1_TEMP
;...............................
MOVF P2, 0
CALL TAB2
MOVWF A2
;................................
LP2
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ A1, 1
GOTO LP2
MOVLW B'00000010'
XORWF PORTC, 1 声音从RC1输出
MOVF A1_TEMP, 0
MOVWF A1
DECFSZ A2, 1
GOTO LP2
INCF P1, 1
INCF P2, 1
MOVLW .21
SUBWF P1, 0
BTFSS STATUS, Z
GOTO LP1
GOTO LP0
TAB1
ADDWF PCL,1
RETLW .33
RETLW .32
RETLW .31
RETLW .29
RETLW .28
RETLW .27
RETLW .26
RETLW .25
RETLW .24
RETLW .23
RETLW .22
RETLW .21
RETLW .20
RETLW .19
RETLW .18
RETLW .17
RETLW .16
RETLW .15
RETLW .14
RETLW .13
RETLW .12
TAB2
ADDWF PCL,1
RETLW .39
RETLW .65
RETLW .37
RETLW .77
RETLW .40
RETLW .81
RETLW .50
RETLW .82
RETLW .93
RETLW .48
RETLW .99
RETLW .108
RETLW .57
RETLW .118
RETLW .63
RETLW .129
RETLW .141
RETLW .75
RETLW .157
RETLW .89
RETLW .85
;*************************************************
END
以前写的也是.不知道是什么原因.请大家指导一下.谢谢!!
发表时间:2004年7月20日11:12:11