⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm_v1.asm

📁 循环读取八个通道的电压值
💻 ASM
字号:
首先按照下面的公式建立一个正弦波样本表,样本表将一个正弦波周期分为50个点,每点按7位量化(124对应最高幅值Vcc/2):  
          f(x) = 64 + 60 * sin(2πx/50)  x∈[0…49]
// 100点正弦波样本表  
const unsigned char auc_SinParam[50] = {  
64,72,79,86,93,
99,105,110,115,118,

121,123,124,124,123,
121,118,115,110,105,

99,93,86,79,72,
64,56,49,42,35,

29,23,18,13,10,
7,5,4,4,5,

7,10,13,18,23,
29,35,42,49,56,
};

#include <p16f876A.inc>
SINTABLE_PNT   EQU    2F
SINTABLE       EQU    30

;************************************
	   org	 00h
	goto	START
	  org	 04h
	goto	INT_SER  
	org	20h
START:
	BSF	STATUS,RP0     ;BANK1
	MOVLW	0xFF
	MOVWF	TRISA
	MOVLW	0xC0
	MOVWF	TRISB
	MOVLW	0x80
	MOVWF	TRISC
	
	BCF	STATUS,RP0    ;BANK0
	CLRF	PORTA
	CLRF	PORTB
        MOVLW   0xC1
        MOVWF   PORTC
	
	CLRF    CCP1CON      ;CCP Module is off
        CLRF    TMR2         ;Clear Timer2
        
        MOVLW   0x01         ;00000001
        MOVWF   T2CON
        
        BSF	STATUS,RP0   ;BANK1
        MOVLW   0xF9         ;Fpwm = 50HZ x 50 = 2500HZ , Postscaler = 1:1 , Prescaler = 1:4 
        MOVWF   PR2         

        BCF	STATUS,RP0    ;BANK0
        MOVLW   SINTABLE 
        MOVWF   FSR
        MOVF    INDF,0
        MOVWF   CCPR1L      
        CLRF    PIR1             ;Clear peripheral interrupts Flags
        MOVLW   0x0C             ;00001100 PWM mode, 2 LSbs of Duty cycle = 00
        MOVWF   CCP1CON   
        
        BSF     STATUS,RP0      ;Bank1
        BSF     PIE1,TMR2IE     ;Enable peripheral interrupts
        BSF     INTCON,PEIE     
        BSF     INTCON,GIE
        
        BCF	STATUS,RP0     ;BANK0
        BSF     T2CON,TMR2ON   ;Timer2 starts to increment
        

INT_SER:
       
       BCF	STATUS,RP0     ;BANK0
       BTFSC    PIR1,TMR2IF
       GOTO     TMR2_INT_SER
       NOP
       NOP
       GOTO     INT_SER_END

TMR2_INT_SER:
      BCF       PIR1, TMR2IF
      INCF      SINTABLE_PNT,1
      
      MOVF      SINTABLE_PNT,0
      MOVWF     FSR
      MOVF      INDF,0
      MOVWF     CCPR1L
      
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -