Hi tech C có vấn đề?

banhquy

Trứng gà
Đầu tiên mình rất cảm ơn, và thực sự rất khâm phục tinh thần Pay It forward của các bạn. Mình thấy được sự tận tâm, qua các Tut rất công phu của nhóm.

Mình vừa bắt đầu nghiên cứu về Pic, (đã thử viết bằng ÁSM, CCS). Nay thử bắt đầu với HT-C. Nhưng thật kì lạ, khi mình thử đoạn chương trình đơn giản trong Bài 1- I/O của các bạn, code ko sai nhưng sao trình dịch lại báo lỗi. Sử dụng MPLAB và Hitech C Bản mới nhất vừa down trên Microchip.

Error [800] D:\Hoc tap\PIC\HTC\Bai 1 IO\Untitled.c; 2. undefined symbol "DEBUGDIS"
Error [800] D:\Hoc tap\PIC\HTC\Bai 1 IO\Untitled.c; 2. undefined symbol "LVPDIS"
Error [800] D:\Hoc tap\PIC\HTC\Bai 1 IO\Untitled.c; 2. undefined symbol "FCMDIS"
Error [800] D:\Hoc tap\PIC\HTC\Bai 1 IO\Untitled.c; 2. undefined symbol "IESODIS"
Error [800] D:\Hoc tap\PIC\HTC\Bai 1 IO\Untitled.c; 2. undefined symbol "SWBOREN"
Error [800] D:\Hoc tap\PIC\HTC\Bai 1 IO\Untitled.c; 2. undefined symbol "UNPROTECT"
Error [800] D:\Hoc tap\PIC\HTC\Bai 1 IO\Untitled.c; 2. undefined symbol "MCLREN"
Error [800] D:\Hoc tap\PIC\HTC\Bai 1 IO\Untitled.c; 2. undefined symbol "PWRTEN"
Error [800] D:\Hoc tap\PIC\HTC\Bai 1 IO\Untitled.c; 2. undefined symbol "WDTDIS"
Error [800] D:\Hoc tap\PIC\HTC\Bai 1 IO\Untitled.c; 2. undefined symbol "XT"
Error [800] D:\Hoc tap\PIC\HTC\Bai 1 IO\Untitled.c; 4. undefined symbol "BORV21"
Còn khi bỏ đi 2 dòng Config thì dịch được, chạy được, nhưng ko chạy trên Pic 16F887 thật!
Thật là đau đầu vì cái không đáng này! Bạn nào có cách giải quyết thì giúp mình nhé.

(Ko biết Hi tech C có chế độ chạy riêng rẽ như CCS ko? Chắc phải crack để dùng được bản Pro. Bạn nào đã thử chưa?)

Đây là code như trong bài hướng dẫn
Code:
#include <htc.h>
__CONFIG(XT & WDTDIS & PWRTEN & MCLREN & UNPROTECT & SWBOREN & IESODIS & FCMDIS & LVPDIS & DEBUGDIS); //1st config. Word

__CONFIG(BORV21); //2st config. Word*/

#define _XTAL_FREQ 	20000000 //tần số thạch anh 4Mhz
	// khai báo tần số thạch anh dùng cho lệnh delay
//Chương trình chính
void main(void)
{
	ANSEL=0;
	ANSELH=0;		//Tất cả các port là digital
	TRISB=0x00; 		//8 pins PortB là output
	PORTB=0xFF;		//Xuất mức “1”	
	while(1)
	{
		 PORTB=0x00;
		__delay_ms(150);
		 PORTB=0xFF;
		__delay_ms(150);
	};
}
 

banhquy

Trứng gà
cũng đang bị như bạn!
Theo như search được trên mạng thì đây là do bản 9.81 có nhiều thay đổi về phần này. Đang search và đọc help cũng như file pic16f887.h để tra nhưng chưa ra.

Ai làm rồi cho cái __config sẵn thì tốt quá!
 

banhquy

Trứng gà
config lại theo Hi tech C 9.81 -> chạy tốt, xem ở file 16F887.h (tuỳ chip sử dụng)

Code:
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF); //1st config. Word

__CONFIG(BOR4V_BOR21V); //2st config. Word
 

ongBacLoc

Trứng gà
bổ sung:
Trước khi code cho 1 con Pic nào đó với HT-PIC bạn nên đọc qua file header của con chip đó ở thư mục \include của bộ cài, cụ thể ở đay là file pic16f887.h, file này định nghĩa tất cả các thanh ghi của con chip. Ở các version khác nhau HTPIC định nghĩa các thanh ghi này có đôi chỗ khác nhau có thể gây ra lỗi như của bạn( chẳng hạn ở bài về ADC có thể sẽ gặp lỗi ở lệnh set GODONE, phải là GO_DONE mới đúng ..v.v.)
Thân
 

Tan Sy Nguyen

Cố Vấn CLB
Staff member
lỗi này mình cũng gặp.do trình dịch mới ko nhận đoạn code này.nếu bạn đang cài 2 phiên bản Hi-TechC thì có thể làm như sau để chọn trình dịch
nạp project xong bạn vào Project>Build option>Project>đến thẻ driver.chọn phiên bản 9.65,phía dưới sẽ hiện lên move up.bạn bấm vào rồi ok.
như vậy là MPLAB bây giờ sẽ dịch theo phiên bản cũ.
còn nếu bạn chỉ cài phiên bản mới thì thôi,chịu khó gỡ ra cài lại cái cũ hơn.chương trình dạy CLB đang chạy theo phiên bản cũ
 
Top