PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 03-04-2011, 10:28 AM   #1
nangvang
Đệ tử 1 túi
 
Tham gia ngày: Nov 2010
Bài gửi: 23
:
hỏi về lập trình cơ bản cho pic6f877a

các bac ơi! em mới bắt đầu làm quen với dòng pic
em đã đọc tài liệu và bắt tay vào lập trình với nhưng ví dụ cơ bản nhung không hiểu sao code của em vẫn không chạy dc...toàn báo lỗi mặc dù em đã viết theo đúng như trong tài liệu hướng dẫn.mong các bác check code giúp em với
ah em lập trình bằng ccs c trong MPLAP
code của em là :
#include <16f877a.h>
//#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
void main()
{

TRISB = 0x00;
PORTB = 0xFF;
While(1)
{
PORTB = 0;
delay_ms(250);
PORTB = 0xFF;
delay_ms(250);
}
}


trình dịch báo lỗi là :
Executing: "C:\Program files\Picc\CCSC.exe" +FM "nhay led don gian.c" +DF +LN +T +A +M +Z +Y=9 +EA
*** Error 18 "nhay led don gian.c" Line 1(9,20): File can not be opened
Not in local "D:\cac ho vi dieu khien\pic\cac vi du thuc hanh\led don\16f877a.h"
*** Error 128 "nhay led don gian.c" Line 3(9,19): A #DEVICE required before this line
*** "nhay led don gian.c" Line 3: Error #128: A #DEVICE required before this line
*** "nhay led don gian.c" Line 4: Error #111: Unknown keyword in #FUSES "NOWRT"
*** "nhay led don gian.c" Line 6: Error #128: A #DEVICE required before this line
*** "nhay led don gian.c" Line 9: Error #12: Undefined identifier TRISB
*** "nhay led don gian.c" Line 10: Error #12: Undefined identifier PORTB
*** "nhay led don gian.c" Line 13: Error #12: Undefined identifier PORTB
*** "nhay led don gian.c" Line 15: Error #12: Undefined identifier PORTB
9 Errors, 0 Warnings.
Halting build on first failure as requested.
BUILD FAILED: Sun Apr 03 22:11:13 2011
nangvang vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2011, 10:33 AM   #2
hcmut.khoamaisi
Đệ tử 4 túi
 
hcmut.khoamaisi's Avatar
 
Tham gia ngày: Dec 2009
Nơi Cư Ngụ: TPHCM
Bài gửi: 79
:
Send a message via Yahoo to hcmut.khoamaisi
Theo mình nghĩ với lỗi như vậy thì trình biên dịch của bạn có vấn đề.Còn về cái code mình thấy không có vấn đề gì!Bạn nên thử tải bản CCS khác xem sao
__________________
My blog: http://autumnneverreturn.blogspot.com/
Đối thủ khó chiến thắng nhất là bản thân !!!
hcmut.khoamaisi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2011, 10:41 AM   #3
nangvang
Đệ tử 1 túi
 
Tham gia ngày: Nov 2010
Bài gửi: 23
:
em lúc đầu cài MPlap sau đó cài C30 và cài thêm PIC C Compiler CCS PCWHD v4.0
như vậy có vấn đề j không anh.
nangvang vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2011, 11:01 PM   #4
hcmut.khoamaisi
Đệ tử 4 túi
 
hcmut.khoamaisi's Avatar
 
Tham gia ngày: Dec 2009
Nơi Cư Ngụ: TPHCM
Bài gửi: 79
:
Send a message via Yahoo to hcmut.khoamaisi
Bạn đã set môi trường trong MP LAB chưa?
__________________
My blog: http://autumnneverreturn.blogspot.com/
Đối thủ khó chiến thắng nhất là bản thân !!!
hcmut.khoamaisi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-04-2011, 07:45 PM   #5
mistdamo
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 3
:
Bạn bỏ dấu "//" truớc dòng "//#include <def_877a.h>" này thử xem. Vì trong nó chứa file định nghĩa cho portB mà !
mistdamo vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-04-2011, 12:22 AM   #6
ermine
Nhập môn đệ tử
 
Tham gia ngày: Mar 2011
Bài gửi: 2
:
nếu bạn cho dòng #include <def_877a.h> trong chú thích thì code phải là
#include <16f877a.h>
//#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
void main()
{

set_tris_b(0x00);
output_b(0x00);
While(1)
{
output_b(0x00);
delay_ms(250);
output_b(0xff);
delay_ms(250);
}
}
ermine vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-04-2011, 10:06 AM   #7
thanh_30april
Nhập môn đệ tử
 
Tham gia ngày: Jan 2010
Bài gửi: 9
:
PWM voi pic 16f877a

Cac bac cho em hoi:
Em lap trinh dung chan ccp1 de tao xung PWM nhung khong hieu sao em mo phong va do tin hieu o chan PWM khong thay gi,mong cac bac chi giup.Day la code cua chuong trinh:
/////////////////////////////////////
#include <16f877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#byte porta=0x05
#use fast_io(a)
#use fast_io(c)
void main()
{
set_tris_a(0x00);
set_tris_c(0x00);
SETUP_CCP1(ccp_pwm);
SETUP_TIMER_2(T2_DIV_BY_4,200,1);
set_pwm1_duty(100);
while(1)
{
output_high(pin_a0);
delay_ms(10);
output_low(pin_a0);
delay_ms(10);
}
}

Em gui kem ca file mo phong.
thanh_30april vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-04-2011, 10:55 AM   #8
nangvang
Đệ tử 1 túi
 
Tham gia ngày: Nov 2010
Bài gửi: 23
:
các bác ơi... theo em biết thì muốn sử dụng 2 thanh ghi port và tris để thiết lập cho một cổng nào đó thì mình phải khai báo hàm #include <def_877a.h> nó chứa file định nghĩa cho cổng.. nhưng khi em khai báo thì trình dịch cứ báo lỗi là "File can not be opened"
các bác có thể giải thích giúp em dc k?
ah mà nhân tiện các bác giải thích giúp em nếu mình muốn dùng 2 thanh ghi TRIS
PORT thì mình mình phải khai báo ntn ?
thank trc các bác nha
nangvang vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-04-2011, 09:23 PM   #9
ermine
Nhập môn đệ tử
 
Tham gia ngày: Mar 2011
Bài gửi: 2
:
Trích:
#define W 0
#define F 1

// register files
#byte INDF =0x00
#byte TMR0 =0x01
#byte PCL =0x02
#byte STATUS =0x03
#byte FSR =0x04
#device *=14 adc=8
#byte PORTA =0x05
#byte PORTB =0x06
#byte PORTC =0x07
#byte PORTD =0x08
#byte PORTE =0x09

#byte EEDATA =0x10C
#byte EEADR =0x10D
#byte EEDATH =0x10E
#byte EEADRH =0x10F
#byte ADCON0 =0x1F
#byte ADCON1 =0x9F
#byte ADRESH =0x9F
#byte ADSESL =0x9F

#byte PCLATH =0x0a
#byte INTCON =0x0b
#byte PIR1 =0x0c
#byte PIR2 =0x0d
#byte PIE1 =0x8c
#byte PIE2 =0x8d
#byte OPTION_REG =0x81
#byte TRISA =0x85
#byte TRISB =0x86
#byte TRISC =0x87
#byte TRISD =0x88
#byte TRISE =0x89

#byte EECON1 =0x18C
#byte EECON2 =0x18D

#byte SSPBUF =0x13
#byte SSPCON =0x14
#byte SSPCON2 =0x91
#byte SSPADD =0x93
#byte SSPSTAT =0x94
// SSPCON bit
#bit SSPWCOL = 0x14.7
#bit SSPOV = 0x14.6
#bit SSPEN = 0x14.5
#bit SSPCKP = 0x14.4
#bit SSPM3 = 0x14.3
#bit SSPM2 = 0x14.2
#bit SSPM1 = 0x14.1
#bit SSPM0 = 0x14.0
// SSPSTAT bit
#bit SSPSMP = 0x94.7
#bit SSPCKE = 0x94.6
#bit SSPDA = 0x94.5
#bit SSPP = 0x94.4
#bit SSPS = 0x94.3
#bit SSPRW = 0x94.2
#bit SSPUA = 0x94.1
#bit SSPBF = 0x94.0

// BIT DEFINITION
#bit ra5 =0x05.5
#bit ra4 =0x05.4
#bit ra3 =0x05.3
#bit ra2 =0x05.2
#bit ra1 =0x05.1
#bit ra0 =0x05.0

#bit rb7 =0x06.7
#bit rb6 =0x06.6
#bit rb5 =0x06.5
#bit rb4 =0x06.4
#bit rb3 =0x06.3
#bit rb2 =0x06.2
#bit rb1 =0x06.1
#bit rb0 =0x06.0
#bit rC7 =0x07.7
#bit rC6 =0x07.6
#bit rC5 =0x07.5
#bit rC4 =0x07.4
#bit rC3 =0x07.3
#bit rC2 =0x07.2
#bit rC1 =0x07.1
#bit rC0 =0x07.0

#bit rD7 =0x08.7
#bit rD6 =0x08.6
#bit rD5 =0x08.5
#bit rD4 =0x08.4
#bit rD3 =0x08.3
#bit rD2 =0x08.2
#bit rD1 =0x08.1
#bit rD0 =0x08.0
#bit rE2 =0x09.2
#bit rE1 =0x09.1
#bit rE0 =0x09.0


#bit trisa5 =0x85.5
#bit trisa4 =0x85.4
#bit trisa3 =0x85.3
#bit trisa2 =0x85.2
#bit trisa1 =0x85.1
#bit trisa0 =0x85.0

#bit trisb7 =0x86.7
#bit trisb6 =0x86.6
#bit trisb5 =0x86.5
#bit trisb4 =0x86.4
#bit trisb3 =0x86.3
#bit trisb2 =0x86.2
#bit trisb1 =0x86.1
#bit trisb0 =0x86.0
#bit trisc7 =0x87.7
#bit trisc6 =0x87.6
#bit trisc5 =0x87.5
#bit trisc4 =0x87.4
#bit trisc3 =0x87.3
#bit trisc2 =0x87.2
#bit trisc1 =0x87.1
#bit trisc0 =0x87.0

#bit trisd7 =0x88.7
#bit trisd6 =0x88.6
#bit trisd5 =0x88.5
#bit trisd4 =0x88.4
#bit trisd3 =0x88.3
#bit trisd2 =0x88.2
#bit trisd1 =0x88.1
#bit trisd0 =0x88.0

#bit trise2 =0x89.2
#bit trise1 =0x89.1
#bit trise0 =0x89.0

// INTCON Bits for C
#bit gie = 0x0b.7
#bit peie = 0x0b.6
#bit tmr0ie = 0x0b.5
#bit int0ie = 0x0b.4
#bit rbie = 0x0b.3
#bit tmr0if = 0x0b.2
#bit int0if = 0x0b.1
#bit rbif = 0x0b.0

// PIR1 for C
#bit pspif = 0x0c.7
#bit adif = 0x0c.6
#bit rcif = 0x0c.5
#bit txif = 0x0c.4
#bit sspif = 0x0c.3
#bit ccp1if = 0x0c.2
#bit tmr2if = 0x0c.1
#bit tmr1if = 0x0c.0
//PIR2 for C
#bit cmif = 0x0d.6
#bit eeif = 0x0d.4
#bit bclif = 0x0d.3
#bit ccp2if = 0x0d.0
// PIE1 for C
#bit adie = 0x8c.6
#bit rcie = 0x8c.5
#bit txie = 0x8c.4
#bit sspie = 0x8c.3
#bit ccp1ie = 0x8c.2
#bit tmr2ie = 0x8c.1
#bit tmr1ie = 0x8c.0

//PIE2 for C
#bit osfie = 0x8d.7
#bit cmie = 0x8d.6
#bit eeie = 0x8d.4

// OPTION Bits
#bit not_rbpu = 0x81.7
#bit intedg = 0x81.6
#bit t0cs = 0x81.5
#bit t0se = 0x81.4
#bit psa = 0x81.3
#bit ps2 = 0x81.2
#bit ps1 = 0x81.1
#bit ps0 = 0x81.0
// EECON1 Bits
#bit eepgd = 0x18c.7
#bit free = 0x18C.4
#bit wrerr = 0x18C.3
#bit wren = 0x18C.2
#bit wr = 0x18C.1
#bit rd = 0x18C.0

//ADCON0
#bit CHS0 =0x1F.3
#bit CHS1 =0x1F.4
#bit CHS2 =0x1F.5
nội dung file <def_877a.h> toàn là các định nghĩa thôi.
bạn tạo file header (.h) rồi paste vào
C1:sau đó trong .c khai báo thêm dòng #include "Đường dẫn tới file header"
C2: hoặc copy file đó vào folder Devices trong thư mục cài đặt thì chỉ cần #include <def_877a.h>

nếu ko muốn dùng header, chỉ cần đọc file <def_977a.h> rồi thêm đoạn code khai báo như này trong ctrình
#byte PORTB =0x06
#byte TRISB =0x86
ermine vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-04-2011, 12:47 AM   #10
nangvang
Đệ tử 1 túi
 
Tham gia ngày: Nov 2010
Bài gửi: 23
:
cám on anh ermine !
em da tao ra file def_877a.h va copy vào PICC/Device . Compile lại => chuơng trình chạy OK.
mong anh giúp đõ em những câu hỏi về sau.cảm ơn anh

thay đổi nội dung bởi: nangvang, 07-04-2011 lúc 02:02 AM.
nangvang vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 11:10 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam