View Single Post
Sitat av sFilez Vis innlegg
Nå som ting fungerer, kan vi skrive en kode som gjør noe. Det koden skal gjøre er å telle fra 0 til 255 binært og hvise dette ved å skru av/på lysdiodene på port c.

Kode

#define F_CPU 16000000	//Klokkefrekvens

#include <avr/io.h>
#include <util/delay.h>	//Header for _delay_ms()

int main(){
	DDRC = 0xFF;		//Sett alle pinner på PORTC til utganger
	PORTC = 0x00;		//Sett alle pinner på PORTC til 0 (av)
	int tall = 0;		//Variabel som holder tellingen

	while(1){
		_delay_ms(500); //Vent 500ms
		PORTC = tall++; //Sett PORTC til tall, og øk tall med 1
		if(tall>=255)	//Hvis tall er større eller lik 255 (0xFF)
			tall = 0;	//Sett tall til 0
	}
}
Jeg har kommenter de viktigste delene av koden, men går alikevell gjennom noen.

DDRC = 0xFF;

Dette er registeret jeg skrev om lengre opp, som bestemmer om det er utgang eller inngang.
0xFF er skrevet i hex, og dette er den mest vanlige måten å skrive det på. 0X sier at det er hex, og FF betyr 255 desimalt. Men den letteste måten å forstå det på, er å oversette det til binært, som blir:
11111111. Altså, alle pinnene er utganger. Vi kunne selvfølgelig skrevet 0x5A feks., som blir 01011010 binært. Da ville pinne 0,2,5 og 7 vært innganger, og pinne 1,3,4 og 6, vært utganger.


PORTC = 0x00;

Her setter vi PORT-registeret til port c til 0x00, som tilsvarer 00000000 i binært. Altså alle pinne av.


_delay_ms(500);

Denne funksjonen kommer fra delay.h som vi inkluderte i starten. Ved å gi den 500, vil den stoppe mikrokontrolleren i 500 ms, altså et halvt sekund før den går videre. Dette er ikke den beste måten å gjøre det på, men i dette tilfellet går det bra.


PORTC = tall++;

Her setter vi port c til variabelen tall, og øker den med 1. Neste gang vil den sette port c til 1, så 2, 3, 4..

if(tall>=255)
tall = 0;

Siden vi har 8 pinner, kan vi vise maks 255 binært, derfor setter vi tall til 0 når vi kommer til 255, og alt begynner på nytt.
Vis hele sitatet...
Sånn ca hit gikk det greit, men må kanskje ha det litt inn med teskje ?
Siste del av andre bolk fra sFiles
Skulle denne programsnutten gå ann å kjøre ?

Er den gule pila her en failmelding ? http://fjelltur.org/avr/avr.jpg

Skal programmene i kretsen kunne kjøre men den er tilkoblet programmer og PC, eller må den kobles fra ?

Litt mange spørsmål
Sist endret av asmika; 7. desember 2010 kl. 17:13.