![]() |
Hỏi về MPLAB
Xin lỗi các anh, em mún hỏi về cách sử dụng MPLAB. Híc, em không biết sao mà em đã copy mã của bác F vào rùi nhưng mừ RUN thì không thấy gì hết cả. Các bác có thể cho em xin tài liệu hướng dẫn MPLAB được không ạ! Cảm ơn.
namqn: Bạn nói rõ hơn là bạn muốn làm gì với MPLAB. Tài liệu của MPLAB thì vào Microchip download bản mới nhất (dùng chức năng tìm tài liệu để tìm các tài liệu sau: DS51281, DS51519). |
MPLAB không cần dùng Mã gì cả, anh Nam đã nhắn rồi.
Chỉ khi nào các bạn cần nhúng các trình dịch khác vào như C30 hoặc những cái mà nó không cho, thì mới cần phải nhúng vào bẻ khóa. Chúc vui |
Ý em là, em có xem bài "học PIC trong một ngày" của bác F, em dùng MPLAB để soạn CODE ( thực ra là em chép từ bài của bác F) sau đó thử Debug trước khi convert thành file hex để đưa vào Proteus làm giả lập! Nhưng mà khi em dùng MPLAB SIM để debug thì chẳng thấy có hiện tượng chi cả :(, em không hiểu làm sao để biết code mình đúng hay sai đây! Nếu nạp vào Proteus thì chỉ nhận được một thông báo "lạnh lùng" "FATAL: [U1] Program or EEPROM data has invalid address [1000] for this device". Cảm ơn các anh đã giúp đỡ!
|
Em dùng đoạn code nào? em gửi lại đoạn code đó lên cho mọi người xem luôn nhé.
Chúc vui |
Hix, em dùng y chang đoạn CODE của bác F, chỉ thay đổi thành con P16F877A, em đã thêm cả header files và linker files. Nhưng mừ khi Build thì lại báo lỗi sau " Processor superseded by command line. Verify processor symbol." Xin lỗi vì làm phiền các bác nhưng em thiệt chả bít làm sao T_T
;================================================= ======= TITLE "Mach test LED_1" PROCESSOR P16F877A INCLUDE <P16F877A.inc> __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF &_HS_OSC ;================================================= ====== ORG 0x0000 GOTO MAIN ORG 0x0005 MAIN BANKSEL TRISB ; bank select CLRF TRISB ; trisb = 00000000 ; portb = output BANKSEL PORTB BSF PORTB, 0 ; rb0 = 1 ; RB0 = 5V GOTO $ ; dung chuong trinh tai day ; vong lap tai cho^~ ; khong bao gio ket thuc END. ; lenh bat buoc de ket thuc ;================================================= =============================== |
Trích:
Nếu bạn chọn bộ xử lý tương thích với bộ xử lý được mô tả trong tập tin nguồn thì chương trình dịch ra sẽ chạy tốt. Thân, |
^^, cảm ơn bác Nam nhìu, em đã làm được rùi :D, nhưng bác ơi, cho em hỏi thêm 1 chút nữa! Em nghe bác F bảo là học PIC cần mạch nạp, cht nạp... Em mún hỏi là liệu em có thể không dùng mấy cái đó vội mà dùng Proteus để học được không ạ. Có bất lợi gì không? Em xin cảm ơn bác.
|
Trích:
Thân, |
Hức, bác Nam ơi, em lại phải làm phiền bác rùi! MPLAB xong rùi nhưng khi em chuyển qua bên Proteus giả lập lại báo lỗi, bác xem hộ em với, em chả hiểu nó nói gì nữa. Sau khi em nap file hex vào rồi chạy thử nó báo lỗi sau
[U1] Loading HEX file '..\..\..\..\Documents and Settings\Administrator\My Documents\test-copy.hex'. FATAL: [U1] Program or EEPROM data has invalid address [1000] for this device Real Time Simulation failed to start Real Time Simulation FAILED. hức, bài này em đã post ở chỗ khác nhưng hình như bác không thấy. Em xin lỗi nhưng em bí quá làm liều bác ạ. |
Trích:
Bạn kiểm tra lại xem mã .hex được dịch ra có nằm lọt vào không gian địa chỉ bộ nhớ Flash của chip hay không. Dùng một phần mềm nào đó như WinPic800 để load tập tin .hex vào, và xem mã chương trình nằm ở vùng nhớ nào. Kiểm tra cả bộ nhớ chương trình lẫn EEPROM, chọn đúng chip sẽ được dùng trong Proteus khi mở WinPic800. Thân, |
Vâng, cảm ơn bác. Em sẽ thử ngay mặc dù chưa bít cái winpic800 là cái gì cả :d
|
Hức, bác ơi, em đã kiểm tra lại bộ nhớ như lời bác nói, chỉ từ 0x00 đến 0x13 thui, chắc là nằm trong bộ nhớ Flash rùi. nhưng nó vẫn báo lỗi như thế ( mặc dù có thay đổi chút đỉnh)
Warning: [U1] CFGWORD2 not implemented FATAL: [U1] Program or EEPROM data has invalid address [2000] for this device Real Time Simulation failed to start Real Time Simulation FAILED. Sau đó em quay qua phần Help để xem hướng dẫn thì nó bảo add file source code (ten_file*.asm) của mình vào, em làm theo thì nó lại bảo kiếm không ra file ten_file*.COD, hức, đúng là không có file COD thật. Làm sao cho MPLAB tạo ra file COD cho mình hả bác. Hức, em xin lỗi nhưng mới tập tọng vào nghề hỏi hơi nhìu, bác thông cảm cho em. Híc, mấy bữa nay mắc cái Proteus chạy không được nên không biết làm tiếp thế nào Y_Y |
Trích:
Mình đã sử dụng Proteus cũng được 1 tháng rùi nhưng chưa bao giờ thấy hiện tượng như bạn nêu trên. Bạn nên đưa hình ảnh mô phỏng trên Proteus và Source Code lên đây luôn đi mình sẽ giúp bạn từng bước (nếu có thể). Anh Namqn bận lắm do đó mình sẽ trả lời giúp bạn. |
Cảm ơn bạn, đây là CODE của mình nhưng mình chạy với MPLAB SIM không có vấn đề nên mình nghĩ là do không biết xài Proteus thui!
;================================================= ============== ;Chuong trinh dieu khien LED bat tat ;An 1 cai LED sang, an tiep LED tat ;================================================= ============== Title "LED_2" Processor p16f88 Include <p16f88.inc> ;================================================= =============== ORG 0x0000 Goto Main ORG 0x0005 Main banksel TRISB clrf TRISB movlw 2h movwf TRISB Goto Check Check Btfsc PORTB,1 Goto Check Call Switch Switch btfss PORTB,0 bsf PORTB,0 bcf PORTB,0 Return End Còn đây là file *.DSN dùng trong Proteus của mình, mình không chụp hết được cả cái mạch ^^ http://s19.quicksharing.com/v/6517024/test02.DSN.html Còn con Chip thì mình dùng 16F88 trong Proteus, mình không biết nó sai ở đâu nữa. Cảm ơn spirit! |
Hello chipchipvn,đọc sơ qua mã nguồn bạn viết ở trên thấy rằng nó không tối ưu.Để tối nay mình về sẽ test lại giùm bạn và trả lời bạn trong thời gian sớm nhất.
Mình nghĩ bạn nên học và viết cho Pic 16F877A luôn đi bởi vì chức năng của nó là nhất trong dòng 16F và trên PICVIETNAM có rất nhiều bài ứng dụng cho nó( bạn có thể search ). Còn học nó như thế nào thì trên diẽn đàn cũng đã nói rất nhiều,bạn chịu khó tìm kiếm nhé. Khi học Pic thì cố gắng làm trên mạch thật bởi vì Proteus nhiều lúc mô phỏng chạy được nhưng khi đưa trên mạch thật thì bó phép(vì các điều kiện bên ngoài không lý tưởng...). Về mạch nạp thì bạn có thể mua mạch nạp của PICVIETNAM để ủng hộ(giá rất sinh viên).Về mạch thực hành thì bạn có thể thiết kế cho riêng mình. Nếu ngại làm thì bạn có thể mua mạch của lớp học PIC ở Hà Nội do anh BINHANH làm.Khoảng 400k thôi nhưng vừa nạp và thục hành luôn. Chúc bạn có nhiều niềm vui khi hoc Pic. |
ừa, mình biết mã này không là tối ưu, chẳng qua mún viết một cái đơn giản để kiểm tra tay Proteus chạy thế nào đã. Mình cũng mới học PIC thui, nhưng cái Pro lại dở chứng, thế là mấy hôm nay chỉ có viết CODE chay bằng MPLAB ( nói chung cũng hơi bùn). Bạn xem lại cái lỗi với Proteus hộ mình với nhé. Mình cũng mún làm mạch nạp... nhưng mình bận quá, không tự làm được, mua thì dễ nhưng mình không thích ^^ nên tạm thời mình chỉ có thể học trên PC thôi, khi nào rỗi hơn mình mới có thể làm in-c được. Thân
À, spirit cho mình Y! đi (Y! của mình là live4vietnam) |
Chương trình của bạn mình test rồi
Thứ 1: về source code + Bạn viết không theo một logic nào cả cái này là đặc điểm chung của người mới biết thôi lúc trước mình cũng như vậy. Bạn nên viết giải thuật chương trình ra ( bài của bạn đâu khó để viết giải thuật đâu phải không ) để dẽ dàng kiểm tra lỗi sai và Debug. Chương trinh của bạn sai ở những điểm này: Main banksel TRISB clrf TRISB movlw 2h movwf TRISB * Goto Check Check Btfsc PORTB,1 Goto Check Call Switch Switch ** btfss PORTB,0 bsf PORTB,0 bcf PORTB,0 Return *** End * : bạn cần banksel PORTB ( chuyển về bank 0 ) vì bạn đang ở bank 1 ** :Đoạn chương trình Switch này không hợp lí ( đọc kĩ sẽ thấy thôi mà ^_^) ***:thay bằng goto Check Thứ 2 : Bạn không cần vẽ thạch anh,tụ bù nhiệt 30pf,nguồn 5V...mà chỉ cần led và button ( nhớ button có thêm điện trở kéo nguồn hoặc bcf OPTION_REG,7 ) là đủ. Thứ 3 : Để chỉnh tần số Pic trong Proteus thì click chuột phải xong click chuột trái ( làm từ từ thôi ) có chỗ chọn tần số trong hộp thoại hiện ra ( ví dụ chọn 32.768Khz,4Mhz...).Để lấy linh kiện thì gõ P -> gõ tên linh kiện ( ví dụ 7seg,LCD,led (có màu),pic16f877 ... có gì bí mình sẽ chỉ thêm) Bạn mới học Pic thì qua luồng này lấy tài liệu Nigel về http://www.picvietnam.com/forum//showthread.php?t=9 bạn nên đọc kĩ những bài tập của Nigel,ông ta viết rất hay và dễ hiểu và các tutorial của Mod Chính ở luồng này http://www.picvietnam.com/forum//showthread.php?t=238 trình độ khá rồi thì qua luồng này http://www.picvietnam.com/forum//showthread.php?t=325 Có gì thì mail cho mình theo địa chỉ này spirit317vn@yahoo.com hoặc post lên đây cũng được. Thôi nhé,chúc bạn thành công. |
Trích:
|
những câu hỏi thường gặp
Chào các sư huynh
Các sư huynh chỉ giúp dùm mình, không hiểu tại sao mình biên dịch chương trình led (đã viết sản chương trình) khi biên dịch thì báo lổi A# Device before this line. Trong khi chương trình viêt cho P16F84A. Mong các sư huynh chi giúp |
Trích:
Với thông báo lỗi bạn đã nêu thì tôi có thể dịch cho bạn như sau: "Một # linh kiện phía trước dòng này". Tôi cũng không rõ thông báo lỗi này đề cập đến điều gì. Thân, |
Lỗi thư viện toán học
Cảm ơn mọi người đã trả lời cho luồng thông tin của mình . Vấn để lần trước mình hỏi là về lỗi thư viện số thực khi quy đổi các số từ dạng khác về số thực . Và ngôn ngữ mình viêt đó là ngôn ngữ C . Ngôn ngữ bậc cao . Mọi người hãy giải đáp nốt cho mình nha
|
em chao thay QNAM hom qua thay cho em doan code ve dich tren MPLABIDE V8.50
bao loi .em moi hoc duoc mot ngay ,mong thay huong dan cho em them . Executing: "D:\Program Files\HI-TECH Software\PICC\9.70\bin\picc.exe" -o3.cof -m3.map --summary=default --output=default --chip=16F887 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" (1273) Omniscient Code Generation not available in Lite mode (warning) HI-TECH C Compiler for PIC10/12/16 MCUs (Lite Mode) V9.70 Copyright (C) 2009 Microchip Technology Inc. Error [939] ; . no file arguments ********** Build failed! ********** |
Trích:
Thân, |
//bai tap nut nhan
#include<htc.h> __CONFIG(HS&PWRTEN&MCLREN&UNPROTECT&DUNPROTECT&SWB OREN&LVPDIS); __CONFIG(BORV21); #define _XTAL_FREQ 20000000 void main(void){ unsigned char i; ANSEL =0X00; RBPU =0; TRISB =0XFF; TRISE =0XF8; PORTE =0X00; while(1){ //for(i=0;i<10;i++){ //__delay_ms (30); //__delay_ms (150); //} if(RB2 ==1) RE2 =i; else RE2 =0; PORTE^ =0X07;} } em chào thầy sau đoạn code nầy không chạy được ,nút nhấn không tác động gì hết đên hai con leds |
thầy cho em xin lads 2 và 3 mà thầy giảng trên lơp đia chĩ em (blequangbinh@yahoo.com)
em cam ơn thây |
Chào mọi người! Mình có vấn đề này xin được chỉ giáo
Mình không biết chương trình MPLAB sẽ biên dịch như thế nào khi mình add hơn 2 file.c vào source file. |
Bạn yên chí rằng chương trình biên dịch sẽ tự tìm hàm main() của bạn :D
|
Múi giờ GMT. Hiện tại là 01:33 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam