Hi-Tech PICC Eğitim dökümanı

Başlatan arslan74, 28 Ocak 2008, 03:19:44

arslan74

Merhaba,

Hi-Tech giriş seviyesinde bir eğitim dökümanı hazırladım. Yorumlarınız bekliyorum. Devamı gelecek İnşallah.

http://www.4shared.com/file/36131657/6f7b63e8/Hi-Tech_Egitim.html?dirPwdVerified=5d4e04ae

Password: 
www.picproje.org


Selamlar

Mod Notu: Bu güzel dökümanlar arasına teşekkür veya lüzumsuz sorular ile girilmesin, aksi taktirde dökümanı korumak için silinecektir.

arslan74


M_B

Arslan74 hocam oncelıkle vermıs oldugunuz dokuman ve bılgıler ıcın tsk ederım. Yararlanmaya calısıyorum.
Yalnız takıldıgım nokta  Mlap v8.01 kurdum ve H-Tech C yi aktıf ettıremedım  ( Project Toolsuite kısmında HI-TECH PICC Toolsuite kısmı bende yok ) Hi-Tech C programı nı kurarken en sonunda PİCC-18_Mplab6_setup programını da kurdum ama bır turlu o kısım bende aktıf olmadı. Baska nasıl yapabılırım.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

arslan74

Merhaba,

Bununla ilgli kısa bir yazı hazırladım umarım işiniza yarar.

Mplap altında PIC18 derleyicisini eklemek ve proje oluşturmak.

http://www.4shared.com/file/36200799/5c3c04cf/Hi-Tech_PICC18_Egitim.html


Selamlar

arslan74

Merhaba,

Vakit buldukça örnek kod vermeye devam etmek istiyorum.

Şimdi yaptığımız basit karaşimşek kodunu nasıl değişik şeklilerde yazabiliriz diye denemeler yapacağız. tek bir örnek vermek olayın tek bir cözümü varmış gibi bir yanlış algılamaya sebep vermemesi için başka kodlarla aynı çözüme gidelim. Switch case lere değişik bir kod yazalım şimdide.

while (1){ // program döngüsü
		
		static unsigned char sayac = 0;
			
		switch (sayac++){
			
			case  0 :	PORTB = 0b10000000; break;
			case  1 :	PORTB = 0b01000000; break;
			case  2 :	PORTB = 0b00100000; break;
			case  3 :	PORTB = 0b00010000; break;
			case  4 :	PORTB = 0b00001000; break;
			case  5 :	PORTB = 0b00000100; break;
			case  6 :	PORTB = 0b00000010; break;
			case  7 :	PORTB = 0b00000001; break;
			case  8 :	PORTB = 0b00000001; break;
			case  9 :	PORTB = 0b00000010; break;
			case 10 :	PORTB = 0b00000100; break;
			case 11 :	PORTB = 0b00001000; break;
			case 12 :	PORTB = 0b00010000; break;
			case 13 :	PORTB = 0b00100000; break;
			case 14 :	PORTB = 0b01000000; break;
			case 15 :	PORTB = 0b10000000; break;
		}
		
		sayac &= 0b00001111;
		
		DelayMs(100);
	
	}


switch komutu içindeki sayac değişkenin değeri neyse ilgili case sabitine atlar. bu işlemden sonra sayac değeri bir artar. case sabitlerinin sonundaki break komutu switch işleminden cıkmak için kullanılıyor. sayac diyelim 1 olsun o zaman case 1: bölgesine atlar.
case  1 :	PORTB = 0b01000000; break;


PORTB e ilgili değeri atadıktan sonra break ile case işleminden cıkar. bundan sonraki kod ise;

sayac &= 0b00001111;


Sayac değerini 15 AND liyoruz. Bu işlem sonunda sayac değeri hiç bir zaman 15'i gecemiyor.

bunu başka bir şekilde de yazabilirdik. örneğin.

 if (sayac > 15 )
   sayac = 0;


şeklinde yapabiliriz ancak bitsel işlemler cok daha hızlı ve kapasite olarak daha az yer kapladıkları için bitsel işlemleri tercih ediyorum genellikle.

programın sonunda ki;

DelayMs(100);


Kayma hızını belirliyor. Eğer bu değer azalırsa kayma hızı artmış olur.


Burada bir şeye dikkat cekmek istiyorum.

static unsigned char sayac = 0;


Dikkat edilirse başında " static " anahtarı kullanılmış. Bu anahtar özel bir anlam yüklüyor sayac değerine. Oda sayac değişkenini sadece ilk acılışta sıfır değerini ata anlamında kullanılıyor. Static anahtarı global bir değişken gibi davranmasını sağlıyor. "static" anahtarını kullanmamış olsaydık o zaman bizim program sadece "case 0:" bölgesine girerdi, cünkü while döngünün başında geldiğinde "sayac" değişkenini sürekli sıfır değerini atayacaktı.


Çalışmalarınızda başarılar.

erkan614

sonunda boşluk yavaştan hitech örenmeye başladım
şimdi iyi bi öğrenci olup takıldığım yerler hakkında soru sormak lazım

1)
#include <pic.h>
#include "delay.h"


program basında yazılan bu satırların işlevi konusunda kısa bir cevap
az çok belli zaten

2)
Error   [141] C:\Hi-tech\karas.c; 4.18 can't open include file "delay.h": No such file or directory
Make: The target "C:\Hi-tech\delay.p1" is out of date.
Executing: "C:\Program Files\HI-TECH Software\PICC\PRO\9.60\bin\picc.exe" --pass1 "C:\Library C\delay.c" -q --chip=16F628A -P --runtime=default --opt=default -g --asmlist "--errformat=Error   [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" 

********** Build failed! **************


hatası ile karşılaşmamın sebebi nedir?

3)1 deki kodu
#include <pic.h>
//#include "delay.h"


yaptığımda ise aldığım
HI-TECH C PRO for the PIC10/12/16 MCU family  V9.60PL3
Copyright (C) 1984-2008 HI-TECH SOFTWARE
Error   [1098] C:\Library C\delay.c; 12. conflicting declarations for variable "_DelayMs" (C:\Hi-tech\karas.c:42)

********** Build failed! **************


hatasının sebebi "_DelayMs" nin tanımlanmamış olmasımıdır?

soruların cevaplanması için hakımmdaki gereken bilgiler

program:
// Kara simsek prog

#include <pic.h>
//#include "delay.h"

//__IDLOC(0123);
// Sigorta ayarlarının yapıldığı yer
__CONFIG(PROTECT & CPD & INTIO & MCLRDIS & WDTDIS & LVPDIS & PWRTEN & BOREN );

void main(void) // Ana program

{
	TRISA = 0b00000000;
	TRISB = 0b00000000;
	PORTA = 0b00000000;
	PORTB = 0b00000000;
	OPTION = 0b00000000; // PullUp dirençleri devreye sokar.
	CMCON = 0x07; // PORTA analog pinlerini kapatır. PortA Dijitale dönüştür.


	while (1){ // program döngüsü
		static unsigned char sayac = 0;
		switch (sayac++){
			case 0 : PORTB = 0b10000000; break;
			case 1 : PORTB = 0b01000000; break;
			case 2 : PORTB = 0b00100000; break;
			case 3 : PORTB = 0b00010000; break;
			case 4 : PORTB = 0b00001000; break;
			case 5 : PORTB = 0b00000100; break;
			case 6 : PORTB = 0b00000010; break;
			case 7 : PORTB = 0b00000001; break;
			case 8 : PORTB = 0b00000001; break;
			case 9 : PORTB = 0b00000010; break;
			case 10 : PORTB = 0b00000100; break;
			case 11 : PORTB = 0b00001000; break;
			case 12 : PORTB = 0b00010000; break;
			case 13 : PORTB = 0b00100000; break;
			case 14 : PORTB = 0b01000000; break;
			case 15 : PORTB = 0b10000000; break;
		}
		sayac &= 0b00001111;
		DelayMs(100);
	}
}


delay.c ve delay.h proje dosyasına ilk derste söylediğiniz gibi eklenmiştir işlemci 16f628a seçilmiş olup hitech derleyicisi kazım abinin verdiği kürekli 9.60 pl3 tür

Erol YILMAZ

sen bu Pro 9.60 PL3 ü çalıştır, tebrik edicem seni :))))

erkan614

:oops: oops çok pardon
HI-TECH C PRO for the PIC10-12-16 MCU Family V9.60PL4

pl3 değil pl4 yüklemişim bu sabah değiştirdim butun versiyonları silip bir bunu bıraktım ama dünde ayni problem vardı :(

peki hangisi çalışır bir sürü link verilmiş en stabili hangisi?
10-12-16 ailesi için ve 18 ailesi için hangilerini yukliyim

edit: pl4 yüklü olmasına rağmen hata mesajında pl3 gösteriyor şimdi farkettim
HI-TECH C PRO for the PIC10/12/16 MCU family  V9.60PL3
Copyright (C) 1984-2008 HI-TECH SOFTWARE
Error   [1098] C:\Library C\delay.c; 12. conflicting declarations for variable "_DelayMs" (C:\Hi-tech\karas.c:42)

********** Build failed! **************

M_B

HI-TECH PICC V8.05PL2 Formumda var.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

KAZIMUGUR


erkan614

// Kara simsek prog

#include <pic.h>
//#include "delay.h"

#include <htc.h>
#ifndef _XTAL_FREQ
 // Unless already defined assume 4MHz system frequency
 // This definition is required to calibrate __delay_us() and __delay_ms()
 #define _XTAL_FREQ 4000000
#endif

//__IDLOC(0123);
// Sigorta ayarlarının yapıldığı yer
__CONFIG(PROTECT & CPD & INTIO & MCLRDIS & WDTDIS & LVPDIS & PWRTEN & BOREN );

void main(void) // Ana program

{
	TRISA = 0b00000000;
	TRISB = 0b00000000;
	PORTA = 0b00000000;
	PORTB = 0b00000000;
	OPTION = 0b00000000; // PullUp dirençleri devreye sokar.
	CMCON = 0x07; // PORTA analog pinlerini kapatır. PortA Dijitale dönüştür.


	while (1){ // program döngüsü
		static unsigned char sayac = 0;
		switch (sayac++){
			case 0 : PORTB = 0b10000000; break;
			case 1 : PORTB = 0b01000000; break;
			case 2 : PORTB = 0b00100000; break;
			case 3 : PORTB = 0b00010000; break;
			case 4 : PORTB = 0b00001000; break;
			case 5 : PORTB = 0b00000100; break;
			case 6 : PORTB = 0b00000010; break;
			case 7 : PORTB = 0b00000001; break;
			case 8 : PORTB = 0b00000001; break;
			case 9 : PORTB = 0b00000010; break;
			case 10 : PORTB = 0b00000100; break;
			case 11 : PORTB = 0b00001000; break;
			case 12 : PORTB = 0b00010000; break;
			case 13 : PORTB = 0b00100000; break;
			case 14 : PORTB = 0b01000000; break;
			case 15 : PORTB = 0b10000000; break;
		}
		sayac &= 0b00001111;

		__delay_ms(100);		// delay for 100 milliseconds
		CLRWDT();
		__delay_ms(100);		// delay for 100 milliseconds
		CLRWDT();

	}
}


hi-tech sitesinden HCPICP-pro-9.60PL3.exe dosyasını indirdim lite olarak kurdum yine ayni problemleri verdi "anladım ki hiç kimse sen değil" pardon a şarkı idi :)
anladımki problem kod'da bende kodu samples/delay/main.c dosyası ile harmanladım yukardaki gibi bişe çıktı sonunda çalıştı önemli olan o
sonra lite sürümü kaldırdım pl4 ü geri kurdum
HI-TECH C PRO for the PIC10/12/16 MCU family  V9.60PL3
Copyright (C) 1984-2008 HI-TECH SOFTWARE

Memory Summary:
    Program space        used    C1h (   193) of   800h words   (  9.4%)
    Data space           used     3h (     3) of    E0h bytes   (  1.3%)
    EEPROM space         used     0h (     0) of    80h bytes   (  0.0%)
    Configuration bits   used     1h (     1) of     1h word    (100.0%)
    ID Location space    used     0h (     0) of     4h bytes   (  0.0%)

Loaded C:\Hi-tech\karas.cof.

********** Build successful! **************

böylece sağlamasınıda yapmış olduk

arslan74

Alıntı yapılan: "erkan614"sonunda boşluk yavaştan hitech örenmeye başladım
şimdi iyi bi öğrenci olup takıldığım yerler hakkında soru sormak lazım

1)
#include <pic.h>
#include "delay.h"


program basında yazılan bu satırların işlevi konusunda kısa bir cevap
az çok belli zaten

2)
Error   [141] C:\Hi-tech\karas.c; 4.18 can't open include file "delay.h": No such file or directory
Make: The target "C:\Hi-tech\delay.p1" is out of date.
Executing: "C:\Program Files\HI-TECH Software\PICC\PRO\9.60\bin\picc.exe" --pass1 "C:\Library C\delay.c" -q --chip=16F628A -P --runtime=default --opt=default -g --asmlist "--errformat=Error   [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" 

********** Build failed! **************


hatası ile karşılaşmamın sebebi nedir?


Bu forumda bu konu ile bir sürü acıklama yapılmıştır.

link 1: https://www.picproje.org/index.php/topic,22728&highlight=include+delay+h

link 2: https://www.picproje.org/index.php/topic,21430&highlight=include+delay+h

Selamlar