PIC16F877 Progaming Trợ giúp

S

samuel_jihn64

Guest
Tôi đang làm một dự án bằng cách sử dụng PIC16F877. mà nếu pic phát hiện khói từ các cảm biến khói (đầu vào), nó sẽ kích hoạt các fan hâm mộ (1 đầu ra) cho 10 giây và hơn kích hoạt một trong 2 sau khi các fan hâm mộ đó là nước hoa (2 đầu ra) để phun. có thể bất kỳ một giúp tôi kiểm tra chương trình tôi thực hiện đúng hay không ... Cảm ơn bạn rất nhiều ...
Code:
 # include / / bao gồm thư viện vi điều khiển PIC / / cấu hình / / __CONFIG (0x2FF4); / / PIC vi điều khiển cấu hình __CONFIG (0x3FFF); / / PIC vi điều khiển cấu hình / / xác định kê khai / / # define fan_ra RC0 # define perfume_rb RC1 # xác định cảm biến khoảng trống chính ra0 () {unsigned char m = 0, i = 0; Ansel = 0; ANSELH = 0; / / Tris cấu hình (đầu vào và đầu ra) / / TRISA = 0b11111111; / / cấu hình PORT hướng BI / O Porta = 0xb00000000; / / cấu hình PORT BI / O hướng PORTB = 0xb00000000; / / cấu hình PORT hướng BI / O trong khi (1) {if (cảm biến == 1) {fan_ra = 1; trì hoãn (10); perfume_rb = 1; };}}
 
Chỉ nên là một tuyên bố __CONFIG. Bạn dường như để xác định các bit trên PORTC là kết quả đầu ra nhưng bạn không được thiết lập PORTC chế độ đầu ra. Bạn phải Thiết lập các bit TRISC 0 và 1 để được kết quả đầu ra. Các biến m và tôi không bao giờ được sử dụng, bạn có thể để chúng ra. ADC là không được sử dụng để Ansel 'đường cũng có thể được gỡ bỏ. Dấu chấm phẩy ';' trên dòng thứ ba hình thức cuối cùng là không cần thiết. Nó sẽ lặp liên tục nếu đầu vào cảm biến vẫn cao. Nếu tôi hiểu mục đích của nó, bạn có thể muốn chờ cho cảm biến thấp tại một số điểm trước khi lặp lại vòng lặp. Kiểm tra các tham số trong chức năng chậm trễ (), là giây hoặc mS? Brian.
 
nhờ não .... thời gian trì hoãn sẽ là thứ hai .. tôi thực sự không dao trong PIC lập trình và tôi sử dụng chương trình PIC cũ của tôi đi theo dòng và chỉnh sửa. cảm ơn sự giúp đỡ của các bạn.
 
nhờ não .... thời gian trì hoãn sẽ là thứ hai .. tôi thực sự không dao trong PIC lập trình và tôi sử dụng chương trình PIC cũ của tôi đi theo dòng và chỉnh sửa. cảm ơn sự giúp đỡ của các bạn ...
 
Nếu tôi hiểu mục đích của nó, hãy xem xét mã này có thể phù hợp: void main () {trong khi (1) {if (cảm biến == 1) {fan_ra = 1; sự chậm trễ (10000); fan_ra = 0; perfume_rb = 1 lít sự chậm trễ ( xxx), perfume_rb = 0;} {} trong khi (cảm biến == 1);}} Những gì tôi đã làm được thêm vào các lệnh để chuyển các kết quả đầu ra đi sau khi một sự chậm trễ, bạn để lại cho họ sau khi được kích hoạt lần đầu tiên. Tôi cũng đã thêm một vòng lặp lãng phí thời gian ở cuối, do đó nó sẽ không lặp lại cho đến khi cảm biến gửi tín hiệu nó. Đặt một giá trị thực tế cho phun nước hoa, nơi tôi đặt 'xxx'. Hầu hết các trình biên dịch thiết lập sự chậm trễ trong milli giây, đó là lý do tại sao tôi tăng thời gian trì hoãn của bạn đến 10.000 (= 10 giây) nhưng kiểm tra hướng dẫn sử dụng trình biên dịch của bạn để xác nhận điều này. Brian.
 
Cảm ơn Bạn rất nhiều Mr.Brain.this giúp tôi rất nhiều.
 
Một chính tả thông dụng misteak tôi sợ hãi, nhưng có lẽ là một miễn phí! Brian.
 
tại sao khi tôi biên dịch Tôi nhận được lỗi này. Xây dựng C: \\ Documents and Settings \\ SRSPMS \\ Desktop \\ Projek \\ Program \\ khói Sensor cho lái xe Sử dụng thiết bị 16F887 C: \\ Program Files \\ HI-TECH Software \\ PICC \\ 9.71a \\ bin \\ picc.exe Thi: "C: \\ Program Files HI-TECH \\ Software \\ PICC \\ 9.71a \\ bin \\ picc.exe "" oSmoke Sensor.cof "" mSmoke Sensor.map "- tóm tắt = mặc định, psect, đẳng cấp, phần mềm +, hex - sản lượng = mặc định, inhx032 chip 16F887-P - thời gian chạy = mặc định, rõ ràng, + init, lưu giữ, + OSCCAL,-tải về, resetbits, stackcall, + clib - opt = mặc định, + asm, gỡ lỗi, tốc độ, + không gian, 9 - cảnh báo = 0-D__DEBUG = 1 - tăng gấp đôi = 24 - nổi = 24 - addrqual = bỏ qua g - asmlist "- errformat = Lỗi [% n]% f%% c l.% s "- msgformat = tư vấn [% n]% s" "- warnformat = Cảnh báo [% n]% f;% l.% c% s" (1273) toàn trí Code Generation không có sẵn trong chế độ Lite (cảnh báo) HI-TECH C Compiler cho PIC10/12/16 MCUs (Lite Mode) V9.71a Bản quyền (C) 2010 Microchip Technology Inc Lỗi [939]; không có đối số tập tin ********** Xây dựng không thành công! **********
 
Tôi nghĩ rằng có một số sai lầm trong 0B program.Use ur thay vì "0xb" để đại diện cho nhị phân. Tôi đoán cảm biến khói đã được kết nối với các AN0/RA0 của ADC.U cần cấu hình first.PORTA ADC = 0xb00000000 là một PGM statmnt.Ur sai cần thiết để chờ đợi nghĩa là đầu vào, cảm biến == 1.
 
Ngoài ra kiểm tra bạn có trình biên dịch được thiết lập để sử dụng thiết bị đúng. Xây dựng báo cáo cho thấy nó là một 16F887 nhưng các tin nhắn trước đó nói 16F877. "(1273) thế hệ Mã bậc Toàn Giác không có sẵn trong chế độ Lite (cảnh báo)" chỉ có nghĩa là bạn đang sử dụng phiên bản miễn phí mà không có một số tính năng bổ sung, nó không phải là một lỗi, chỉ là một cảnh báo. Brian.
 

Welcome to EDABoard.com

Sponsor

Back
Top