saotim_07sk
30-03-2011, 10:08 PM
Chào mọi người, Mi rất cần sự giúp đỡ từ các bạn. Sau 2 tuần mày mò tìm kiếm tài liệu, lập trình nhưng chạy mô phỏng thấy bất ổn. (Mi chưa có kinh nghiệm làm mạch, sợ sai nhiều chỗ!)mong mọi người giúp đỡ, phần ngắt tmr0 để sau này dùng led hiển thị tốc độ động cơ!(không biết upfile,có vào hỏi đáp mà đọc...không hiểu lắm.huhu).
;lap trinh su dung pwm dieu che do rong xung
include <p16f877a.inc>
__config _HS_OSC&_WDT_OFF&_LVP_OFF
COUNT EQU 0X20
;KHAI BAO CHO NGAT
W_SAVE EQU 0X25
PCLATH_SAVE EQU 0X26
STATUS_SAVE EQU 0X27
FSR_SAVE EQU 0X28
ORG 0x00
GOTO MAIN
ORG 0X04
GOTO NGAT
MAIN
;CHUYEN BANK1
BANKSEL TRISC
;KHIA BAO DAU VAO RA
BCF TRISC,1 ;3.CHAN RC1 VA RC2 CUA KHOI CCP
BCF TRISC,2
;CHO PHEP TMR2 HOAT DONG BANG CACH DUA GIA TRI THICH HOP VAO THANH GHI T2CON
;CAI DAT HOAT DONG O CHE DO PWM
MOVLW d'24' ;1.mov gia tri vao thanh ghi PR2 (bank1):PWM period=[(PR2+1)]*4*Tosc*(gia tri bo chia tan so TMR2)=64
MOVWF PR2 ;dong co hoat dong tot o tan so 10kHZ nen 1T= 0.1ms=10^-4
;CHUYEN BANK 0 CAI DAT TI LE CHIA TMR2 '''''SUU DUNG BO CHIA PRESCALER'''''''
BANKSEL PORTD
BSF T2CON,TMR2ON ;CHO PHEP TMR2
BCF T2CON,T2CKPS1 ;4.CHON TI LE 01=1:4
BSF T2CON,T2CKPS0
MOVLW B'00000111' ;2.thiet lap do rong xung can dieu che
MOVWF CCPR1L ;thanh ghi 8 bit thap cua khoi CPP1
BCF CCP1CON,5 ;2bit CCP1CON<5:4> hau 2 bit LSB
BCF CCP1CON,4
MOVF CCP1CON,W ;5.cho phep CCP hoat dong o che do PWM 11xx
ANDLW B'00110000'
IORLW B'00001111'
MOVWF CCP1CON
;CHO PHEP NGAT TMR1 DE DINH THOI BANK1
BSF INTCON,PEIE
BSF INTCON,GIE
BSF PIE1,TMR1IE
;BANK 0 CAI DAT TMR1 O CHE DO DINH THOI VA CAI DAT TI LE CHIA
BANKSEL PORTC
CLRF PORTC
BSF T1CON,TMR1ON
BSF T1CON,T1CKPS1 ;CHON TI LE 1:8
BSF T1CON,T1CKPS0
;CHO PHEP NGAT TMR1 DE DINH THOI BANK1
BSF INTCON,PEIE
BSF INTCON,GIE
BSF PIE1,TMR1IE
;BANK 0 CAI DAT TMR1 O CHE DO DINH THOI VA CAI DAT TI LE CHIA
BANKSEL PORTC
BSF T1CON,TMR1ON
BSF T1CON,T1CKPS1 ;CHON TI LE 1:8
BSF T1CON,T1CKPS0
;CHUYEN BANK 0
MOVLW D'2
MOVWF COUNT
BSF PORTC,1;QUAY THUAN
BCF PORTC,2
QUAY_DC
MOVLW 0X0F
MOVWF TMR1H
MOVLW 0XC4
MOVWF TMR1L
GOTO $ ;"""""""""""""""chu y""""""""""""""
;KHI TRAN TMR1
NGAT
;DAU CHUONG TRINH NGAT
MOVWF W_SAVE
SWAPF STATUS,W
CLRF STATUS
MOVWF STATUS_SAVE
MOVF PCLATH,W
MOVWF PCLATH_SAVE
CLRF PCLATH
MOVF FSR
MOVWF FSR_SAVE
;DOAN CHUONG TRINH NGAT
;-------KIEM TRA XEM NGAT NAO DANG XAY RA-------
;----------------XOA CO NGAT--------------------
BTFSS PIR1,TMR2IF ;KIEM TRA CO NGAT TMR2 NEU CO THOAT RA
GOTO EXIT_INT
BTFSS PIR1,TMR1IF ;KIEM TRA CO NGAT TMR1
GOTO EXIT_INT
BCF PIR1,TMR1IF;XOA CO NGAT
DECFSZ COUNT
GOTO DONGCO
MOVLW D'2
MOVWF COUNT
MOVLW 0X0F
MOVWF TMR1H
MOVLW 0XC4
MOVWF TMR1L
DONGCO
BTFSS PORTC,1
GOTO N
GOTO T
N
BSF PORTC,1
BCF PORTC,2
GOTO EXIT_INT
T
BCF PORTC,1
BSF PORTC,2
;CAC THAO TAC CHINH CUA CHUONG TRINH NGAT
;DOAN CUOI CHUONG TRINH NGAT
EXIT_INT
MOVF FSR_SAVE,W
MOVWF FSR
MOVF PCLATH_SAVE,W
MOVWF PCLATH
SWAPF STATUS_SAVE,W
MOVWF STATUS
SWAPF W_SAVE,1
SWAPF W_SAVE,0
RETFIE
END
;lap trinh su dung pwm dieu che do rong xung
include <p16f877a.inc>
__config _HS_OSC&_WDT_OFF&_LVP_OFF
COUNT EQU 0X20
;KHAI BAO CHO NGAT
W_SAVE EQU 0X25
PCLATH_SAVE EQU 0X26
STATUS_SAVE EQU 0X27
FSR_SAVE EQU 0X28
ORG 0x00
GOTO MAIN
ORG 0X04
GOTO NGAT
MAIN
;CHUYEN BANK1
BANKSEL TRISC
;KHIA BAO DAU VAO RA
BCF TRISC,1 ;3.CHAN RC1 VA RC2 CUA KHOI CCP
BCF TRISC,2
;CHO PHEP TMR2 HOAT DONG BANG CACH DUA GIA TRI THICH HOP VAO THANH GHI T2CON
;CAI DAT HOAT DONG O CHE DO PWM
MOVLW d'24' ;1.mov gia tri vao thanh ghi PR2 (bank1):PWM period=[(PR2+1)]*4*Tosc*(gia tri bo chia tan so TMR2)=64
MOVWF PR2 ;dong co hoat dong tot o tan so 10kHZ nen 1T= 0.1ms=10^-4
;CHUYEN BANK 0 CAI DAT TI LE CHIA TMR2 '''''SUU DUNG BO CHIA PRESCALER'''''''
BANKSEL PORTD
BSF T2CON,TMR2ON ;CHO PHEP TMR2
BCF T2CON,T2CKPS1 ;4.CHON TI LE 01=1:4
BSF T2CON,T2CKPS0
MOVLW B'00000111' ;2.thiet lap do rong xung can dieu che
MOVWF CCPR1L ;thanh ghi 8 bit thap cua khoi CPP1
BCF CCP1CON,5 ;2bit CCP1CON<5:4> hau 2 bit LSB
BCF CCP1CON,4
MOVF CCP1CON,W ;5.cho phep CCP hoat dong o che do PWM 11xx
ANDLW B'00110000'
IORLW B'00001111'
MOVWF CCP1CON
;CHO PHEP NGAT TMR1 DE DINH THOI BANK1
BSF INTCON,PEIE
BSF INTCON,GIE
BSF PIE1,TMR1IE
;BANK 0 CAI DAT TMR1 O CHE DO DINH THOI VA CAI DAT TI LE CHIA
BANKSEL PORTC
CLRF PORTC
BSF T1CON,TMR1ON
BSF T1CON,T1CKPS1 ;CHON TI LE 1:8
BSF T1CON,T1CKPS0
;CHO PHEP NGAT TMR1 DE DINH THOI BANK1
BSF INTCON,PEIE
BSF INTCON,GIE
BSF PIE1,TMR1IE
;BANK 0 CAI DAT TMR1 O CHE DO DINH THOI VA CAI DAT TI LE CHIA
BANKSEL PORTC
BSF T1CON,TMR1ON
BSF T1CON,T1CKPS1 ;CHON TI LE 1:8
BSF T1CON,T1CKPS0
;CHUYEN BANK 0
MOVLW D'2
MOVWF COUNT
BSF PORTC,1;QUAY THUAN
BCF PORTC,2
QUAY_DC
MOVLW 0X0F
MOVWF TMR1H
MOVLW 0XC4
MOVWF TMR1L
GOTO $ ;"""""""""""""""chu y""""""""""""""
;KHI TRAN TMR1
NGAT
;DAU CHUONG TRINH NGAT
MOVWF W_SAVE
SWAPF STATUS,W
CLRF STATUS
MOVWF STATUS_SAVE
MOVF PCLATH,W
MOVWF PCLATH_SAVE
CLRF PCLATH
MOVF FSR
MOVWF FSR_SAVE
;DOAN CHUONG TRINH NGAT
;-------KIEM TRA XEM NGAT NAO DANG XAY RA-------
;----------------XOA CO NGAT--------------------
BTFSS PIR1,TMR2IF ;KIEM TRA CO NGAT TMR2 NEU CO THOAT RA
GOTO EXIT_INT
BTFSS PIR1,TMR1IF ;KIEM TRA CO NGAT TMR1
GOTO EXIT_INT
BCF PIR1,TMR1IF;XOA CO NGAT
DECFSZ COUNT
GOTO DONGCO
MOVLW D'2
MOVWF COUNT
MOVLW 0X0F
MOVWF TMR1H
MOVLW 0XC4
MOVWF TMR1L
DONGCO
BTFSS PORTC,1
GOTO N
GOTO T
N
BSF PORTC,1
BCF PORTC,2
GOTO EXIT_INT
T
BCF PORTC,1
BSF PORTC,2
;CAC THAO TAC CHINH CUA CHUONG TRINH NGAT
;DOAN CUOI CHUONG TRINH NGAT
EXIT_INT
MOVF FSR_SAVE,W
MOVWF FSR
MOVF PCLATH_SAVE,W
MOVWF PCLATH
SWAPF STATUS_SAVE,W
MOVWF STATUS
SWAPF W_SAVE,1
SWAPF W_SAVE,0
RETFIE
END