Вы находитесь на странице: 1из 2

F:\latest 877a\CCP Module\Compare 50Hz intr\compare_50hz_intr.

asm
; PROGRAM CREATES A SQUARE WAVE OF 50 HZ WITH 50% DUTY
; CYCLE THROUGH CCP1 PIN USING THE COMPARE MODE INTERUPPTS.
; OSCILLATOR = 20 MHZ
; OVERHEADS EXCLUDED.
; PROGRAMMER: SYED TASWAR MAHBUB.
;-----------------------------------------------------------------------TITLE:"50HZ SQ WAVE GENERATION USING COMPARE MODE WITH CCP1 INTR ."

LIST

P=16F877A

#INCLUDE "P16F877A.INC"
__CONFIG

H'3F71'

;=======================================================================
;SFR SHOWN BELOW NEEDNOT TO BE SHOWN WITH MEMORY ADDRESS AS IT IS
;INCLUDED IN ABOVE MENTIONED .INC FILE BUT SHOWN HERE SO THAT NEW
;PORGRAMMER CAN SEE IN WHICH MEMORY BANKS THESE SFRS ARE LOCATED.

STATUS
PORTC
INTCON
PIR1
TMR1L
TMR1H
T1CON
CCPR1L
CCPR1H
CCP1CON
TRISC
PIE1
ADCON1

EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU

0X03
0X07
0X0B
0X0C
0X0E
0X0F
0X10
0X15
0X16
0X17
0X87
0X8C
0X9F

;IN BANK 1,SO BANK CHANGE IS REQUIRED


;IN BANK 1,SO BANK CHANGE IS REQUIRED
;IN BANK 1,SO BANK CHANGE IS REQUIRED

;======================================================================= ;
ORG
0X00
GOTO
INIT
ORG
0X04
GOTO
CCP_ISR
;======================================================================= ;
INIT
BANKSEL
MOVLW
MOVWF
CLRF
BANKSEL
CLRF
BCF

ADCON1
B'00000110'
ADCON1
TRISC
PORTC
PORTC
PORTC,2

BCF
BCF
BANKSEL
BCF
BCF
BANKSEL
CLRF
MOVLW
MOVWF
CLRF
CLRF
CLRF
CLRF
MOVLW
MOVWF
MOVLW

INTCON,7
INTCON,6
PIE1
PIE1,0
PIE1,2
0X00
CCP1CON
B'00000000'
T1CON
TMR1H
TMR1L
CCPR1H
CCPR1L
0XC3
CCPR1H
0X50

;
;
;
;

TURN OFF A/D, PORTA=DIGITAL I/O


ADCON1 IN BANK1
PORTC OUTPUT
FALL BACK IN BANK0

; CCP1 PIN LOW


;
;
;
;
;
;
;
;
;

DISABLE GLOBAL INTR


DISABLE PERIPHERAL INTR
PIE1 IN BANK1
DISABLE TMR1 INTR
DISABLE CCP1 INTR
FALL BACK TO BANK0
CCP1 MODULE OFF,CLEAR CCP1 PRESCALER
TMR1 PRESCALER AND TMR1 IN TIMER MODE SET
TMR1 OFF

F:\latest 877a\CCP Module\Compare 50Hz intr\compare_50hz_intr.asm

CCP_ISR

MOVWF
BSF
BSF
BANKSEL
BSF
BANKSEL
MOVLW
MOVWF

CCPR1L
INTCON,7
INTCON,6
PIE1
PIE1,2
CCP1CON
B'00001001'
CCP1CON

BSF
GOTO

T1CON,0
$

BCF
CLRF
CLRF
BCF
MOVLW
XORWF
BSF

T1CON,0
TMR1L
TMR1H
PIR1,2
B'00000001'
CCP1CON,F
T1CON,TMR1ON

; ENABLE CCP1 INTR


;
;
;
;

CCP1 IN COMPARE MODE,CCP1 PIN LOW


ON MATCH, CCP MODULE ON, CCP1 PIN UNAFFECTED.
CCP1 INTR FLAG BIT IS SET
TIMER1 ON

;STOP TIMER1.

;CLEAR CCP1 INTERPT FLAG BIT


;TOGGLE CCP1 PIN OUTPUT
;START TIMER1

RETFIE

END
;============================================================================ ;

;------------------------------------------------------------------------------------;
;
;
;
;
;
;

50 HZ SQUARE WAVE GENERATION WITH TMR1 WITHOUT PRESCALER.


--------------------------------------------------------A. T = 1/50HZ = 20 MS, THE PERIOD OF SQ WAVE.
B. HALF OF IT FOR THE HIGH AND LOW PORTIONS OF THE PULSE = 10 MS.
C. 10 MS/0.2 US = 50000.
D. HERE, 50000 HAS TO BE PUT INTO CCPR1 REGISTER. SO,50000 = 0XC350
E. SO, CCPR1H = 0XC3 AND CCPR1L = 0X50.

;
WHY DIVIDE BY 0.20 US?
;
------------------------; TIMER'S CLOCK FREQUENCY = 20MHZ XTAL/4 = 5 MHZ.
; T = 1/5 MHZ = 0.2 US.
;===============================================================

Вам также может понравиться