You are on page 1of 22

AVR Arkitektur

Wednesday, 7 September 2022


08.12
 

 
Input voltage, siger at hvis vi bruger stikket så skal vi bruge fra 7-12V, kan bruges til projektet om til
bilen
 
Clock speed er den hastighed vores microcontroller arbejder på, MHz betyder 16 millioner svinginer I
sekundet
 

 
Vores crystal, I en crystal er en elektrisk scanner som svinger 16 MHz
 
Microcontroller bliver brugt til at lave en instruktion for hver svinging
 
Som f.eks LED , ADD
Den kan udføre 16 miilloiner instruktioner på et sekunder
 
 
 

 
Ved at trykke på reset får vi programmet til at genstarte program tælleren
 
 
Forbundet til PORTB= LED7 - LED0 , det er 8 ben som vi kan programmer noget på. 0 volt eller 5 volt
cirka kan sættes ind
Man kan ikke sætte 5 volt på en lysdiode som man skal bruge en resistor
 
Et af benene bliver en indgang mens den anden bliver en udgang
Send 5V for at tænde, send 0 V for at slukke
I binary, 1 for at tænde 0 for at slukke
 
 
Hvis man ikke trykke på den er der 5 volt , fordi der ikke er spændingsfald, når vi så trykker på den er
der så 0 volt og der er ingen spændingsfald igen, det aflæser microcontrolleren og den ved nu at
knappen er trykket på
 
Bit betyder hvor meget data(bit) den kan sende af gangen
 
Cpuen er den der begreinger , alu er vores regne maskine, det den kan regne ud er megt simplet,
den regne 2 tal sammen, den kan skifte 8 bit og nulstille et register og mere, I forbindelse har for
statusregister(SREG) det snakker vi om næster uge
 
PC=program counter.
register: dette er programtælleren , det er den der holder styr på programmet og hvor lang vi er gået
 
Instruction decoder: det er den som skal kunne forstå binary
 
 
R0 to R31
Registeren
Ikke en del af cpu men tæt på
Cpuen har 32 hylder hvor den kan gemme 8 bit tal I, et mellem resultat
Hver af de 32 registeren kan holde et 8 bit tal
Intrsuctioner er kun 0 og 1
 

 
 
Der er en streg mellem R15 og R16, LED kan kun bruge nogle bestemete registor, så LED kan den
kune bruge og nogle andre kan kun bruge fra R16 til R31.
 
 
CPU og general purpose register er gode venner, tæt på hinanden for at arbejde hurtigere
Det grønne hedder RAM / SRAM, ram er også noget om hukommelsen på chippen
I GRP kan vi kunne gemme 8 bit data
I vores RAM er der over 4000 hylder som vi kan gemme data I
Der er bare det I det at vi skal på data bussen før dataregistoren kan arbejde med det
Det koster lidt ekstra tid at arbejde med RAM
 
Standard I/O registers
Et tredje registor, dette registor holde på vores porte som er forseksmpel der vores LED og
trykknapper
 
I dette eksempel skriver programmet og det bliver lavet om til HEX burde være binary though. Så
tager vores instruction decoder og decoder være linje efter tur
I eksmplemet før var der en bus som hentede og udføre intruktionen, en instruktion af gangen'
 
 
Vores arbejde er ligesom ne pipeline, den kan hente en funktion og arbejde på en anden på samme
tid, dette kan lade sig gøre fordi den har 2 landeveje
 
Vi kan skifte vores clock speed, men vi kan kun tag 16 MHz, en hurtigere hastighed vil overheat vores
microcontroller.
Hvis vi sætter 0 volt ud, så er det ikke helt præcist 0 volt
 
Tilsvarne, så behøver det ikke at være præcists 5 volt, den vil godt kunne tag imod 4.7
 
9 tallet laver 9 tabellet
Jump hopper op til loop
Call hopper til disp_and_delay
Det blå er instruktioner
Det som ikke er blåt er noget man selv kan definere til at hoppe til , det er et label. Et label koster
ikke tid, det er bare en teknisk ting I forbindelse med hoppe
 
Der er 4 type instruktoiner
 
Der er artimetiske og logisk, regne instruktioner
 
Branch instruktioner (hop-intrsuktioner) den hopper et andet sted I programmet
 
Data transfer (kopering af data) den regne ikke på noegt data men flytte bare på den, det en
chauffeur
 
Bit og bit test- instruktioner, snakker mere om det en anden dag sagde han
 

Husk at source altid går ind I destinationen


 
 
Nogle af instruktionerne:
 
 LDI:
LDI Rd, K
LDI giver et registor en værdi, Rd (d er et registor nummer mellem 16-30), k skal være mellem
0 og 255, 255 er høste tal vi kan skrive på 8 bit 0b 1111 1111
Example:
CLR R31 ; den sætter et 0 I Register 31
LDI R30, 0xF0 ;dette er bare et hex, man kan også skrive det I decimal og hex
LMP
 OUT PORTB,R!& write seroes to port b
 
 MOV R16,R0 ; kan bruges på alle registor, den tager den en foto kopi fra source og ligger
det ind I destionen (R16) R0 endre sig ikke så MOV er mere en copy fra et registor til en
anden
 
 COM R4 ; den tager 1s compliment of R4 , hvis vi har et 8 bit binary, så vender den det, kan
få en højtaler til skifte
 ADD R1, R2 ; adds R2 to R1 husk at source skal ind I destination, man kan kun ADD 2
Registors af gangen
 ADD R28,28 ; add R28 til R28
Hvis man ADD et tal og det kommer over 400 så siger micronctrollerne ikke noget, for eksmepel 1
1001 0000, så glemmer den det yderste 1 og tager resten af nummber, microcontrollern kan godt
huske 1 tallet
 
 
SER kan bliver brugt mellem 16 og 31
 
På registor R30, hvil jeg gerne have tallet 117
Destinarion først og derefter source
Destination, source ;komma er vigtigt
 
LAP ØVELSE:
 
;********** MSYS, LAB2_1 **********
;******** Henning Hargaard ********
;******** 31.august 2015 ********
;**********************************
LDI R16,200 ; Giv R16 værdien 200 I decimaler
STS 0x280,R16 ; Sæt værdien af R16 (200) Ind I adressen 0x280 I vores memory, den
får så værdien C8 (C8=200)
LDI R16,5 ; Giver nu R16 en ny værdi af 5 I decimaler eller hex (samme på begge)
LDI R17,17 ; Giver R17 værdien 17
LDS R16,0x280 ; LDS betyder at den loader dette register ( R16 ) med vores værdi I
0x280 som var C8/200, så dermed R16 = 200
DEC R16 ; DEC betyder at minus med en , så dermed er R16 = 199
MOV R18,R16 ; Nu kopier vi værdien af R16 ind I R18
ADD R17,R18 ; Nu tilføjer vi R17 med R18, R18+17=199+17=216
INC R17 ; Plusser med 1 så R17 = 217
INC R17 ; Plusser med 1 så R17 = 218
COM R17 ; finder 1s complement af R17, R17 = 218 I binary er 11011010, 1s
completment af detter er så lig med 00100101, hvilket så er lig med = 37, Dermed er R17 lig 37
 
HER:
JMP HER ; Jumper bare til HER som er et label
;**********************************

 
 
 
 

You might also like