Các anh cho em hỏi xíu:
Chương trình dưới đây tạo xung có t=0.001s thì em hiểu ,nhưng em hỏi là ở chỗ em không hiểu những câu lệnh nào để tạo ra duty cycle=0.0005s.
Và với một vài lệnh này ở trong chương trình có phải là đưa tín hiệu analog vào chân AN0 phải không?
việc chọn Fosc/8[7-6] để làm gì vậy?
clrf ADCON1 ;left justified, all inputs a/d
bcf STATUS,RP0 ;bank 0
movlw B'01000001' ;Fosc/8 [7-6], A/D ch0(channel 0) [5-3], a/d on [0]
movwf ADCON0
Và có phải là chương trình ở dưới đây điều chế xung từ tín hiệu analog ở chân AN0 và đưa ra chân RC2/CCP1 không?
Cho em hỏi thêm nữa là :ta có thể tự điều chế xung theo tần số mình mong muốn ,cần gì phải nhận tín hiệu analog rồi sau đó mới điều chế xung?
Chương trình dưới đây tạo xung có t=0.001s thì em hiểu ,nhưng em hỏi là ở chỗ em không hiểu những câu lệnh nào để tạo ra duty cycle=0.0005s.
Và với một vài lệnh này ở trong chương trình có phải là đưa tín hiệu analog vào chân AN0 phải không?
việc chọn Fosc/8[7-6] để làm gì vậy?
clrf ADCON1 ;left justified, all inputs a/d
bcf STATUS,RP0 ;bank 0
movlw B'01000001' ;Fosc/8 [7-6], A/D ch0(channel 0) [5-3], a/d on [0]
movwf ADCON0
Và có phải là chương trình ở dưới đây điều chế xung từ tín hiệu analog ở chân AN0 và đưa ra chân RC2/CCP1 không?
Cho em hỏi thêm nữa là :ta có thể tự điều chế xung theo tần số mình mong muốn ,cần gì phải nhận tín hiệu analog rồi sau đó mới điều chế xung?
Code:
;============================
;CHUONG TRINH DIEU CHE DO RONG XUNG
;============================
;====KHAI BAO CHUONG TRINH===
;DUNG PIC DE TAO RA XUNG CO:
;T = 0.001(S) HAY F = 1000HZ
;DUTY CYCLE : 50%
;THACH ANH 4MHZ NEN T(OSC) = 0.25*10^(-7)(S)
;============================
#INCLUDE <P16F877A.INC> ;CHEN THU VIEN LIEN KET CHO CHUONG TRINH
__CONFIG 3F71H ;CAU HINH CAC BIT HE THONG
ERRORLEVEL -302
;=====DINH NGHIA CAC THONG SO==
#DEFINE PWM PORTC,2 ; CHAN XUAT XUNG PWM
;==============================
ORG 0H
GOTO MAIN
;====KHAI BAO CAC VUNG RAM TRONG CT====
CBLOCK 0X20
ADRESH_TEMP
ADRESL_TEMP
ADRESL_TEMP1
ENDC
;=======================================
;===========BAT DAU CHUONG TRINH===================
MAIN
;==XOA TAT CA CAC PORT VA NGAT===
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
CLRF INTCON
;==============
CALL ADC_MODULE
;====BAT DAU TAO XUNG PWM =======
;==BUOC 1==
;SET CHU KI CHO PWM BANG CACH GHI GIA TRI VAO PR2
;PR2 = (PWM Period/(4 * Tosc * TMR2 Prescale)) - 1
;PR2 = (0.001/(4 * 2.5 * 10-7 * 4)) - 1 = 249
BSF STATUS, RP0 ;CHON BANK 1 DE THAO TAC VOI PR2
MOVLW D'249'
MOVWF PR2
;==BUOC 2==
;SET PWM DUTY CYCLE BANG CACH GHI CAC GIA TRI THICH HOP VAO CCPR1L VA
;CAC BIT CCP1CON<5:4>
;CCPR1L = ADRESH_TEMP
;CCP1CON<5:4> = ADRESL_TEMP<5:4>
BCF STATUS, RP0 ; TRO VE BANK 0 DE THAO TAC VOI CCPR1L VA CCP1CON VA CAC BIEN TAM
MOVF ADRESH_TEMP,W
MOVWF CCPR1L
MOVF ADRESL_TEMP,W
ANDLW B'11000000'
MOVWF ADRESL_TEMP1
BCF STATUS,C
RRF ADRESL_TEMP1,1
RRF ADRESL_TEMP1,1
MOVF ADRESL_TEMP1,W
MOVWF CCP1CON
;==BUOC 3==
;SET CHAN CCP1 LA NGO RA CUA XUNG PWM BANG CACH XOA CHAN 2 CUA TRISC
BSF STATUS, RP0 ;CHON BANK 1 DE THAO TAC VOI TRISC
MOVLW B'11111011'
ANDWF TRISC
;==BUOC 4==
;SET TMR2 PRESCALE VALUE VA KHOI DONG TIMER2 THONG QUA GHI CAC GIA
;TRI VAO T2CON
BCF STATUS, RP0 ; TRO VE BANK0 DE THAO TAC VOI T2CON
MOVLW B'00000101' ; TMR2 ON , PREWCALE = 1:4
MOVWF T2CON
;==BUOC 5==
;XAC DINH THONG SO CUOI CUNG CHO THANH GHI CCP1CON DE PWM HOAT DONG
MOVF CCP1CON,W
ANDLW B'00110000'
IORLW B'00001111' ; CHON CHE DO PWM
MOVWF CCP1CON
GOTO MAIN
;===ADC=============================================================
ADC_MODULE
bsf STATUS,RP0 ;bank 1
bcf STATUS,RP1
; movlw H'00'
; movwf TRISC ;portc [7-0] outputs
clrf ADCON1 ;left justified, all inputs a/d
bcf STATUS,RP0 ;bank 0
movlw B'01000001' ;Fosc/8 [7-6], A/D ch0(channel 0) [5-3], a/d on [0]
movwf ADCON0
;Main
;call ad_portc
;goto Main
;ad_portc
;wait for acquision time (20uS)
;(non-critical for this test)
bsf ADCON0,GO ;Start A/D conversion
Wait
btfsc ADCON0,GO ;Wait for conversion to complete
goto Wait
movf ADRESH,W ;Write A/D result to PORTC
movwf ADRESH_TEMP
movf ADRESL,W
movwf ADRESL_TEMP
;movwf PORTC ;LEDs
;return
return
;====================================================================
END

Comment