Atmel Micro controler. 89C2051 & 89c4051
|
|
|
- Leif Ipsen
- 9 år siden
- Visninger:
Transkript
1 89C405 Kompendium Version maj 00 Senest redigeret aug 0, Marts 04, Sept 05, Atmel Micro controler 89C05 & 89c405 ATMEL 89C05/405 er en aflægger af en ældre type, en havde ikke intern hukommelse, men krævede ekstern RAM og EPROM. Flere ting i dette kompendium er taget fra materiale til 805 eller 805, så alt i kompendiet passer ikke nødvendigvis til ATMEL 89C05. Findes fejl, eller er der forslag til forbedringer, vil jeg gerne have det på tryk, så nye versioner kan forbedres. /Valle Udskr Fil:89C05 kompendium.doc Side af 48
2 89C405 ATMEL 89AT05 er en 8 bit Microcontroler. En microcontroler er en microprocessor, der har indbygget RAM, ROM, timer, seriel enhed, porte til omverdenen osv. En Microprocessor har behov for extern RAM, ROM etc. + flere andre kredse. En microcontroler har indbygget så mange funktioner, at den kan fremstå som en lille computer i en enkelt IC, og placeres på et print som andre kredse. Microcontrolere findes i dag i næsten alle elektroniske apparater. Og der findes et utal af typer, der vælges afh. af opgave. Fx kan der være indbygget A/D konverter. Hardware-data Kredsen 89C05 fra ATMEL fås i en 0 pin DIL IC. Kredsen arbejder på 5 Volt. ( Max,7 til 6 Volt ) Pin voltage: minus til +7 Volt max. Io low pr portpin er max 0 ma. Dvs. at der ikke kan synkes mere strøm end ca. 0 ma. Der kan ikke sources ret meget. Max Io low for alle pins tilsammen = 80 ma, dvs. der max til sammen på portene kan synkes 80 ma samtidig, men efter andre kilder er dette dog ukritisk. Det der sker er vel, at kredsen kan blive varm! Pinkonfiguration: Kredsen er udstyret med K Bytes Flash Memory til programmet. 8 byte ( 00h til 7Fh ) on Chip burger-ram ( Adresse 80h til FFh bruges til specielle registre ) 5 I/O linier. Nogle kan også bruges til andre funktioner, fx seriel datatransmission. stk 6 bit timers / tællere 6 interupt kilder En Seriel port On Chip Analog komparator Direkte LED Drive Outputs Obs. Kan kun sinke, altså aktiv lav!! software valgbare strømbesparende modes. To Memory Lock sikringer, så et program ikke kan kopieres fra kredsen. Udskr Fil:89C05 kompendium.doc Side af 48
3 89C405 Kredsen kan arbejde med oscillatorfrekvenser helt nede fra 0 Hz og op til 4 MHz. Oscillatoren kan enten være en ekstern RC-oscillator eller man kan benytte den indbyggede oscillator, ved blot at sætte et krystal og to kondensatorer på. Fx på MHz eller,059 MHz hvis der i ens applikation skal bruges seriel dataoverførsel med standard baudrates. Ved brug af extern oscillator tilsluttes den til XTAL, pin 5, mens XTAL, pin 4, så ikke må forbindes. Blokdiagram af kredsens indre: 89C05 er en aflægger af den oprindelige 805-controler. Men 89C05 har færre funktioner / hardwarekomponenter. Heriblandt mindre ROM, RAM, Timer- og Interrupt-muligheder. Udskr Fil:89C05 kompendium.doc Side af 48
4 89C405 89C05 er interessant til mindre projekter. Den er softwarekompatible med standard kontrolere, ganske vist med indskrænkede hardware-egenskaber som RAM- og ROM-størrelse såvel som timer og interrupt muligheder. Og der er kun porte, port og port, med i alt 5 I/O linier. Specielt er det, at der er en analog komparator integreret på chippen. På chippen er der bit, der fungerer som låse. Når kredsen brændes, kan de lades uprogrammeret eller programmeret. Låsen forhindrer at programmet i chippen kan kopieres. Sikringen slettes ved Erase funktionen, så kredsen kan genprogrammeres. Hukommelses-oversigt K { 4 K } O.S.V S B U F Taeller Porte 7F h S F R s Special Function Registre Programstart 0 h 0 h Stack Pointer Ram adresse 0 h til F h kan bitadresseres Interrupt vektorer Adresse 0 h Adresse 0 h Flash ROM RAM 8 Bit bred 8 Bit bred R0 R7 Registre R0 til R7 Udskr Fil:89C05 kompendium.doc Side 4 af 48
5 89C405 Program: For at man kan anvende kredsen, skal den udstyres med et program, dvs. at den skal programmeres. Et program skrives på PC. I en editor skrives en kildetekst. Det er en tekstfil, der består af en række symboler / ordrer, og disse oversættes senere til 8 bit maskinkode af et oversætterprogram. Resultatet gemmes i en.hex -fil. HEX-filen skal så overføres ( brændes ) over i kredsen. Kildeteksten skrives enten i et højniveau-sprog som fx C++ eller i Basic. Eller der kan benyttes Assembler, der er et Lavniveau sprog. Efter oversættelse af alle sprog fås maskinkode, der er det eneste, en processor forstår. Maskinkode er en række bytes, dvs. 8 bit værdier eller ord. Disse bytes udgør tilsammen et program, når de brændes ned i kontrolleren. Assembler: Det sprog, der anvendes her, kaldes assembler. Assembler er en symbolsk repræsentation af maskinkode, som gør det nemmere at skrive programmer til en processor, end hvis man selv skulle skrive de binære eller hexadecimale maskinkode-værdier. Assembler er specifik for en given processor. Assemblersproget er det programmeringssprog, der kommer tættest på maskinsprog. I assembler er det kun muligt at udføre ganske enkelte operationer, som processoren kan udføre direkte. I vores tilfælde betyder det, at der fx kun kan udføres direkte beregninger på 8 bit variable. I højniveausprog som C, C++ eller Basic kan der fx udføres en beregning som fx a=(7+4)*. Dette vil i assemblersprog skulle udføres som flg: MOV ACC,#7 ADD ACC,#4 MOV B,# MUL AB ;ACC er en Accumulator, en 8 bit register, - egentlig bare ;en RAM-adresse. B-registeret er ligeledes et 8 bit register. ;MOV betyder Flyt, ADD Adder, og MUL Multiplicer. Man skal altså i assemblersproget selv tage hånd om alle deloperationer, og hvor de enkelte værdier placeres i hukommelsen.. Et program skrives i en editor, evt. i Note Pad, eller i et egentligt udviklingsprogram, som fx det fra KEIL, vi benytter. Fordelen ved at benytte et rigtigt udviklingsprogram er, at der fx er DEBUG-muligheder. Det til hexkoder oversatte program kan brændes eller programmeres direkte ind i 89C05-kredsen med vores udstyr. Skrivning af et program kræver naturligvis et indgående kendskab til kredsens arkitektur. Udskr Fil:89C05 kompendium.doc Side 5 af 48
6 89C405 Ordrer kan opdeles i grupper: Kredsen kan forskellige ting. Den kan fx flytte Bytes fra interne 8 bits hukommelser, såkaldte registre, den kan addere, rotere bit, flytte bit / byte ud på den interne RAM, ud på Porten. Porten er også er et register, der har ført de 8 bit ud til IC ens pins. Men den gør intet uden et program. Programmet består altså af en række simple instruktioner. Men kontrolleren kan udføre disse ret hurtigt. De ordrer processoren forstår kan opdeles i nogle hovedgrupper: Transport af bit eller Bytes, Logik bearbejdning, Aritmetik Bitmanipulering Programstyring fx til RAM, til den ydre verden (Port) fx AND-funktioner, OR-funktioner fx Addition, Subtraktion, multiplikation fx gøre en bit i et register eller på en port højt. Hop i programmet, betingede hop etc. Program-editoren bruges til at skrive assemblerkoderne, en slags symbolsprog. Asemblersproget er efter lidt øvelse rimelig let at forstå. I assembler kode arbejder man helt nede i de enkelte simple ordrer. Herunder er der nogle eksempler på MOV og tal-typer, sådan som de kunne bruges i editoren. ( Efter et semikolon i kildeteksten er det blot forklarende kommentarer ) MOV P,ACC ;Dette betyder : Flyt indholdet - dvs 8 bit - i reg A til port nr. ;Register A eller ACC kaldes også for Accumulatoren. I dette ;registerer foregår de fleste operationer. MOV A, P MOV ACC, #0FFh MOV acc, #0b MOV acc,#56 MOV acc,#56d MOV acc,56 ;Port kopieres ind I reg A ;Læg FFh ind i Acc. # betyder værdi. Bemærk, at alle værdier starter med et tal, et foranstående nul! ;Der er med h et angivet, at det er en Hex værdi. ; Binær værdi til acc. ;56 decimal ind i ACC ;56 decimal ind i ACC ;Flyt en kopi af indholdet i RAM adresse 56 til ACC. Når det ;ikke er et # foran, menes der en RAM-adresse. Register R0 og R kan bruges til indirekte adressering: MOV R0,#56 MOV acc,@r0 ; Register R0 har værdien 56 og bruges nu som pointer. ; Der kan altså opereres indirekte! Udskr Fil:89C05 kompendium.doc Side 6 af 48
7 89C405 ; Altså : Hent værdien til ACC fra den RAM-adresse, der peges ; på med indholdet i register R0. I stedet for faste værdier kan der i udviklingsværktøjet anvendes navne for variable. Oversætteren skal så et sted i kildeteksten have besked på, hvad disse navne betyder. Dette gøres fx med følgende eks. Timer_high EQU 7 Timer_low EQU 0Fh ;Variablen Timer_high defineres til værdien 7 decimal ;Variablen Timer_low defineres til værdien F Hex. MOV TH0,#Timer_high ; Værdien, der er døbt Timer_high kopieres ind i reg. TH0. MOV TL0,#Timer_low Når programmet oversættes til maskinkode, får TH0 og TL0 de rigtige værdier. Dette sørger oversætteren eller assembleren for. Det er praktisk at anvende symbolske værdier, idet det letter evt. rettelser i programmet. Fx hvis værdierne er benyttet flere steder i programmet. Men det kræver selvfølgelig struktur! Andre eksempler: Setb P.7 ;P.7 = port bit 7, pin sættes høj CLR P.0 ;P.0 bliver lav CPL P. ;Negering af bit i port CJNE R,A, label ; Compare R og A og jump if not equal, hop til label PUSH P ;Gem indholdet i port på stakken POP P ;Hent indholdet af stakken til port Der findes et hav af ordrer. De kan læses i forskellige oversigter, i bilag eller se fx i manualen på Accumulator og Registre I kredsen findes ud over accumulatoren, register A, eller Acc, en række andre registre, eller 8 bit hukommelser. Registrene er egentlig blot forskellige bytes i den interne RAM. Alle beregninger osv. foregår på disse registre. I Accumulatoren foregår de fleste opperationer, add (addition), sub (subtraktion), osv. Register B bruges hovedsagelig til multiplikation og division. Udskr Fil:89C05 kompendium.doc Side 7 af 48
8 89C405 Af almindelige registre findes R0 til R7. Disse ligger også i RAM, fra adresse 00h til 07h. Normalt er der behov for flere RAM-adresser i et program. De ligger så over 07h, og får typisk et navn i kildeteksten. Registrene fra 0h til Fh kan bruges som bitadresserbare!! DVS. ::: Når et program afvikles, sker det typisk ved en masse kald af subrutiner. For at programmet kan finde retur igen, gemmes returadressen på STAKKEN. Den kan opfattes som en sidst ind først ud hukommelse. Stakken styres af Stack-Pointeren SP. Denne er default lig adresse 07h, men skal næsten altid sættes til fx adresse 0h. Der er i Controleren egentlig 4 sæt af R0 til R7. Valg af sæt styres af to bit i flagregisteret. Men foreløbig bruges her kun sæt 0, R0 til R7 på adresse 0h til 07h. Flagregister, PSW, Program Status Word. I et specielt register, kaldet Flag-register, eller PSW register, Program Status Word, er der et antal bit, der sættes høj eller lav, afhængig af udfaldet af en udført ordre / operation. Det kan fx være, hvis tallet i accumulatoren har værdien 0. Så vil et bit kaldet Zero-bit i PSW blive sat. Dette kan udnyttes i programmet fx ved at udføre et betinget hop, betinget af at indholdet i Acc er nul. Eller man kan benytte carry-flaget. Dvs. mente-flaget. Hvis fx en addition i Acc giver en mente, dvs. mere end FFh, sættes en menteflag, en CY-flag. Porte: 89C05 har porte, der er forbundet til IC ens pins. De hedder P og P. Egentlig er det blot registre, der har en pin, en IC-ben forbundet direkte til hvert bit. ( Desværre er bit 6 i Port P ikke ført ud. Der har nok ikke været ben nok! ) Port & er bidirektionale. Dvs. der kan sendes data ud, og der kan læses fra portene, om de er lave eller høje! Portene kan ikke source, altså levere strøm ud af pin ene. De kan kun synke, og max 0 ma. Dvs, at der kan tilsluttes lysdioder direkte fra plus 5 Volt, med en formodstand. Skrives der et til alle pins i port kan de bruges til input. Portene er internt forsynet med Pull Up modstande, og hvis de så externt fx med en kontakt forbindes direkte til 0, kan dette registreres i processoren af et program. Mov P, #0FFh ; Sæt porten høj ( Forbered som input ) Udskr Fil:89C05 kompendium.doc Side 8 af 48
9 89C405 Mov ACC, P JB P., videre ;Hent værdien af porten ind. ; Programmet tjekker om port bit er høj, og hopper i så ; fald til label videre. Er benet lav, udføres næste linie! Bemærk, at port, bit 0 og ikke har intern Pull Up-modstand. Dette skal gøres externt, hvis de skal fungere som inputs. Sæt fx 680 Ohm eller K op til plus 5 Volt. Når P. til P.7 bruges som input, vil de source meget lidt strøm pga. de interne pull up-modstande når de externt forbindes til nul, fx med en kontakt. Strøm ud af P.0 og P. er bestemt af externe pull ups. Porten er altså bedre til at synke end source. Skal der evt. sources strøm, sættes evt. nogle transistorer på. Eller fx en 74x7 portkreds, eller en 74HC45 buffer-kreds på. Men kontrolleren kan sagtens styre lysdioder og andet direkte. Blot skal belastningen sættes mellem plus og porten. Dvs. Aktiv Lav!!! Port har lignende funktion som Port, men benene har yderligere en anden funktion. P er også Special Function ind- eller udgange. Se evt. en oversigt side i Atmel datablad. Ud over som port, kan Pin`ene dog ikke samtidig bruges som input til interrupt-systemet. Eller til timer-funktionen, hvor timeren kan startes / stoppes af en af pin`ene eller timeren kan konfigureres som counter, og tælle pulser på en af pin`ene. Endelig kan to af pin ene bruges til seriel kommunikation. P.0 til P.5 og P.7 er 7 bidirektionale I/O med intern pull ups. Men kan kun sinke strøm!! P.6 er output fra den interne komparators output. P kan som Port synke 0 ma, og heller ikke source. Ved reset sættes begge porte til HØJ.!! Komparatoren. P.0 og P. er samtidig input til en intern komparator. Komparatorudgang = P.6 Der kommer på P.6 så snart spændingen på P.0 er større end på P.. Dette kan evt. bruges til at bygge en D/A konverter vha. et RR net. Spændingerne på indgangene må ikke overskride intervallet 0 til 5 Volt. Stack Pointer: Udskr Fil:89C05 kompendium.doc Side 9 af 48
10 89C405 Stack-pointeren er en 8 bit pointer, kaldet SP, der peger på en adresse i RAM`en hvor der gemmes fx en retur-adresse, så programmet kan finde tilbage efter et sub-rutinehop. Stakken bruges også til Push og Pop ordrer. SP registeret sættes ved reset default til 07h. Hver gang, der gemmes en værdi ud på RAM`en vha. SP forøges Stackpointeren automatisk, og den formindskes hvis der hentes data. Herved fungerer den på RAM`en som Stakken på en HP lommeregner. Sidst ind, først ud! SP kan loades med en anden startværdi. Dette er nødvendig, hvis man udnytter muligheden for flere register-banks, der anvender de laveste RAM-adresser fra 00h til Fh. Også hvis man bruger de bitadresserbare bytes i området 0h til Fh, må man lægge SP højere op. Læg fx Stack Pointeren til adresse 0h. Der er i alt 8 Byte RAM til rådighed.! MOV SP, #0h SFR registre: Ud over de allerede beskrevne registre er der i Kontrolleren flere såkaldte SFR registre. ( Special Function Registre ). Disse benyttes fx. til at styre de indbyggede timere eller interrupt-systemet. De ligger også i RAM, men over adresse 7d = 7Fh. Timerfunktionenen: I uc-kredsen er der indbygget to timere / countere. Hhv. timer 0 og timer. De har en lidt speciel funktion, og skal studeres indgående før brug. De kan konfigureres på mange måder. Timerne kan sættes til at tælle antallet af pulser på et inputben, og programmet kan så læse tællerværdien. Eller timerne kan bruges som tidsmåler, idet krystallets frekvens bruges. Timererne kan sættes til at tælle hver. af krystal-oscillatorens clockpulser. Dvs. at hvis der benyttes et MHz krystal, tæller tælleren MHz. Tælleren tæller opad, fra en bestemt værdi, man kan preloade den med. Når timeren så når FFFFh ( = d ) og skal til at starte forfra ( 0000h ) kaldes det timer-overløb. Herved sættes et bit, og programmet kan registrere dette og reagere herpå. Ved at vælge en hensigtsmæssig værdi at preloade i tælleren, kan man kende den nøjagtige tid, der går før timeroverløb, fx /00 sek. Fx kan man hver 0,0 sek få en timer interrupt rutine, som blot er en lille programstump, til at tælle nogle RAM-adresser op, og derved fx lave et ur. Programmet kan reagere på timeroverløb. Enten ved at vente på det sker, eller man kan lade timeroverløbet udløse et interrupt, der tvinger programmet til straks at hoppe over i en bestemt subrutine. Hvis man vil benytte seriel kommunikation, bruges Timer normalt til Baud Rate generering. Herom senere!! Udskr Fil:89C05 kompendium.doc Side 0 af 48
11 89C405 Timerne såvel som de øvrige indbyggede enheder styres ved i programmets initieringsfase at sætte nogle styrebit i forskellige registre: TCON Timer Control Register TMOD Timer Modus Register ( På hvilken måde arbejder timeren ) IE Interrupt Enable Register. Følgende skitse viser opbygningen af timer-strukturen for timer 0. Timer er opbygget tilsvarende.: Register TMOD Timer 0 Gate C/T M M0 Mov TMOD, # b Gate = 0 C/T = 0 Mode = Diagrammet gælder for Timer 0 OSC/ fx MHz P.4 Input Pin INT0 P. Pin Timer Run TR0 Bit i TCON Setb TR0 8 9 Mode 6 Bit Tæller Timer Overflow Flag TF0 Clr TF0 Bit ET0 Enable Timer 0 Interrupt Bit EA Interrupt Administration Enable All Interrupts Evt også Prioritetsbit Setb PT0 0 = lav prioritet = høj prioritet Begge timere arbejder i princippet ens. De tæller op fra en indstillet værdi til FFFFh. De er altså 6 bits tællere. Startværdierne kan indstilles i Register TLn og THn. ( n = 0 for timer 0, eller for timer ). TL0 er Tæller 0, TimerLowbyte, TH0 er Tæller 0, TimerHighbyte. Når tælleren når deres højeste værdi, - og der kommer overløb eller mente, sættes automatisk et bit, Timer Flag 0 bit, eller blot TF0, i TCON-registeret, der står for Timer Control Register. Det kan fx være hver. oscillator svingning, der bliver talt. TMOD Registeret Timernes funktion styres vha. forskellige bit i TMOD registeret, ( Timer Modus registeret ). Timerne kan indstilles til at arbejde på ud af 4 måder, såkaldte MODUS Følgende giver en oversigt: Udskr Fil:89C05 kompendium.doc Side af 48
12 89C405 M M0 (Bit) (Bit) Modus Forklaring på arbejdsmåde, MODUS: bit = bit 0 6 bit timer / tæller 0 8 bit auto reload, til Baudrate-generering. Timer 0, TL0 er en 8 bit timer / tæller, der styres af timer 0 kontrol bit.??? TH0 er en timer / tæller, der styres af timer kontrol bit. Modus indstilles i TMOD registeret i bit 0 og for timer 0, og i bit 4 og 5 for timer Oversigt over styrebit i TMOD-registeret: TMOD Register Timer Modus Register (= 00 ved Reset ) Timer Timer0 Bit Gate C/T M M0 Gate C/T M M0 = 0, tæller Counter / Timer. M M0 = modus: = 0, tæller Counter / Timer. M M0 = modus: =, tæller enables af /INT and TR i TCON reg. =: Input til tæller fra pin T = 0: Osc/ til tæller 00 = modus 0 (5+8 bit) 0 = modus (8 + 8 bit) 0 = modus ( ) = modus ( ) TMOD Timer Mode Register = 00h ved reset. =, tæller enables af /INT0 and TR 0 TCON reg. =: Input til tæller fra pin T0 = 0: Osc/ til tæller 0 0= modus 0 (5+8 bit) 0 = modus (8 + 8 bit) 0 = modus ( ) = modus ( ) Vha Gate-bit og C/T-bit kan indstilles hvad / hvornår timeren får tilført pulser. Hvis C/T er, tælles pulser på input-pin P.4 ( timer 0 ) og pin P.5 ( timer ) Er C/T lav, er det hver. puls fra oscillatoren, der kommer til tælleren. Men pulserne / signalerne til timeren kan startes / stoppes af en Gate-bit, et Input-ben og en TR-bit ( Timer Run bit ). Herved får man mange muligheder for at indstille og manipulere med signalerne. På Boolsk form ser det således ud: ( Gatebit + Inputpin) TimerRunBit eller ( gatebit + P. ) TRbit Der er Gatebit, Inputpin og TRbit for hhv timer 0 og. I bit C/T indstilles om timeren skal tælle input fra en pin, Pin T0 eller T, som er lig P.4 hhv. P.5, eller om det er clockcykler, der tælles. Eks på indstilling af TMOD-registeret: Udskr Fil:89C05 kompendium.doc Side af 48
13 89C405 MOV TMOD, # B ;Timer0: Gate off, C/T=Timer, Mode=0, Timer disabled. I Timer Control-registeret TCON findes flg. bit. TCON Register Timer Control Register ( = 00h ved Reset ) Timer Timer 0 Interupt Control Bit TF TR TF0 TR0 IE IT IE0 IT0 Timerflag Timer Run Timerflag 0 Timer 0 Run Sættes v. overløb af timer L: JNB TF L CLR TF Software sættes til for at enable timeren. SETB TR CLR TR Sættes v. overløb af timer 0 Software sættes til for at enable timeren. Setb TR0 Clr Tr0 Eks: Mov TCON, #xxxxxxxxb SETB TR0 ;Start timer 0 Label: JNB TF0 Label ; afvent at Timer Flag 0 er sat af overløb. (TR0 ligger også på adressen TCON.4) (TR ligger også på adressen TCON.6) Følgende 4 skitser viser opbygningen og kontrolmulighederne af timerne i de forskellige modus: ( /INT0 går ind til en OR-gate! ) Funktion af timer/tæller 0 ( ) i modus 0 Udskr Fil:89C05 kompendium.doc Side af 48
14 89C405 ( /INT0 går ind til en OR-gate! ) Timeren kører Hvis TR 0 ( Gate0 + Int0) Funktionen af tælleren i modus, 6 bit tæller. ( /INT0 går ind til en OR-gate! ) Timerfunktion i modus Udskr Fil:89C05 kompendium.doc Side 4 af 48
15 89C405 ( /INT0 går ind til en OR-gate! ) Timer 0 i modus Følgende side viser en oversigt over indstilling af timerne i mode 0, altså 6 bit timer. Udskr Fil:89C05 kompendium.doc Side 5 af 48
16 89C405 Register TMOD Timer Gate Timer 0 C/T M M0 Mov TMOD, # b Gate = 0 C/T = 0 Mode = OSC/ fx MHz Mode-bit M & M0 : 00 = 5+8 bit 0 = 6 bit Timer / Counter 0 = 8 bit autoreload til Baudrategenerering =!! Diagrammet gælder for Timer 0 Timer fungerer på tilsvarende måde Input-pins P.4 Input T0, Pin 8 TF0 = Timer Nul Overflow Flag eks.: JNB TF0, $ TF0 resettes automatisk ved et udløst interrupt Interrupt Administration Timer 0 vektor = 0Bh Timer vektor = Bh INT0 P. Pin Mode 6 Bit Tæller TF0 Clr TF0 Inter rupt Timer0 Run bit TR0 Bit i TCON Setb TR0 Mov TH0, #Eh Mov TL0, #00h Bit ET0 Enable Timer 0 Interrupt Setb ET0 Bit EA Enable All Interrupts Setb EA /Valle Evt også Prioritetsbit Setb PT0 0 = lav prioritet = høj prioritet Udskr Fil:89C05 kompendium.doc Side 6 af 48
17 89C405 Timerstyret interrupt. Timer overløbs - flagene TF0 og TF kan læses af softwaren. Fx med følgende lille program: Eks: Hertil: JNB TF0, HERTIL CLR TF0 ; Læs om Timer0flag er sat, Er der ikke sat bit, ; hop til samme linie og læs igen ; Bittet blev sat, Reset flaget, og fortsæt Setb Tr0 ; Timer 0 run Clr Tr0 ; Stop Timer 0 Men man kan også vælge at få Timerflagene til automatisk at udløse et interrupt. Timerflagene genfindes på næste skitse, forbundet til interrupt-systemet vha. nogle switche, der også styres af nogle bits. Som det ses, kommer signalet fra Timer0 overløb ikke videre med et interrupt, hvis ikke ET0-bittet og EA-bittet er sat. På følgende skitse ses hele interruptstrukturen. Udskr Fil:89C05 kompendium.doc Side 7 af 48
18 89C405 Skitsen viser nederst en interrupt-funktion, der kun eksisterer i 80 eller 805. Er altså ikke med i 89C405! De med stiplet linie sammenkædede kasser symboliserer, at alle switches on, hvis en bit, bit EA, Enable All, sættes til.! Højre søjle af kasser indikerer en proiritetsrækkefølge, der kan indstilles til høj. Lav er default! Med en høj prioritet på et interrupt, kan et interrupt, der udløses mens et andet er i gang, afbryde det første!! Det har altså højere prioritet. Bit ET0 ( eller ET ) Enable Timer 0 Interrupt skal sættes i IE-registeret. Ligeledes skal EA-bittet sættes, ( Enable All ), EA er en overordnet bit, der tillader interrupts overhovedet. IE-registeret har flg. bit: IE-registeret, Interrupt Enable Register, ( Sættes ved reset til 00h ) Bit EA ET ET0 Eks: Enable All Overordnet! Setb EA Setb ET0 Enable Timer interrupt Enable timer0 interrupt Udskr Fil:89C05 kompendium.doc Side 8 af 48
19 89C405 Eller Mov IE, #8h ;sætter både bit 7 og. Og endelig kan der sættes lav eller høj prioritet på interrupts. Default er lav. Høj prioritet fås ved at sætte et bit i IP Registeret, ( Interrupt Prioritet ) Se senere! Eks på timerprogram der får bit 0 på port til at skifte 500 gange pr sek. $NOMOD5 $INCLUDE (89C05.MCU) ; Startadresse af hele koden i ROM ORG 0h ;Ved reset starter programmet på adresse 0h. Derfor skal ; oversætteren placere flg. pgr-stump her! AJMP START ; Hop til start af program, der ligger længere oppe! ORG 0Bh ; Oversætteren skal placere flg: på adresse 0Bh i ROM. ; Ved interrupt fra tælleren hoppes nemlig til denne adresse, ; og her skal så anføres, hvad programmet skal gøre. Imidlertid ; er der ikke plads til mange bytes her, så normalt skal der ;udføres et subrutinekald. ; og der skal placeres, hvad processoren skal gøre for hver ; interrupt! Call Timerint Reti START: ; Programmet starter her MOV SP, #0h ;Sæt stackpointer til efter interrupt kald området. MOV TMOD, # b ; Timer 0, Modus, C/T = 0, Gate = 0 MOV TH0, #0F8h ;Timer 0 High Byte loades MOV TL0, #0Fh ; Timer0 Low Byte loades, ialt F8F Hex Setb ET0 ; Enable Timer 0 interrupt Setb EA ; Enable Interrupt All! ( Overordnet ) Setb TR0 ; Start Timer0 ; ; Stop program STOP: ajmp stop ; Hoved-Programmet kører I løkke på denne linie. Udskr Fil:89C05 kompendium.doc Side 9 af 48
20 89C405 Timerint: ; Timer interrupt-subrutine! Forklaring: Clr TF0 ; Clr timer Flag 0! MOV TH0, #0F8h ; Genload Tæller MOV TL0, #0Fh ; Genload Tæller cpl p.0 ;complement port bit. ret ; Returner fra interrupt Tælleren tæller op til 6555 fra den værdi, der lægges ind I den. Det er hver. oscillatorsvingning, der tælles. Dvs. at ved MHz tælles Mio. pulser pr sek. Altså må den værdi, der skal preloades ind i tælleren: Vaerdi = 6555 Ønskes noget skal ske 500 gange pr sek., findes f værdien til 6.55d som er lig F8Fh Værdien må ikke være mindre end 0!! Dvs. at den laveste frekvens, der kan fås på denne måde er 5, Hz. Der kan max tælles op fra 0000h til FFFFh!! TL0 er timer 0 low byte, TL er timer Low byte TH0 er timer 0 high byte, TH er timer high byte. Endnu et PGR eksempel, der ikke benytter interrupts. Start: MOV TMOD, # B ; Timer 0: Gate off, Timer, Mode 0 ; Timer disabled SETB TR0 ;Start timer 0 CLR ACC ; Definer udgangstilstand for ACC Start: JNB TF0 Start ; Vent til timerflag sat CLR TF0 ; Slet timerflag INC ACC ; A = A + MOV P,Acc ; A ud på port SJMP Start ; Hop til sløjfe. Endnu et programeks: Mov TMOD, # b ; Timer 0, Mode, 6 bit ; gate disablet, Timer disablet Setb Tr0 ; Start timer 0 Setb ET0 ; Enable timer 0 interrupt Setb EA ; Tillad Interrupts! Andet eks: Mov TMOD, #09h ; Timer 0, Timer styres af P. Se senere for mere uddybende gennemgang af interruptsystemet. Udskr Fil:89C05 kompendium.doc Side 0 af 48
21 89C405 Seriel Kommunikation I 89C05 er der indbygget en Seriel Port, også kaldet en UART, der står for Universel Asyncron Receiver Transmitter. Porten er rimelig let at bruge, når man har forstået princippet. Efter opsætning, eller konfigurering, er det blot at skrive et 8 bit ord til register SBUF, ( for Seriel Buffer ) for at sende en byte, eller læse fra samme register hvis der er modtaget data. Eks.: Mov SBUF, A ; Indholdet af reg A kopieres til SBUF reg. og sendes Mov A, SBUF ; Læs modtaget data til reg A. Skrives til SBUF, sendes data umiddelbart efter automatisk ud på udgangsbenet. Når UARTèn er færdig med at sende en byte, sættes et bit, som programmet kan tjekke og dermed vide, når den serielle del er færdig med at sende en byte. Der bruges to bit af port til kommunikationen. På pin, P.0, findes RxD, Receive data, og på pin, P., TxD, Transmit Data. Baudrate Seriel kommunikation udføres med et antal bit pr sekund. Der er fra gammel tid ( Teletext og teletype ) valgt fx 50 bit pr sek, også kaldet Baud ( udtales Boo ) eller Baudrate. Senere fordobledes Baudraten, indtil flere gange. Dataledningen, hvor serielle signaler sendes mellem to processorer, er normalt høj. Når der sendes, startes med at ledningen bliver lav. Dette kaldes et Startbit. Herefter sendes de 8 bit, og evt. et paritetsbit. Sluttelig et Stopbit, der er et -tal. Herefter forbliver dataledningen høj indtil næste startbit sendes. Figuren viser, i alt 0 bit sendes. LSB sendes først. Udskr Fil:89C05 kompendium.doc Side af 48
22 89C405 Den serielle port kan sættes op til at sende 9 bit + startbit og stopbit. Det 9. bit bruges så fx til paritetsbit. Paritetsbittet skal udregnes og sættes af softwaren. Bittet bruges hvis programmet skal være nogenlunde sikker på, at det modtagne er korrekt modtaget. Bittet bruges fx til Lige Paritet. Dvs. at de 8 bit og det 9. har et lige antal ``-taller tilsammen. Sendeprogrammet skal altså udregne paritetsbittet, og sætte / resette dette bit, og modtageprogrammet ligeledes kontrollere antallet -taller. Er der overensstemmelse, anses den modtagne byte for korrekt modtaget. Men hvis to bit ændres under forsendelse kan man ikke opdage det på denne måde!! Data kan sendes synkront eller asynkront. Ved synkron forstås, at man sammen med data sender en klokpuls på en anden ledning. Modtageren ved så, hvornår der skal klockes data ind på fx dataindgangen på en skifteregister. Ved asynkront dataoverførsel er modtageren ikke klar over, hvornår der ankommer en datapakke. Modtageren bruger selve startbittet i datapakken til at synkronisere efter. Modes & Kontrolbit Den Serielle port kan sættes op i 4 modes, mode 0 til. Modes og andre opsætninger foretages ved at sætte nogle bit i SCON, = Seriel port Control-registeret. Vha. Mode-valg indstilles den serielle ports funktion. I Mode 0 kan der vha. en skifteregister, SIPO- eller PISO - register laves udvidelser i antallet af I/Olinier. I Mode sendes blot 8 bit!! I Mode & bruges udover de 8 databit en 9. databit som kan bruges til paritetsbit. Udskr Fil:89C05 kompendium.doc Side af 48
23 89C405 Se senere: Først gennemgås de forskellige bit i SCON registeret. Bitplaceringen er som følger: SCON Registeret: Bit 7 Bit Bit 0 SM0 SM SM REN TB8 RB8 TI RI Bit og deres navne i SCON-registeret. Her følger en nærmere forklaring af bittenes betydning: Bit SM0 SM SM Forklaring Mode-valg-bit * Se næste skema Mode-valg-bit * se næste skema. Multiprocessorbit SM bit styrer Multiprocessor-data-udveksling i mode &. Er SM sat, bliver modtage interrupt flaget RI, Receive Interrupt ikke sat, når det 9. modtagne bit, RB8 er nul. Dette bruges i systemer med flere processorer, hvor en processor sender data ud til én af max 55 tilsluttede under-processorer. Er SM bit lav, bliver flaget RI sat, uafhængig af det 9. databit i hvert modtaget ord. Hvis sat op, bliver der når RI bliver sat, udført et interrupt. ( Se i interrupt-afsnittet. ) SM ønskes næsten altid = 0!!!! I hvertfald her!! REN TB8 RB8 TI RI Bit Receive Enable. Sættes denne, frigives / tillades modtagelse af data på RxD. = 0 disabler modtagelse. Bruges i mode &. I mode og sendes altid 9 databit, hvoraf sidste tages fra bit TB8. Sættes / cleares af software! Bruges i mode &. I mode & gemmes det 9. bit = paritetsbit i bit RB8. Transmit Interrupt Flag. Transmit færdig!. Flaget sættes automatisk når et ord er sendt. Dette kan fx udløse et interrupt i styreprogrammet, eller programmet kan blot vente på at dette bit sættes. I Mode 0 sættes TI ved slutningen af det 8. Bit. I de øvrige modes sættes TI ved begyndelsen af det 9. Bit ( Stopbit / paritetsbit??? ) Softwaren skal resette TI igen! Receive Interrupt flag. Modtage færdig-flag. Udskr Fil:89C05 kompendium.doc Side af 48
24 89C405 SM0 og SM er Mode valg bit. Mode Styrebit SM Forklaring af portens funktion i mode: 0 SM0 = 0 SM = 0 Skal være 0 8 bit skifteregister, Bruges fx til udvidelse af antal I/O-linier Sende/Modtagefrekvens : Krystallet / RB8 bruges ikke. TI, Transmit Interrupt sættes ved slutningen af det 8. Bit. SM0 = 0 SM = Sat RI-bittet sættes ved slutningen af det 8. bit 8 bit UART Sendefrekvens / Modtagefrekvens indstilles med timer og bit SMOD.. Hvis SM er sat, udføres der kun et interrupt ( RI flaget sættes ) hvis der modtages gyldig stopbit efter et modtaget ord. Det modtagne stopbit lagres i RB8. TI bittet sættes ved begyndelsen af det 9. Bit ved sending. Receivebit RI sættes i midten af stopbittet. SM0 = SM = 0 SM0 = SM = 9 bit UART. Sende/modtage frekvens Krystal / ( eller 64 ) 9. bit er paritetsbit, Skal lagres i RB8 i reg. SCON. TI, Transmit Interrupt bit sættes ved begyndelsen af det 9. Bit. Skal resettes af programmet. RI, Receive Interrupt bit sættes i midten af stopbittet. 9 bit UART. Sende/modtage frekvens indstilles med timer og bit SMOD. 9. bit er paritetsbit, TI, Transmit Interrupt bit sættes ved begyndelsen af det 9. Bit. Skal resettes af programmet. RI, Receive Interrupt bit sættes i midten af stopbittet. Mode 0, Syncront dataoverførsel. Her forklaret brugt til udvidelse af antal I/O-ledninger I mange tilfælde slår ud- eller indgangene ikke til i en applikation. I Mode 0 kan antallet af input hhv. udgange udvides vha. eller flere skifteregistre eller rettere Seriel til parallel registre eller parallel til seriel registre. 405 kan ikke bruges, da den mangler en Strobe-indgang. Der skal bruges ben i controleren, RxD, TxD og en portpin. Udvidelse af udgange: Udskr Fil:89C05 kompendium.doc Side 4 af 48
25 89C405 RxD sluttes til Dataindgangen i SIPO-registeret. Figuren viser en SIPO-register tilsluttet porten. RxD er normalt indgang, men i mode 0 er den udgang?? I begge retninger?? TxD sluttes til skifteregisterets Clock. Når et ord skrives ud i SBUF-registeret, begynder hardwaren med at sende bittene ud synkront. Ved slutningen sættes bit TI. Figuren viser den indre blokstruktur ved synkron sending. Pgr-eksempel til at sende værdier ud i en SIPO udvidelses-register.: Mov SCON, #00h Mov SBUF, A ; Mode = 0, Receive disablet ; A-registeret sendes ud til SBUF og sendes ud. Udskr Fil:89C05 kompendium.doc Side 5 af 48
26 89C405 L: JNB TI, L ; Vent til alle bit er sendt ud og TI flaget er blevet sat. Clr TI ; Reset TI flag Clr P. ; Strobe til SIPO reg ( load ) Aktiv lav. Setb P. ; Strobe høj igen! Udvidelse af indgange: Figuren viser en PISO-skifteregister tilsluttet porten. Og den indre struktur. REN-flaget skal sættes til, RI til 0! Vha. en synkron taktudgang på TxD clockes data fra en PISO ind i Controlerens skifteregister og loades efterfølgende over i SBUF, hvorefter flaget RI, Receive Interrupt sættes. Udskr Fil:89C05 kompendium.doc Side 6 af 48
27 89C405 PISO-registerets Parallel Load styres af et portpin. Flere registre kan sluttes til!! Programeksempel på udvidelse af indgange: Mov SCON, #00h ; Mode 0, Receive disable Clr P. ; Strobe aktiv lav! Setb P. ; Setb REN ; Start dataindlæsning L: JNB RI, L ; Vent indtil data er læst ind og RI er sat! Clr REN ; Stop indlæsning Clr RI ; Slet RI-flag Mov A, SBUF ; Flyt SBUF til A-registeret. Mode, 8-bit. Figuren viser den indre struktur ved sende / modtage i mode Udskr Fil:89C05 kompendium.doc Side 7 af 48
28 89C405 I mode sendes / modtages asynkront på ledning + stel. Dvs. uden at man overfører klokfrekvensen. Dette kræver, at både sender og modtager arbejder med samme format ( Startbit, databit & stopbit ) og med samme Baudrate. Synkroniseringen mellem sender og modtager sker vha selve dataene, dvs. startbittet. Normalt er der Højt på TxD, som så modtages på en anden processors RxD. Når der registreres et 0, dvs. en faldende flanke på modtageren, registreres dette som starten på en datapakke. I midten af det modtagne startbit tjekkes igen om der stadig er nul på RxD, eller det blot var støj. Er der stadig lav, opfattes det af modtageren som start på data, altså et startbit. Herefter ventes til midten på første databit, bit 0, LSB, hvor værdien på RxD, 0 eller, clockes ind i input-skifteregisteret. Dette sker igen for de følgende 8 bit. Idet der aftastes i midten af et bit-varighed opnås en pæn støjundertrykkelse. Det er absolut nødvendig, at man er klar over Baudraten. I midten af stopbittet sættes RI, Receive Interrupt flaget. Stopbittet er altid højt, og senderen er igen klar til på et tilfældigt tidspunkt at sende en ny byte. Baudraten styres for både sender og modtager af timer -overløb. Den indbyggede Timer / Tæller tæller op fra en indstillelig værdi, og ved overløb ( FFh ) sendes en kort puls videre til den serielle del. Her deles timer-overløb-pulserne igen med 6, og evt. yderligere med (afh. af bit SMOD ). Er SMOD sat til 0, deles altså med, er SMOD = deles med 6. SMOD findes som bit 7 i PCON registeret, Power Control Register. Mov PCON, #00h ; SMOD = bit 7 i PCON = 0, altså deles med (6 * ) Baudraten bestemmes altså som krystallets frekvens / og så i den serielle del igen med 6 eller. Anvendes en.059 MHz passer det med de gængse baudrates. Baudraten kan beregnes vha flg. formel: ( Se også: ) SMOD Tælleroverløb Baudrate = Flg skema viser oversigt over gængse Baudrates og indstillingerne: Baudrate Timer Reload værdi Krystalfrekvens MHz SMOD bit 0 07h 6, h, A0h, D0h, E8h, F4h,059 0 Udskr Fil:89C05 kompendium.doc Side 8 af 48
29 89C FAh, FAh, FDh, ,K 0FDh,059 57,6K 0FFh,059 Der kan tillades en frekvensafvigelse på +- %. Timer indstilles til Mode. ( automatisk Reload af 8 bit startværdi ). De 8 bit reloadværdi gemmes i TH i opstarten af programmet, og kopieres så automatisk over i TL, der tæller op med ( osc / ) til FFh. Der kommer en kort pols på TF, TL genloades automatisk med værdien i TH, og der tælles forfra. Eksempel på Sendeprogram Mov SCON, #40h ; Enable seriel reg, Mode =, 8 bit data, Receive disabled. ; Evt. Setb SM. Mov TMOD, #0h ; Timer mode Auto Reload ; C/T = 0 ; Gate = 0 ;Timer 0 disabled Mov PCON, #80h ; Sæt bit SMOD i reg PCON, Bit 7, ; = Ikke dele med, kun 6 Mov TH, #00h-6 ; Genloadværdi = 6, = 0FAh ;,059 MHz / / 6 / 9600 Baud = 6! ; Tælleren loades med 00h 6! Setb TR ; Start timer, Timer Run ( I TCON Registeret ) Clr TI ; Clr Transmit Interrupt bit. Mov SBUF, A ; Aværdi til SBUF, og start automatisk sendefunktion JNB TI, $ ; Vent til sendebuffer er tom, TI bliver sat, ; $ = Samme linie Eksempel på modtageprogram Mov SCON, #50h ; Enable Seriel reg, Mode, 8 databit, Receive enable Mov TMOD, #0h ; Timer = mode ; C/T = 0 ; Gate = 0 ; Timer 0 disabled Mov PCON, #00h ; SMOD = 0 ( Deler yderligere med ) Mov TH, #00h- ; Genloadværdi = FFh = FD, 9600 Baud. Udskr Fil:89C05 kompendium.doc Side 9 af 48
30 89C405 ; (,059 MHz / / 6 / / 9600 Baud ) Setb TR ; Start timer JNB RI, $ ; Vent på RI flag Clr RI ; Slet Receive flag Mov A, SBUF ; læs modtaget byte til reg A Seriel Mode Baudrate er altid krystallets frekvens / 64?? Der sendes 9 databit, hvoraf sidste er paritetsbit. Det 9. Bit sendes fra register TB8, og hos modtageren gemmes det i RB8. Incl. Startbit og stopbit sendes altså bit pr Byte. Baudraten bestemmes udelukkende af krystallets frekvens og bit SMOD Formel: SMOD Krystalfrekvens Baudrate = 64 Er SMODflaget = 0, er baudraten = Krystalfrekvensen / 64., er SMOD sat, deles med. Mode har den fordel, at der ikke skal bruges en timer. Men kun baudrates er opnåelige!! Seriel Mode Mode er i princippet en kombination af mode og. Der sendes 9 bit data foruden startbit og stopbit. Baudraten er som i mode afhængig af timer overløb. Følgende side giver et overblik over den serielle del, mode, 8 bit.: Udskr Fil:89C05 kompendium.doc Side 0 af 48
31 89C405 Seriel datatransmission med 89C405 Oscillator-clock Fra krystallet. ;Opsætning af Timer: Mov TMOD, #0h Mov TH, #Baudrate Setb TR Baudrate-tabel: 0E8h = 00 Baud 0F4h = 400 Baud 0FAh = 9600 Baud ( Ved.059 MHz ) Clock TR Setb TR TimerRun Timer Baudrate-generator TH Mode, Auto reload Timeren giver en puls til den serielle del for hver overløb RxD Pin P.0 Ben Setb SM SM0 SM Modevalg Mode 0 = 8 Bit Seriel Modtager Baudrate-pulser Seriel data ind REN SBUF Setb REN Mov a, SBUF Også til Sender-delen ; Opsætning Setb SM ; Mode, 8 bit Setb REN ;Send data seriel: Clr TI Mov SBUF,A JNB TI,$ ;Modtag data: Clr Ri JNB RI, $ Clr RI Mov a, SBUF Receive Interrupt Sættes, når en Byte er modtaget Får også Baudratesignal fra Timer Ri Clr RI ( JNB Ri, $ ) Clr Ti ( JNB Ti, $ ) Ti Seriel Sender SBUF Mov SBUF,A Or ES Setb ES Enable Seriel Interrupt Transmit Interrupt Sættes automatisk, når alle bit er sendt EA Seriel data Ud Setb EA Enable All Interrupt Adresse 0h Programmet afbryder, hvad det er i gang med, og hopper til adresse 0h i Rommen Klockpulser fra timer TxD Pin P. Ben Valle 0/9-0 7/-04 Udskr Fil:89C05 kompendium.doc Starter automatisk, med at sende seriel signal, når der flyttes en Byte ind i SBUF. Side af 48
32 89C405 Interupts: Til mange anvendelser må et microcontroler-system hurtigt reagere på en ( ikke forudset ) begivenhed fx et tastetryk eller en regelmæssig afbrydelse fra timerfunktionen. Selvfølgelig noget, der er indprogrammeret af programmøren. Til dette formål bruges interrupts. Hvis der optræder et interrupt, kan man få processoren til at afbryde det, den er i gang med, og hoppe til en speciel interrupt-rutine. Nogle gange kan et program opbygges uden at der sker noget særligt i selve hovedprogrammet, men kun ved interrupts. Fx at multiplexe et display. 805 familien har 5 forskellige interruptmuligheder, externe, fra port-indgange, og interne. Extern interrupt 0 eller fra porten, pin /INT0, pin P., eller /INT, P. Timer-interrupt fra timer 0 eller Interrupt fra en intern seriel kommunikationssystem Software-interrupt En intern eller extern udløst interrupt afbryder straks det løbende program, og der springes til en for pågældende interrupt specifik adresse i ROM`en. Adressen kaldes også for en Interrupt Vektor. Her er der til hver interrupt afsat 8 byte plads til et lille interruptprogram, en Interrupt Service Routine. Normalt kan der ikke udføres meget på de få pladser, der er afsat, men der kan udføres et kald eller hop til en underrutine. Se senere for en memory-map. Efter interrupt-rutinen skal der udføres en RETI ordre, og der vendes tilbage til det afbrudte program. De externe ineterrupts sker ved at gøre pin P., (/INT0) eller P., (/INT) lave. Det kan vælges, om det skal være på den nedadgående flanke, eller på lavt niveau. De forskellige muligheder kan vælges ved at sætte / resette et bit i et specielt register, i TCONregisteret. = Timer Control Register. Det er IT0 og IT, hhv. Interrupt0 og interrupt. Det kan fx ske ved ordren: Setb IT0 Clr IT0 Er IT0 / IT bittet = 0, bliver indgangssignalet niveau-trigget. Dvs. at der udløses interrupts så længe, /INT0 hhv. /INT benene er lave. Er IT0 / IT bittet =, udløses et interrupt med en lav-gående flanke på /INT0 hhv. /INT. Max flankestejlhed er us, og varigheden skal mindst være maskincykler = oscillator perioder. IT0 ligger på TCON.0 Udskr Fil:89C05 kompendium.doc Side af 48
33 89C405 IT på TCON. ( se skema senere ) Interrupts fra inputpin kan ske på lavt niveau, eller på negativ flanke. Udløses et interrupt af /INT0 hhv. /INT sættes bit IE0 hhv. IE i TCON ( Timer Control ) Registeret. Disse bit kan også sættes / resettes af softwaren. Var interruptet udløst af en flanketrigget interrupt, resettes IE0 hhv. IE bittes automatisk af interruptrutinen. Var interrupttet udløst af en niveau-trigget signal, forbliver IE0 hhv. IE bittet sat så længe interrupt-pin`en er lav. TCON registeret er både BIT og BYTE adresserbar. Fx MOV TCON, #00000B Setb IE0 ; sætter bit, 4 og 8 i TCON registeret. ; sætter bit IE0 højt. De internt udløste interrupts styres af overløb af en af de to timere, eller den serielle kommunikationsmulighed. Overløb er når timeren går fra fx FFFFh til 0000h. Ved timeroverløb ( Timer 0 eller timer ) sættes automatisk pågældende timer overflow bit eller Timer Flag, TF0 / TF i TCON registeret, ( Timer Control Registeret ) Udskr Fil:89C05 kompendium.doc Side af 48
34 89C405 Et timer-overløb kan udløse et interrupt, hvis det er enablet, ET0, Enable Timer0-interrupt er sat, og EA, Enable All er sat Her vises igen TCON registeret: TCON Register Timer Control Register ( = 00h ved Reset ) Timer Timer 0 Interupt Control Bit TF TR TF0 TR0 IE IT IE0 IT0 Timerflag Timer Run Timerflag 0 Timer 0 Run Sættes v. overløb af timer L: JNB TF L CLR TF Eks: Software sættes til for at enable timeren. SETB TR CLR TR Sættes v. overløb af timer 0 Mov TCON, #xxxxxxxxb Software sættes til for at enable timeren. Bit der bliver sat af interrupt fra pin P. /INT Resettes af Clr IE Vælg extern interrupt mode: 0 = Nivotrigning = neg flanketrigning Bit der bliver sat af interrupt 0 fra pin P. /INT0 Vælg extern interrupt 0 mode: 0 = Nivotrigning = neg flanketrigning Hver af de forskellige interrupts, der skal bruges i et program, skal individuel enables for at de går videre ind til processoren og udløser et interrupt. Dvs. at man skal sætte disse bit, for at angive, om interrupt er tilladt i ens program. Dette gøres i IE-registeret, Interrupt Enable Registeret. Ved reset sættes IE-registeret til 0xx Dvs. interrupts er disablet. IE-registeret, Interrupt Enable Register, ( Sættes ved reset til 00h ) Bit EA ES ET EX ET0 EX0 Enable All Overordnet Enable interrupt fra Seriel port Enable Timer interrupt Enable externt Interrupt Enable Timer0 interrupt Enable externt Interrupt Ex. Mov IE, #8h Setb EA Setb ET0 ;sæt både bit 7 og. Det gør de to næste ordrer også. I bit 7 i IE-registeret ( Interrupt Enable ) findes en styrebit, EA ( Enable All ) Den er overordnet, og skal sættes for i det hele taget at få en af interruptene ind til processoren Udskr Fil:89C05 kompendium.doc Side 4 af 48
35 89C405 Setb EA Følgende skema viser alle mulighederne for at styre de forskellige interrupts. Obs.: Nederste interrupt er ikke med I 89C405!! Interrupt prioritet: For hver interrupt kan der sættes lav eller høj prioritet. Det sker i IP Registeret, ( Interrupt Prioritets Register ) Sættes bittet = vælges høj prioritet, er de lave, default, er der valgt lav prioritet. Dette har normalt kun betydning hvis der forekommer flere samtidige interrupts. Der er en indbygget interrupt-prioritetsrækkefølge: Interrupt-kilde Bit Interrupt-Adresse Prioritet Extern Interrupt IE0 000h Tæller 0 Overflow TF0 000Bh Extern Interrupt IE 00h Tæller Overflow TF 00Bh 4 Seriel RI eller TI 00h 5 Udskr Fil:89C05 kompendium.doc Side 5 af 48
36 89C405 Interrupt adresse: Normalt starter et program i ROM`ens adresse 0000h. Men hvis der i et program benyttes interrupts, skal ens program starte fra fx adresse 0h. Når der udløses et inerrupt, hopper processoren til en af fabrikanten fastlagt adresse i programhukommelsen ROM en. En såkaldt interruptvektor. Startes et interrupt hopper processoren til flg. adresser i ROM`en. Interrupt-register Navn ROM-adresse Forklaring IE.7 IE.6 IE.5 IE.4 ES 00h UART interupt IE. ET 00Bh Timer IE. EX 00h Extern Interupt P. IE. ET0 000Bh Timer 0 IE.0 Ex0 000h Extern Interupt 0 P. 0000h Programmet starter her ved reset. Det ses, at første interruptadresse ligger i adresse 0h. Der er til hver interrupt afsat 8 Byte, hvilket ikke er nok til et interruptprogram, men nok til at udføre et jump eller et call. Resettes processoren, hopper den til adresse 0000h. Dvs. at hvis der benyttes interrupts, skal processoren straks i adresse 0000h udføre et hop til en højere adresse. ORG ordren ORG ordren vil få oversætteren assembleren til at fastlægge maskinkoden på en nøjagtig adresse. Kaldene til interrupts ligger som vist i ovenstående skema fast på følgende adresser. Et program kunne fx se således ud! ORG 0000h SJMP Start ORG 000h - ; Der hoppes til programstart ;extern Interrupt 0 programstart. Udskr Fil:89C05 kompendium.doc Side 6 af 48
37 89C405 ;Kort Program, max 8 byte, placeres her. ;Evt. kaldes en underrutine længere oppe i programmet. fx Call Ext_Int_Subrutine RETI ; Returner fra interrupt. ORG 000Bh ;Timer 0 Call nnnnn Reti ORG 00h ;Extern interrupt Call xxxx Reti ORG 00Bh ;Timer Call Reti Start: ORG 00h Call Reti ORG 000h Hovedprogram END ;Seriel interrupt ;Her starter hovedprogrammet. Når der udføres et interrupt gemmes kun den gl. instruktionspointer på stakken, ellers intet. Derfor skal hver register, der bruges i interuptrutinen gemmes på stakken, og hentes tilbage ved rutinens afslutning. Før en RETI instruktion. Ellers kan beregninger blive forkerte. Retur hop fra en interrupt sluttes altid med RETI instruktion. Eksempel på en interruptrutine: Interrupt_rutine: PUSH PSW PUSH ACC ; Gem flag ; ACC gemmes ( Evt. Mov PSW, ny registerbank! ) Selve interrupt programmet her POP ACC POP PSW Udskr Fil:89C05 kompendium.doc Side 7 af 48
38 89C405 RET ( Eller hvis subrutine programmet blev nået med en JUMP ordre fra fx adresse 000h afsluttes med en RETI ordre! ) Følgende side viser en oversigt over interrupt-indstillinger for 89C405 Udskr Fil:89C05 kompendium.doc Side 8 af 48
39 89C405 Interrupt-indstillinger for 89C405 Extern interrupt 0 AT89C405 Pin P. /INT0 NOT Interrupt flag Clr IE0 IE0 Interrupt Vektor 0h Flanke trigget Setb EX0 EX0 EA IT0 Setb IT0 Clr IT0 Enable extern interrupt Setb EA Enable All Extern interrupt Pin P. /INT NOT Interrupt flag Clr IE IE Interrupt Vektor h Flanke trigget Setb EX EX EA IT Setb IT Clr IT Enable extern interrupt Setb EA Enable All Er der valgt flanketrigning, resettes IE0 / IE automatisk af interruptfunktionen d. /4-05 / Valle Udskr Fil:89C05 kompendium.doc Side 9 af 48
40 89C405 Registerbanks: De specielle registre, R0, R til R7 ligger på RAM-adresse 00h til 07h. Men der er mulighed for at vælge andre registerbanks. Er fx registerbank valgt, vil R0 til R7 være RAM-adresse 08h til 0Fh, osv. Registerbanks vælges ved at sætte bits i PSW-registeret, Program Status Word. Det kan være smart at reservere en registerbank til en interrupt rutine!! Bruges flere registerbanks, må man sætte Stack Pointeren SP til en højere RAM-adresse fx 0h. Mov SP, #0h Register Bank vælges ved at sætte bit i PSW registeret på følgende pladser:: PSW BIT CY AC F0 RS RS0 OV - P Bank Bank 0 Bank 0 Bank Fx: eller Setb RS0 Mov PSW, # b Bank Ram-adresse Vælges med Binær (Hex) 8h til Fh Mov PSW, #000000B Mov PSW, #8h 0h til 7h Mov PSW, # B Mov PSW, #0h 08h til 0Fh Mov PSW, # B Mov PSW, #08h 0 00h til 07h Mov PSW, # B Mov PSW, #00h Betydningen af de andre bit I PSW: Bit CY AC F0 Betydning Carry, eller bare C-flaget sættes, hvis der er overløb, eller underløb I Acc-registeret. Fx efter en addition. Auxilliary Carry-flag, bruges ved BCD-aritmetik. Sættes hvis værdien af de 4 mindste bit ( Nibbel ) i Acc har en værdi større end 9. Kan sættes / resettes af brugeren / programmet. Påvirkes ikke af operationer!! Udskr Fil:89C05 kompendium.doc Side 40 af 48
41 89C405 RS RS0 OV - P Bank select. Bank select. Overflow bit. Bruges ved beregninger med fortegn. Paritetsbit. Bliver, hvis antallet af -taller i ACC er ulige, ellers 0. Følgende skema viser igen mulighederne for at styre de forskellige interrupts. Udskr Fil:89C05 kompendium.doc Side 4 af 48
42 89C405 Nogle af assembler-koderne i instruktionssæt-oversigterne er lidt svære at tolke. Følgende kan måske hjælpe: Mnemonic Betydning Eksempler Betydning Rn Register R0 til R7 ( i RAM ) ( I den pt. valgte registerbank ) DEC R ADD A,R MOV R0,A Mov R, #Ah direct 8-bit (Byte) intern data i adresse lokation. Dette kan være en intern RAM-adresse i området (0 7), eller en SFR, en Special Function Register, fx en port, en kontrolregister, en statusregister osv. i adresseområdet (8 til 55) ADD A,P MOV TMOD,#Ah Mov a, 0h (=> Fra RAM adr 0 Register R0 eller R kan bruges som en slags Pointer til den adresse i RAM, der svarer til de 8 bit i registeret. Dvs. indirekte addressering. Mov a #data 8-bit tal. Et tal skal starte med #, ellers menes indholdet i den RAM-adresse, der angives ved tallet. ADD a,#0fh MOV a,#04h Mov Tmod, #0Eh Mov a, # = Mov SP,#0h Mov DPTR, Tbladr Index : h = Hex b = binær Ingen = Decimal #data 6 6 bit tal inkluderet I instruktionen Bruger vi ikke!! addr 6 6 bit destination adresse. Bruges af LCALL og LJMP. Et hop kan være til hvor som helst inden for Program Memmory Adresse området, ( 0000h -??? ) Bruges i 64 k-byte systemer!! Bruger vi ikke!! Vi har kun K at arbejde på!! addr bit destination adresse. Bruges af ACALL og AJMP. Et hop ( branch ) kan være inden for K-byte i Program Memmory Adresse området (0000h til 7FFh) ACALL START AJMP IGEN Kald subrutinen med lablen START. Absolut hop til lablen IGEN: rel Relativ hop til label. Dvs. et hop et antal hukommelsespladser frem eller tilbage. Max 8 bit offset, dvs. max 8 til +7 bytes. Bruges af ordren SJMP og alle betingede hop. Sjmp Hertil Cjne a, #0h, Igen Udskr Fil:89C05 kompendium.doc Side 4 af 48
43 89C405 bit Direct adresseret bit i den interne data RAM eller SFR register. Fx cpl p. Clr P. Setb TR0 Setb ET0 Jnb P.0, Main Jb P. Complementer bit i port. Adresserbar bit kan fx. være Port : P_0 P_ P_ P_ P_4 P_5 P_6 P_7 AIN0 AIN Port P.7 P.5 P.4 P. P. P. P.0 Fx: Setb P.0 Clr P.7 JNB CY, Label ; TCON (Timer kontrol) TF TR TF0 TR0 IE IT IE0 IT0 PSW-register CY AC F0 RS RS0 OV FL P?? AOUT T T0 INT INT0 TXD RXD IE EA ES ET ET EX ET0 EX0 Følgende sider gengiver nogle af indstillings-oversigterne: Udskr Fil:89C05 kompendium.doc Side 4 af 48
44 89C405 Flg. viser definering af timer0. Register TMOD Timer Gate Timer 0 C/T M M0 Mov TMOD, # b Gate = 0 C/T = 0 Mode = OSC/ fx MHz Mode-bit M & M0 : 00 = 5+8 bit 0 = 6 bit Timer / Counter 0 = 8 bit autoreload til Baudrategenerering =!! Diagrammet gælder for Timer 0 Timer fungerer på tilsvarende måde Input-pins P.4 Input T0, Pin 8 TF0 = Timer Nul Overflow Flag eks.: JNB TF0, $ TF0 resettes automatisk ved et udløst interrupt Interrupt Administration Timer 0 vektor = 0Bh Timer vektor = Bh INT0 P. Pin Mode 6 Bit Tæller TF0 Clr TF0 Inter rupt Timer0 Run bit TR0 Bit i TCON Setb TR0 Mov TH0, #Eh Mov TL0, #00h Bit ET0 Enable Timer 0 Interrupt Setb ET0 Bit EA Enable All Interrupts Setb EA Evt også Prioritetsbit Setb PT0 0 = lav prioritet = høj prioritet Udskr Fil:89C05 kompendium.doc Side 44 af 48
45 89C405 Indstilling af extern interrupt Extern interrupt 0 AT89C405 Pin P. /INT0 NOT Interrupt flag Clr IE0 IE0 Interrupt Vektor 0h Flanke trigget Setb EX0 EX0 EA IT0 Setb IT0 Clr IT0 Enable extern interrupt Setb EA Enable All Extern interrupt Pin P. /INT NOT Interrupt flag Clr IE IE Interrupt Vektor h Flanke trigget Setb EX EX EA IT Setb IT Clr IT Enable extern interrupt Setb EA Enable All Er der valgt flanketrigning, resettes IE0 / IE automatisk af interruptfunktionen d. /4-05 / Valle Udskr Fil:89C05 kompendium.doc Side 45 af 48
46 89C405 Seriel datatransmission med 89C405 Oscillator-clock Fra krystallet. ;Opsætning af Timer: Mov TMOD, #0h Mov TH, #Baudrate Setb TR Baudrate-tabel: 0E8h = 00 Baud 0F4h = 400 Baud 0FAh = 9600 Baud ( Ved.059 MHz ) Clock TR Setb TR TimerRun Timer Baudrate-generator TH Mode, Auto reload Timeren giver en puls til den serielle del for hver overløb RxD Pin P.0 Ben Setb SM SM0 SM Modevalg Mode 0 = 8 Bit Seriel Modtager Baudrate-pulser Seriel data ind REN SBUF Setb REN Mov a, SBUF Også til Sender-delen ; Opsætning Setb SM ; Mode, 8 bit Setb REN ;Send data seriel: Clr TI Mov SBUF,A JNB TI,$ ;Modtag data: Clr Ri JNB RI, $ Clr RI Mov a, SBUF Receive Interrupt Sættes, når en Byte er modtaget Får også Baudratesignal fra Timer Ri Clr RI ( JNB Ri, $ ) Clr Ti ( JNB Ti, $ ) Ti Seriel Sender SBUF Mov SBUF,A Or ES Setb ES Enable Seriel Interrupt Transmit Interrupt Sættes automatisk, når alle bit er sendt EA Seriel data Ud Setb EA Enable All Interrupt Adresse 0h Programmet afbryder, hvad det er i gang med, og hopper til adresse 0h i Rommen Klockpulser fra timer TxD Pin P. Ben Valle 0/9-0 7/-04 Udskr Fil:89C05 kompendium.doc Starter automatisk, med at sende seriel signal, når der flyttes en Byte ind i SBUF. Side 46 af 48
47 89C405 RI Bit i SCON TI Bit i SCON Bit ES Enable Seriel Interrupt Bit EA Enable All Interrupts Interrupt Administration Adresse h i ROM Org h Jmp Seriel_int ; Hop til subrutine. ( Afslut med RETI ) Udskr Fil:89C05 kompendium.doc Side 47 af 48
48 89C405 Power on reset: Ved Cmoskredse kan man nøjes med en uf kondensator, idet kredsen intern har en modstand ( iflg filen AT89 Series Hardware Description. ) Udskr Fil:89C05 kompendium.doc Side 48 af 48
Seriel kommunikation
Introduktion til seriel kommunikation. Senest redigeret d. 1/11-2011. / Valle Se genial om 8051 seriel kommunikation: http://www.edsim51.com/8051notes/8051/serial.html I AT89C4051 er der indbygget en Seriel
Arduino Programmering
Microcontroller, Arduino I teknologi skal vi lære at lave programmer til uc for at have muligheden til eksamen at kunne lave intelligente el-produkter. I hvert fald skal vi have set mulighederne, og forstået
Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!)
MHz KIT Rev: /- Det er ikke tilladt, at man bare udsender radiobølger på den frekvens, man ønsker. Forskellige frekvenser er udlagt til forskellige formål. Nogle til politiet, militæret, FM-radio-transmission,
LCD Character display Intro
LCD Character display Intro Der findes flere typer af LCD karakter-displays, fra forskellige firmaer. Her er vist en type, der er blå. Pins: Nummer 1 fra venstre Her er vist en nærmere beskrivelse af de
Indholdsfortegnelse :
Udarbejdet af Kasper jensen EUC-Syd 4ES 10-3-2001 Indholdsfortegnelse : Indholdsfortegnelse :...2 Mikroprocessor general :...3 Mikroprocessors funktion :...3 AT89C4051 :...3 Programmering :...3 Assambler
Microcontroller, Arduino
Microcontroller, Arduino Programmerbar elektronik. uc Vi skal lære at lave programmer til uc for at kunne lave el-produkter. Forstå princippet i programmering af en uc og se mulighederne. Programmeringen
Introduktion til Microcontrollere Version
Denne intro til Micro controllere er oprindeligt skrevet til Atmels AT89C2051, der er baseret på en gammel 8051-familie fra INTEL. Den man køber nu hedder AT89C405. Det er en opgraderet udgave med dobbelt
Microcontroller, Arduino
Microcontroller, Arduino Kompendium til Arduino-programmering i Teknologi. Vi skal lære at lave programmer til uc for at kunne lave el-produkter. Vi skal forstå princippet i programmering af en uc og se
Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.
Flowchart Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller. Et godt program til at tegne flowcharts med er, EDGE-Diagrammer, eller Smartdraw.
TG 8. Indhold: TG8 - Kredsløbsbeskrivelse Gruppemedlemmer: Kim Andersen, Kasper Jensen & Thyge Mikkelsen Dato: Modtaget af: Søren Knudsen
TG 8 EUC-Syd Sønderborg 6. Skoleperiode Elektronikmekaniker Indhold: TG8 - Kredsløbsbeskrivelse Gruppemedlemmer: Kim Andersen, Kasper Jensen & Thyge Mikkelsen Dato: 30 04-2002 Modtaget af: Søren Knudsen
System Arkitektur og Integration
Mikael Svenstrup System Arkitektur og Integration 1/24 System Arkitektur og Integration MM11: Seriel kommunikation 2 (SW) Indhold Mikael Svenstrup System Arkitektur og Integration 2/24 Tidligere har i
Datamaters arkitektur og programmering
Mikael Svenstrup Datamaters arkitektur og programmering 1/24 Datamaters arkitektur og programmering MM11: Seriel kommunikation 2 (SW) Indhold Mikael Svenstrup Datamaters arkitektur og programmering 2/24
89C4051 opgaver. MSB Opgave 1, Løbelys LSB MSB Opgave 2, Løbelys med 2 Led LSB x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
Den første opgave går ud på at lave et program der får LED`ene i LEDkittet til at lyse i flg. mønster, idet et X indikerer en tændt diode. Fordi denne microcontroller kun kan Sink e strøm, er dioderne
GSM SMS Modem MODEL: SA RTU-1 V1.01
GSM SMS Modem MODEL: SA RTU1 V1.01 Brugervejledning Indgange: Der er fire indgange på modulet. De kan programmeres som normale indgange. De kan programmeres som tæller. Udgange: Der er en udgang på modulet
IAI Quick Start Guide
IAI Quick Start Guide Opsætning: Manualen til controllerene ligger i: Produkter\IAI\Manual\RoboCylinder\Controller\ Her ligger den i en undermappe alt efter hvilken type controller det er. Installer RCPC
Indhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output...
Indhold Maskinstruktur... 3 Kapitel 1. Assemblersprog...3 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... 9 Kapitel 2. Maskinkode... 13 2.1 Den fysiske maskine... 13 2.2 Assemblerens
Øvelse. Øvelse. D.1 CMOS-øvelse. Under øvelsen laves notater, som senere bruges i den efterfølgende journal! Opgave 1:
D.1 CMOS-øvelse Under øvelsen laves notater, som senere bruges i den efterfølgende journal! Opgave 1: A): Opbyg flg. kredsløb: Tilslut til 12 Volt. De to indgange er kortsluttede, og forbundet til en ledning
Analog Øvelser. Version. A.1 Afladning af kondensator. Opbyg følgende kredsløb: U TL = 70 % L TL = 50 %
A.1 Afladning af kondensator Opbyg følgende kredsløb: U TL = 70 % L TL = 50 % Når knappen har været aktiveret, ønskes lys i D1 i 30 sekunder. Brug formlen U C U start e t RC Beskriv kredsløbet Find komponenter.
Arduino Programmering
Microcontroller-programmering med Arduino I teknologi skal vi lære at lave programmer til en microcontroller for at have muligheden til eksamen at kunne lave intelligente el-produkter. I hvert fald skal
MCE2040 SERIEL KOMMUNIKATIONSMODUL
Kokkedal Industripark 4 DK-2980 Kokkedal DANMARK Tlf.: +45 49 18 01 00 Fax: +45 49 18 02 00 MCE2040 SERIEL KOMMUNIKATIONSMODUL Overførsel af status og vægt for digitale vejeceller via simpel PC/PLC protokol
Introduktion til programmering. Af mikroprocessor Atmel ATmega328P i en Arduino Uno
Introduktion til programmering Af mikroprocessor Atmel ATmega328P i en Arduino Uno Min baggrund: Intel 4004, 4 bit, maskinsprog Intel 8008, 8 bit, maskinsprog bit for bit I sprogene: assembler, Fortran
Lyskryds. Thomas Olsson Søren Guldbrand Pedersen. Og der blev lys!
Og der blev lys! OPGAVEFORMULERING:... 2 DESIGN AF SEKVENS:... 3 PROGRAMMERING AF PEEL KREDS... 6 UDREGNING AF RC-LED CLOCK-GENERAOR:... 9 LYSDIODER:... 12 KOMPONENLISE:... 13 DIAGRAM:... 14 KONKLUSION:...
ELCANIC A/S. ENERGY METER Type ENG110. Version 3.00. Inkl. PC program: ENG110. Version 3.00. Betjeningsvejledning
ELCANIC A/S ENERGY METER Type ENG110 Version 3.00 Inkl. PC program: ENG110 Version 3.00 Betjeningsvejledning 1/11 Generelt: ELCANIC A/S ENERGY METER Type ENG110 er et microprocessor styret instrument til
Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i)
Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i) 1. DS1821 1-WIRE KOMMUNIKATION (HERUNDER TIMING KRAV) ------------------------ 2 2. DS1821 SOFTWARE (OPBYGNING AF STYREPROGRAM I SYSTEM51 C) -----------
ELCANIC A/S Counter Type CNT150 Version 2.00 Inkl. PC programmet: Cnt150 Version 3.00 Betjeningsvejledning
ELCANIC A/S Counter Type CNT150 Version 2.00 Inkl. PC programmet: Cnt150 Version 3.00 Betjeningsvejledning Generelt: ELCANIC A/S COUNTER Type CNT150 er en microprocessor baseret tæller. Specielt designet
LCD Modul. Ved Power-on skal LCD-displayet initieres, og evt. indstilles til 4-bit kommunikation.
Vejledning til LCD Karakter Modul, 2 x 16 karakter. På min hjemmeside findes en kodegenerator. Den er gaflet fra en tysk side. Generatoren kan generere koder til 8051-kompatible, og heriblandt koder til
dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet)
dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet) Efterår 2009 1 Simpel aritmetik på maskinniveau I SCO, appendix A, er det beskrevet, hvordan man adderer ikke-negative heltal
AVR MP3 29-05-08 05576 Ingeniørhøjskolen i Århus Michael Kaalund
AVR MP3 29-05-08 Indholdsfortegnelse 1 Introduktion...2 2 Udviklingsmiljø...2 3 Beskrivelse af systemet...3 3.1 VS1001k...3 3.2 MP3 file formatet...6 4 Konklusion...6 5 Litteratur liste...6 6 Illustrations
Talsystemer I V X L C D M 1 5 10 50 100 500 1000. Hvad betyder halvanden??. Kan man også sige Halvtredie???
Romertal. Hvordan var de struktureret?? Systematisk?? I V X L C D M 1 5 10 50 100 500 1000 Regler: Hvis et lille tal skrives foran et stort tal trækkes tallet fra: IV = 5-1 = 4 Hvis et lille tal skrives
Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK
Programmering for begyndere Brug af Arduino Programmeringskursus Interrupt - Arduino EDR Hillerød Knud Krogsgaard Jensen / OZ1QK Interrupts Programmeringskursus Genbrug Interrupts Betyder blot at man afbryder
0.1 Modultest af hardware
0.1 Modultest af hardware Hardwaren af M2 testes ved, at de enkelte blokke først testes hver for sig, og derefter testes det, om hele modulet virker. TS2-monitoren brændes i ROM, og ved at forbinde M2
Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at beskrive et forløb. Det kan fx være en microcontrollers programafvikling.
Flowchart Et flowchart bruges til grafisk at beskrive et forløb. Det kan fx være en microcontrollers programafvikling. Der findes nogle gode programmer til at tegne flowcharts med, men de skal købes. Fx
NORDISK CONTROL A/S. FUNKTIONSBESKRIVELSE AF PORTSTYRING NC6005 3 X 400V 50Hz
NORDISK CONTROL A/S FUNKTIONSBESKRIVELSE AF PORTSTYRING NC6005 3 X 400V 50Hz Portstyringen NC6005 er en CE-mærket universal 3-knaps styring interface for ABDL-Anlæg. Af primære funktioner kan nævnes: hukommelse
MCE9637 DeviceNet Modul
Kokkedal Industripark 4 DK-2980 Kokkedal DANMARK Tlf: +45 49 18 01 00 Fax: +45 49 18 02 00 MCE9637 DeviceNet Modul MCE9637 til overførsel af status og vægt for digitale vejeceller Gælder for: PIC nr.:
Computerarkitektur. - en introduktion til computerarkitektur med LINDA
Computerarkitektur - en introduktion til computerarkitektur med LINDA [email protected] Faraz Butt [email protected] Mads Danquah [email protected] Ulf Holm Nielsen Roskilde Universitetscenter Naturvidenskabelig
X88. X88 er en GSM/SMS baseret fjernstyring med: 8 indgange 8 relæudgange Mulighed for temperaturføler
X88 X88 er en GSM/SMS baseret fjernstyring med: 8 indgange 8 relæudgange Mulighed for temperaturføler Let at betjene. Hurtig montering. Let konfiguration. Hurtig. Fleksibel. Passer i en alm gruppetavle.
Seriel kommunikation RS232 / RS485
(fortsat fra Positionering/standardfunktion med RS232/RS485) Speed Commanderen har indbygget en seriel kommunikationsenhed, som understøtter RS232 og RS485 kommunikation. Speed Commanderen skal monteres
Boolsk algebra For IT studerende
Boolsk algebra For IT studerende Henrik Kressner Indholdsfortegnelse 1 Indledning...2 2 Logiske kredsløb...3 Eksempel:...3 Operatorer...4 NOT operatoren...4 AND operatoren...5 OR operatoren...6 XOR operatoren...7
Opgaver - PLC - analogteknik - forbindelsesteknik...3 Opgaver - PLC - analogteknik - programmering...9
PLC - analogteknik INDHOLDSFORTEGNELSE Opgaver - PLC - analogteknik - forbindelsesteknik...3 Opgaver - PLC - analogteknik - programmering...9 2-20 Rekv. 0 Prod. 20-11-2005-21:51 Ordre 000 EFU OPGAVER -
QUICKVEJLEDNING til 4-moduler. Montering
QUICKVEJLEDNING til 4-moduler Montering 1. Klargør et SIM-kort, så pinkoden er 1234 eller deaktiveret. Monter kortet i enheden. Enheden har nu 1234 som password eller kører uden password. Kortet vendes
CPUer og maskinkode DM534. Rolf Fagerberg
CPUer og maskinkode DM534 Rolf Fagerberg CPUers opbygning En CPU er bygget op af elektriske kredsløb (jvf. sidste forelæsning), som kan manipulere bits. En CPU manipulerer flere bits ad gangen, deres antal
Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen. Elektronikteknologafdelingen på Erhvervsakademi Fyn.
Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen Elektronikteknologafdelingen på Erhvervsakademi Fyn. Journal JTAG Xilinx XC9536 29-9-3 Generel beskrivelse af JTAG: JTAG:
Quick Setup Guide SB168-ES og M7CL Dansk version
Quick Setup Guide SB168-ES og M7CL Dansk version February, 2009 SB168-ES og M7CL Quick Setup Guide Beskrivelse af denne guide. Denne guide indeholder en hurtig og enkelt opsætning af M7CL med digital stagebox.
Boolsk algebra For IT studerende
Boolsk algebra For IT studerende Henrik Kressner Indholdsfortegnelse Indledning...3 Logiske kredsløb...4 Eksempel:...4 Operatorer...4 NOT operatoren...5 AND operatoren...5 OR operatoren...6 XOR operatoren...7
QUICKVEJLEDNING til multiguard Master IO. Montering
QUICKVEJLEDNING til multiguard Master IO Montering 1. Klargør et SIM-kort, så pinkoden er 1234 eller deaktiveret. Monter kortet i enheden. Enheden har nu 1234 som password eller kører uden password. Kortet
WEA-Base Brugervejledning til vejetransmitter
WEA-Base Brugervejledning til vejetransmitter Version 3.4 WEA-Base Brugervejledning til vejetransmitter WEA-Base Brugervejledning til vejetransmitter Version 3.4 Indholdsfortegnelse 1. Tekniske data...
Analyseopgaver. Forklar kredsløbet. Forklar kredsløbet. 3.0 DC Adapter med Batteri Backup.
Analyseopgaver. Simpel NiMH lader. Forklar kredsløbet.. Infrarød Remote Control tester Forklar kredsløbet.. DC Adapter med Batteri Backup. Der bruges en ustabiliseret Volt adapter. Den giver normalt ca.
Nedenstående opgaver er lavet til en Allen-Bradley PLC, men uden videre tilpasses andre PLC typer.
PLC, analogteknik Øvelse 1 Nedenstående opgaver er lavet til en Allen-Bradley PLC, men uden videre tilpasses andre PLC typer. Timer 1.1 "TON" Timer on delay: I skal konstruerer en styring, hvor en lampe
FireBUS PARKERINGSVENTILATION
FireBUS PARKERINGSVENTILATION QUICK GUIDE Quick guiden beskriver hvordan et mindre anlæg kan installeres og idriftsættes. Alle moduler tildeles en individuel adresse på DIP-switchen i modulet Modulerne
MANUAL FANTRONIC 20AMP. TRIAC SLAVEENHED FOR VENTILATION VER:FAN 1.1 SKIOLD GØR EN FORSKEL!
MANUAL SKIOLD GØR EN FORSKEL! FANTRONIC 20AMP. TRIAC SLAVEENHED FOR VENTILATION VER:FAN 1.1 981 002 317 Ver. 01 11-03-2013 Indhold 1. INTRODUKTION... 4 2. BESKRIVELSE FANTRONIC... 5 2.1 SÅDAN FUNGERER
QUICKVEJLEDNING til Piccolo Light
QUICKVEJLEDNING til Piccolo Light Montering 1. Piccolo Light kan installeres uden brug af kommunikation via GSM, men installeres et SIM-kort i enheden, vil man bl.a. kunne få alarmer som sms og email.
Dette korte foredrag er opdelt i 3 dele: 1. ARDUINO i flere versioner, hvad er det? 2. DEMO-video 3. Din fremtidige Oscillator, SI5351A 4.
APPETITVÆKKEREN OZ6YM, Palle A. Andersen Efteråret 2017 Dette korte foredrag er opdelt i 3 dele: 1. ARDUINO i flere versioner, hvad er det? 2. DEMO-video 3. Din fremtidige Oscillator, SI5351A 4. DEMO-video
Video Projector Controller. Brugermanual
Jægergårdsgade 152/05A DK-8000 Aarhus C DENMARK WWW.WAHLBERG.DK l Video Projector Controller Brugermanual WWW.WAHLBERG.DK TELEPHONE +45 86 18 14 20 CELL PHONE +45 40 52 20 88 EMAIL: [email protected] Feb
CANSAT & ARDUINO step by step
CANSAT & ARDUINO step by step Jens Dalsgaard Nielsen SATLAB Aalborg Universitet Danmark [email protected] 1/51 Arduino CANSAT - MÅL At måle ved hjælp af sensor temperatur, tryk, acceleration, CO2, lys,...
MP3 player med DMX interface.
Jægergårdsgade 152/05A DK-8000 Aarhus C DENMARK WWW.WAHLBERG.DK MP3 player med DMX interface. Funktion: En avanceret Mp3spiller med forskellige styringsmuligheder, velegnet til brug i museer, teatre, udstillinger
Genius laderegulator Monterings og brugervejledning
Genius laderegulator Monterings og brugervejledning Laderegulatorens opbygning Genius er en avanceret laderegulator for solceller/solpaneler der kontroller, overvåger og styrer indladning og afladning
Betjeningsvejledning. til. Vandkiosk. system
Betjeningsvejledning til Vandkiosk system Programnummer 731043 Tegningsnummer 201013 / 201019 www.tarp.dk 2012-02-20 1 Kundebetjening :... 4 AFLÆSNING AF DATA: 4 INDLÆSNING AF SPÆRRINGER: 4 FEJLMEDDELELSER:
Beskrivelse af vejrstation OM1 NETLON NETLON. Dette dokument indeholder en beskrivelse af en vejrstation OM1 fra Netlon.
Beskrivelse af vejrstation OM1 NETLON Dette dokument indeholder en beskrivelse af en vejrstation OM1 fra Netlon. Indholdsfortegnelse Kort beskrivelse... 4 1.1 Anvendelse... 4 1.2 Konstruktion... 4 Funktionsbeskrivelse...
Analoge indgange og A/D konvertering. Analoge udgange
Programmering for begyndere Brug af Arduino Programmeringskursus Analoge indgange og A/D konvertering Analoge udgange Knud Krogsgaard Jensen OZ1QK Oversigt Oversigt over i aften: A/D konvertering iterations
QUICKVEJLEDNING til multiguard DIN6. Montering
QUICKVEJLEDNING til multiguard DIN6 Montering 1. Klargør et SIM-kort, så pinkoden er 1234 eller deaktiveret. Monter kortet i enheden. Enheden har nu 1234 som password eller kører uden password. Kortet
Design & Produktion. Valle Thorø. Sønderborg. ELektronik. ( Pendler-ordning gør det muligt! )
Design & Produktion Valle Thorø Sønderborg ELektronik ( Pendler-ordning gør det muligt! ) 1.G 2.G 3.G Teknologi B Teknologi B Evt. teknologi A Teknikfag, Elektronik 5 lekt. Pr uge 5 lekt. Pr uge 9 lekt.
2x50 ETHERNET MODUL. RS485 slave med Ethernet-IP. Gælder for: Program nr.: AUXSLAVE v1 Dokument nr.: 0422md2x50-2v1 Dato:
Kokkedal Industripark 4 DK-2980 Kokkedal Denmark [email protected] Tel +45 49 180 100 Fax +45 49 180 200 2x50 ETHERNET MODUL RS485 slave med Ethernet-IP Gælder for: Program nr.: AUXSLAVE.140422.2v1 Dokument
QUICKVEJLEDNING til 9-moduler. Montering
QUICKVEJLEDNING til 9-moduler Montering 1. Klargør et SIM-kort, så pinkoden er 1234 eller deaktiveret. Monter kortet i enheden. Enheden har nu 1234 som password eller kører uden password. Kortet vendes
Frederiksen. Brugsvejledning for GM-tæller 5135.3X. 23.09.03 Aa 5135.3X
Brugsvejledning for GM-tæller 5135.3X 23.09.03 Aa 5135.3X Disse to tællere er beregnet til at registrere antallet af pulser fra GM-rør. Tælleren kan indstilles til et antal faste tidsintervaller, eller
Start af nyt schematic projekt i Quartus II
Start af nyt schematic projekt i Quartus II Det følgende er ikke fremstillet som en brugsanvisning der gennemgår alle de muligheder der er omkring oprettelse af et Schematic projekt i Quartus II men kun
Indholdsfortegnelse :
Rapporten er udarbejdet af Daniel & Kasper D. 23/1-2001 Indholdsfortegnelse : 1.0 STEPMOTEREN : 4 1.1 Stepmotorens formål : 4 1.2 Stepmotorens opbygning : 4 2.0 PEEL-KREDSEN 4 2.1 PEEL - Kredsen Generelt
QUICKVEJLEDNING til multiguard DIN9. Montering
QUICKVEJLEDNING til multiguard DIN9 Montering 1. Klargør et SIM-kort, så pinkoden er 1234 eller deaktiveret. Monter kortet i enheden. Enheden har nu 1234 som password eller kører uden password. Kortet
Teknisk manual for TIMETÆLLER/AFLADE MONITOR ISTR-P Spændingsområde fra 24V til 80V
Teknisk manual for TIMETÆLLER/AFLADE MONITOR ISTR-P Spændingsområde fra 24V til 80V VIGTIGSTE KENDETEGN: Nominel spænding fra 24V til 80V Automatisk indikation af batterispænding: 24V, 36V, 48V eller 72V.
QUICKVEJLEDNING til 4-moduler. Montering
QUICKVEJLEDNING til 4-moduler Montering 1. Klargør et SIM-kort, så pinkoden er 1234 eller deaktiveret. Monter kortet i enheden. Enheden har nu 1234 som password eller kører uden password. Kortet vendes
Dansk Mink Papir. Teknisk brugermanual
Dansk Mink Papir Teknisk brugermanual Styring til FIX tørrekasse Beskrivelse Enheden styrer en AC blæser-motor via en relæudgang. Betjening foregår via et tastatur og et display, og brugeren kan vælge
Manual IHC Kompatibelt SMS modem. Generel info:... 2 Controllere:... 2 Manualen... 2 Komandoer syntax... 2 Lysdioder... 2 Tilslutning:...
Manual IHC Kompatibelt SMS modem. Modemmet er kompatibelt med LK IHC visual2 controllere. IHC er registreret varemærke hos LK, Schneider Electric. Generel info:... 2 Controllere:... 2 Manualen... 2 Komandoer
Det er nødvendigt for brugeren at læse, forstå og følge vejledningens instruktioner.
Tams Elektronik LD-G-3 / LD-W-3 (1) Lokomotivdekoder LD-G-3 / LD-W-3 i Märklin-Motorola format Denne oversættelse omfatter monterings- og anvendelsesvejledningerne til LD-G-3 / LD-W-3 dekoderen. Den originale
Example sensors. Accelorometer. Simple kontakter. Lysfølsomme. modstande. RFID reader & tags. Temperaturfølsomme. Flex Sensor.
Simple kontakter Accelorometer Example sensors Lysfølsomme modstande RFID reader & tags Temperaturfølsomme modstande Flex Sensor Ultralyds afstandsmåler Piezo Pressure/vibration Piezo Sound/buzzer Peltier
QUICKVEJLEDNING til multiguard DIN6. Montering
QUICKVEJLEDNING til multiguard DIN6 Montering 1. Klargør et SIM-kort, så pinkoden er 1234 eller deaktiveret. Monter kortet i enheden. Enheden har nu 1234 som password eller kører uden password. Kortet
QUICKVEJLEDNING til 4-moduler. Montering
QUICKVEJLEDNING til 4-moduler Montering 1. Klargør et SIM-kort, så pinkoden er 1234 eller deaktiveret. Monter kortet i enheden. Enheden har nu 1234 som password eller kører uden password. Kortet vendes
Projekt - RoboNet Del Journal.
Projekt - RoboNet Del Journal. A/D Konvertering. Udarbejdet af: Klaus Jørgensen. Gruppe: Jacob Clausen, Klaus Jørgensen og Ole Rud It og Elektronikteknolog, a Erhvervsakademiet Fyn Udarbejdet i perioden:
\ \ Computerens Anatomi / /
HTX Roskilde - mat-it-prog, 1.4 \ \ Computerens Anatomi / / Introduktion En PC ( personlige computer ) eller computer er bygget op af forskellige komponenter. Vi vil hermed gennemgå størstedelen af computerens
Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner
Virtuel PC Fordele/ulemper Fordele: Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner Ulemper: Reserverer RAM (Windows 7) Problemer med at ureglementeret lukke ned Mister
X88S. SMS fjernstyring til sommerhuse
X88S SMS fjernstyring til sommerhuse X88s er en GSM/SMS baseret fjernstyring med: 6 indgange 8 relæudgange 2 temperaturfølere Billig i drift, intet abonnement. Kan køre på taletidskort. Nem og hurtig montering.
System JA 1000 Stand-alone styring for befugter eller affugter for relativ fugtighed og eller dugpunkt.
KHV Maj 2012 Version 3.1 Brugsanvisning System JA 1000 Stand-alone styring for befugter eller affugter for relativ fugtighed og eller dugpunkt. Anderberg Fugtstyring A/S - Gl. Holbækvej 6-8 - 4200 Slagelse
Robonet Profibus Generel opsætning
Side 1 af 11 Robonet Profibus Generel opsætning Side 2 af 11 Indholdsfortegnelse 1. Anvendt hard- og software samt filer... 3 2. Konfiguration af RoboNet Gateway... 4 3. Beskrivelse af data mellem PLC
FireBUS BRANDSIKRINGSAUTOMATIK For spjældsikrede og røgventilerede systemer
FireBUS BRANDSIKRINGSAUTOMATIK For spjældsikrede og røgventilerede systemer QUICK GUIDE For anlæg med mindre end 12 spjæld og mindre end 100 m kabel-længde er der ikke behov for den store planlægning,
CP1x Pulse Servo Quick Guide v1.00. CP1x med Servo - Servoløsning med Pulse Kontrol. Quick Guide
CP1x Pulse Servo Quick Guide v1.00 CP1x med Servo - Servoløsning med Pulse Kontrol Quick Guide Denne quick guide er ment som supplement til de respektive manualer for CP1 PLCen og de monterede servodrev.
QUICKVEJLEDNING. Montering
QUICKVEJLEDNING Montering 1. Klargør et SIM-kort, så pinkoden er 1234 eller deaktiveret. Monter kortet i enheden. Enheden har nu 1234 som password eller kører uden password. Kortet vendes som vist nedenfor.
