gián đoạn chương trình dựa cho pic16f877

B

bluemonday

Guest
hi ..i sử dụng mã này vào chương trình .. pic của tôi
int adc_value;

void main () (
ADCON1 = 0x80; / / Cấu hình đầu vào analog và Vref
TRISA = 0xFF; / / PORTA là đầu vào
TRISB = 0x3F; / / Pins RB7, RB6 được kết quả đầu ra

Usart_Init (115200);

do (
adc_value = Adc_Read (2); / / Nhận các kết quả của chuyển đổi AD
Usart_Write (adc_value);
Delay_us (200);
) Trong khi (1);
)

i cant nhận được một mẫu chính xác ..bất cứ ai có thể giúp tôi với .. nàyi muốn sử dụng một interruput theo giờ cho nhưng im dont biết làm thế nào ..plz giúp tôi ..ai biết ..plz cho tôi có mã ur ..

 
chào,

i think ur sử dụng trình biên dịch mikrocvoid interrupt ()
(
nếu (PIR1.TMR1IF)
(
/ / đặt mã ur đây
PIR1.TMR1IF = 0; / / rõ ràng TMR1IF
)

)
void init_timer ()
(
TMR1L = 0;
TMR1H = 0;
T1CON = 0x31;
PIR1.TMR1IF = 0; / / rõ ràng TMR1IF
PIE1 = 1; / / cho phép ngắt
INTCON = 0xC0;
)

u có thể khởi tạo bộ đếm thời gian bằng cách sử dụng chức năng init_timer ()
khi tràn timer xảy ra, chức năng ngắt () sẽ tự động được gọi là

 
cũng có thể sử dụng các sự kiện "đặc biệt" của module CCP ...bạn có thể đọc nó trong datasheet của (i don `t xin lỗi nhớ nếu 877 và 877A có mô-đun này ...) bạn nên thay đổi các giá trị ccpr2 cho yêu cầu riêng của bạn ...(Tôi chỉ cần sửa đổi và chương trình cũ để đăng ở đây ....)( nó làm việc khác nhau cũng cho tôi ...)

void interrupt (void)
(
nếu (PIR2.CCP2IF)
(
PIR2.CCP2IF = 0;
Usart_write (ADRESH);
)
)

void main (void)

(
TRISA = 0xEF; / / hay cái gì thêm ...
TRISB = 0;
TRISD = 0;
PORTB = 0;
PORTD = 0;
Usart_Init (115200);
ADCON0 = 0b01000001; / / ADC thiết lập
ADCON1 = 0x04;
T1CON = 0; / /
CCPR2H = 0x04;
CCPR2L = 0xE2; / / Fs = 800Hz = 1/1250us
TMR1H = 0; / /
TMR1L = 0; / /
CCP2CON = 0x0B;
PIR2.CCP2IF = 0;
PIE2.CCP2IE = 1;
INTCON.PEIE = 1;
INTCON.GIE = 1;
T1CON.TMR1ON = 1;
ADCON0.GO = 1;

trong khi (1)
(
/ / đặt cái gì thêm ở đây .....
)
)

 
Kiểm tra các thông số kỹ thuật và chú ý thuật ngữ 'Tad'

 
i haver đọc tờ dữ liệu và các bước này nên được thực hiện trên một chuyển đổi A D /:

1.cấu hình A / D module:
2.cấu hình A / D gián đoạn:

rõ ràng ADIF bit
thiết lập ADIE bit
thiết lập PEIE bit
thiết lập Gie bit
3.chờ cho thời gian thu
4.bắt đầu cpnversion

thiết lập GO / DONE bit (ADCON0)

5.chờ cho A / D chuyển đổi để hoàn tất, bằng cách:

bỏ phiếu cho GO / DONE bit được xóa (w / ngắt kích hoạt) hoặc
chờ đợi cho A / D interrupt

i biết làm thế nào để làm bước 1 ..im nhưng không biết phải làm gì cho những bước tiếp theo ..bạn có thể xin hãy giải thích cho tôi nếu bạn có thời gian ..giúp đỡ của bạn sẽ được chúng tôi đánh giá cao ..thnx rất nhiều ..Thêm vào sau khi 7 phút:và cũng ..i muốn truyền .. ADRESLlàm thế nào tôi sẽ làm gì??Thêm vào sau khi 10 phút:và cũng ..CCPR2h = 0x04
CCPR2L = 0xE2

bạn có thể vui lòng giải thích thêm lý do tại sao bạn đặt giá trị này?

 

Welcome to EDABoard.com

Sponsor

Back
Top