这个是部分程序,因为太多,所以只有部分程序,麻烦给看下,谢谢!
MAIN CLRF COUNT3
CLRF COUNT2
CLRF COUNT1
CLRF COUNT0
BSF STATUS,RP0
MOVLW 000H
MOVWF INTCON
MOVLW 00H
MOVWF PIE1
BCF STATUS,RP0 ;A口初始化
CLRF PORTA
BSF STATUS,RP0
CLRF PR2
CLRF ANSEL ;A口为数字I/O
MOVLW 028H
MOVWF TRISA ;A口<5:3>为输入 <4,2:0>为输出
BCF STATUS,RP0 ;C口初始化
CLRF PORTC
BSF STATUS,RP0
MOVLW 0FH ;C口<3:0>为模拟输入端口 <5:4>为数字I/O
MOVWF ANSEL
MOVLW 0FH ;C口<3:0>为输入 <5:4>为输出
MOVWF TRISC
BCF STATUS,RP0
RUNMOTOR BSF STATUS,RP0
BSF TRISC,5 ;C口的第5位(PWM)口设为输入
BSF TRISC,4 ;C口的第4位(PWM)口设为输入
MOVLW 3EH ;PWM周期=[(PR2)+1]*4*TOSC(时钟周期)*(TMR2预分频值)=1/16K HZ
MOVWF PR2
BCF STATUS,RP0
MOVLW 38H
MOVWF CCPR1L ;占空比为90%=(CCPR1L:CCP1CON<5:4>)/[4*(PR2+1)]
MOVLW 0BCH ;设定PWM半桥输出
MOVWF CCP1CON
MOVLW 06H
MOVWF PWM1CON ;死区延时6US
BCF PIR1,1
MOVLW 04H
MOVWF T2CON ;启动TIMER2
TEST BTFSS PIR1,TMR2IF
GOTO TEST
BSF STATUS,RP0
BCF TRISC,5 ;C口第5位输出
BCF TRISC,4 ;C口第4位输出
BCF STATUS,RP0
; CALL DELAY100MS
BCF PIR1,1
BSF COUNT3,0
GOTO $ |