De pratende Breathalyzer Mark II (6 / 7 stap)

Stap 6: Het programma: PIC MCU ASM CODE (montage-Code)


ik mijn uiterste best om commentaar van de code om de beste van mijn vermogen te hebben gedaan, maar ik ondervind problemen met de tekstverwerker, zodat de besproken software kan hier worden gevonden:
http://www.electroniclessons.com/talkingbreath.txt
Ik ben het plaatsen van het in het document zo goed, maar de opmerkingen slordig kijken.  Sorry dat die = ()

Als iemand van jullie willen de. ASM file, gelieve niet te vragen!    Ik gebruikte een ISD2 programmeur puck en MPLAB IDE software mijn PIC programmeren.  Als iemand van jullie nog vragen hebben, ben ik altijd blij om te beantwoorden als u wilt meer weten over deze programmer, kijk hier:
http://www.microchip.com/Stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010046&part=DV164005

HIER IS DE CODE:

;    belangrijkste code gaat hier ***
MOVLW 0X40; INSTELLEN INTERNE OSCILLATOR FREQUENTIE
MOVWF OSCCON; INITIALISEREN
MOVLW 0X00; PORTB INGESTELD OM ALLE UITGANGEN
MOVWF TRISB; INITIALISEREN
CLRF PORTB; DUIDELIJK PORTB UITGANGEN
MOVLW 0XFE; 00001110
MOVWF TRISA; PORTA INGESTELD OM ALLE UITGANGEN BEHALVE VOOR RA1/2/3
CLRF PORTA; DUIDELIJKE PORTA
MOVLW 0X05; INSTELLEN VAN DE ADC
MOVWF ADCON0; INSCHAKELEN VAN ADC, MAAR START NIET CONVERSIE
MOVLW 0X7D; INSTELLEN VAN DE ADC
MOVWF ADCON1; AN0/RA0 = ANALOGE INGANG
MOVLW 0X0F; INSTELLEN VAN DE ADC
MOVWF ADCON2; TIMING VOOR DE ADC-CONVERSIE IS INGESTELD (ZIE INFORMATIEBLAD VOOR; ADCON0/1/2 REGISTER VORMING OPTIES
; RA0 = PLAYBACKOUT
; RA1 = ADC-IN
; RA3 = MONSTER

OPSTARTEN:
BTFSC PORTA, RA3; Pull up weerstand houdt RA3 hoog totdat de knop is ingedrukt. Deze instructie; controleert de status van RA3.  Hiermee slaat u de volgende instructie, als lage (knop ingedrukt).
GOTO voorsprong; als de knop is niet ingedrukt, ga terug naar start-up en opnieuw controleren.  ; LUSSEN TOTDAT DE KNOP IS INGEDRUKT.
MQ3CHECK:; Deze routine fungeert om te controleren de output van de MQ3 om te bepalen wanneer er; worden stabiel genoeg is voor een andere meting.
OPROEP RUNADC; Door het aanroepen van de subroutine RUNADC, we willen nemen een 8-bits; vertegenwoordiging van de MQ3 output en opslaan in geheugen
OPROEP LEDSIGNIFY; Oproep-subroutine waarmee geeft een wait-status voor gebruiker met behulp van LED's op PORTB
MOVLW 0X1E; Verplaatsen predermined referentiewaarde in W (werk) register.
CPFSLT GEN5; Waarde vergelijkt in WREG met ADC waarde in GEN5.  OVERSLAAN als WREG inhoud, groter is dan de waarde van de ADC.
GOTO MQ3CHECK; als MQ3 is niet klaar neem een betrouwbare lezing, neem een ander monster
OPROEP STEM; Bel stem opname routine
OPROEP LOOP1
OPROEP WAITSTATE; Oproep-routine die dat apparaat aangeeft is het lezen van sensor, en die de gebruiker zou waaien totdat de LED stopt met knipperen.
OPROEP RUNADC; ADC opnieuw uitvoeren voor een nieuwe lezing
OPROEP BEPALEN; Een bepalende subroutine die de wiskunde doet uitgevoerd

RUNADC:
BSF ADCON0, GA/GEDAAN; Start de conversie - Set GO/gedaan beetje in register ADCON0
STAP 2:
BTFSC ADCON0, GA/GEDAAN; Het GO/gedaan beetje in ADCON0 zal blijven hoog tot conversie is; voltooid.  Controleer of bits hoog, ga terug naar stap 2 is. Als dat niet het geval is, blijven.
GOTO STEP2
MOVFF ADRESH, GEN5; Veilig verplaatsen 8-bit inhoud van ADC register te GEN5 registreren voor later.
RETURN                                ; Einde subroutine

LEDSIGNIFY:
SETF PORTB; Zet alle PORTB uitgangen (alle LEDs op)
OPROEP LOOP1; Oproep vertraging lus subroutine enige tijd verstrijken
CLRF PORTB; Uitschakelen van alle PORTB uitgangen (alle LEDs uitgeschakeld)
OPROEP LOOP1; Een ander vertraging
TERUGKEER; Retourneren uit sub routine

STEM:
BSF PORTA, RA0; Signaal afgeven aan ISD1218 apparaat - Activeer opname (klaar voor alcohol lezing)
OPROEP LOOP1; vertraging gebruikt om ervoor te zorgen dat ISD1218 chip goed is ingeschakeld
BCF PORTA, RA0; Draai uitschakelen signaal naar ISD1218
TERUGKEER; Retourneren van de subroutine

WAITSTATE:; bieden de gebruikerstijd te blazen in de sensor
OPROEP WAITSTATE2
OPROEP WAITSTATE2
OPROEP WAITSTATE2
OPROEP WAITSTATE2
OPROEP WAITSTATE2
OPROEP WAITSTATE2
OPROEP WAITSTATE2
OPROEP WAITSTATE2
OPROEP WAITSTATE2
OPROEP WAITSTATE2
OPROEP WAITSTATE2
OPROEP WAITSTATE2
OPROEP LOOP1
TERUGKEER

WAITSTATE2:; LED knippert in volgorde van 1-6
MOVLW 0X01
MOVWF PORTB
OPROEP LOOP3
MOVLW 0X02
MOVWF PORTB
OPROEP LOOP3
MOVLW 0X04
MOVWF PORTB
OPROEP LOOP3
MOVLW 0X08
MOVWF PORTB
OPROEP LOOP3
MOVLW 0X010
MOVWF PORTB
OPROEP LOOP3
MOVLW 0X20
MOVWF PORTB
OPROEP LOOP3
CLRF PORTB
TERUGKEER

BEPALEN:
MOVLW 0X24; WREG waarde gaan voor verwijzing
CPFSGT GEN5; als ADC waarde groter is dan WREG, skip volgende instructie, zo niet, je hebt; uw niveau van de bloedalcohol gevonden!
Bel LED1; zoniet, oplichten LED #1 (geen alcohol niveau gedetecteerd).
MOVLW 0X3B; WREG waarde gaan voor verwijzing
CPFSGT GEN5; als ADC waarde groter is dan WREG, skip volgende instructie, zo niet, u hebt uw niveau van de bloedalcohol gevonden!
Bel LED2; zoniet, oplichten LED #2 (een biertje of twee).
MOVLW 0X52; WREG waarde gaan voor verwijzing
CPFSGT GEN5; als ADC waarde groter is dan WREG, skip volgende instructie, zo niet, je hebt; uw niveau van de bloedalcohol gevonden!
Bel LED3; zoniet, oplichten LED #3 (twee of drie in het afgelopen uur - ongeveer.  Waarschijnlijk; mag niet rijden).
MOVLW 0X69; WREG waarde gaan voor verwijzing
CPFSGT GEN5; als ADC waarde groter is dan WREG, skip volgende instructie, zo niet, je hebt; uw niveau van de bloedalcohol gevonden!
OPROEP LED4; WREG waarde gaan voor verwijzing
CPFSGT GEN5; als ADC waarde groter is dan WREG, skip volgende instructie, zo niet, je hebt f; ound uw niveau van de bloedalcohol!
Bel LED5; zoniet, oplichten LED #5 (dronken.  Rijd niet, of hit op mensen die je kent dat je niet mag!).
MOVLW 0X95; WREG waarde gaan voor verwijzing
CPFSGT GEN5; als ADC waarde groter is dan WREG, skip volgende instructie, zo niet, je hebt gevonden; uw niveau van de bloedalcohol!
OPROEP LED5
OPROEP LED6
TERUGKEER

LED1:
BSF PORTB, RB0; LED1 INSCHAKELEN
OPROEP LONGDELAY; Bel een lange vertraging
RESET                            ; Resultaat weergegeven - reset programma

LED2:
BSF PORTB, RB1; LED2 INSCHAKELEN
OPROEP LONGDELAY; Bel een lange vertraging
RESET                           ; Resultaat weergegeven - reset programma

LED3:
BSF PORTB, RB2; LED3 INSCHAKELEN
OPROEP LONGDELAY; Bel een lange vertraging
RESET                           ; Resultaat weergegeven - reset programma

LED4:
BSF PORTB, RB3; LED4 INSCHAKELEN
OPROEP LONGDELAY; Bel een lange vertraging
RESET                            ; Resultaat weergegeven - reset programma

LED5:
BSF PORTB, RB4; LED5 INSCHAKELEN
OPROEP LONGDELAY; Bel een lange vertraging
RESET                            ; Resultaat weergegeven - reset programma

LED6:
BSF PORTB, RB5; LED6 INSCHAKELEN
OPROEP LONGDELAY; Bel een lange vertraging
RESET                            ; Resultaat weergegeven - reset programma

LONGDELAY:
MOVLW 0X05; Een decimale waarde van 10 gaan WREG voor verwijzing
MOVWF GEN6; WREG waarde opslaan in GEN6
LONGDELAY2:
OPROEP LOOP1; Oproep vertraging
DECFSZ GEN6, verlagen de waarde in GEN6, overslaan als GEN6 = 0
GOTO LONGDELAY2; Herhaalvertraging, totdat de waarde in GEN6 nul is
RETURN                          ; Retourneren van de subroutine

LOOP1:; vertraging lus sub routine die werkt met LOOP2 routine.  Voer waarden; in 3 registreert in loop1 (Zie Loop2)
MOVLW 0X00
MOVWF GEN1
MOVLW 0XFF
MOVWF GEN2

LOOP2:; Countdown waarden uit LOOP1 tot 0
DECFSZ GEN1, 1
GOTO LOOP2
DECFSZ GEN2, 1
GOTO LOOP2
TERUGKEER

LOOP3:; Alternatieve vertraging timing subroutine
MOVLW 0X19
MOVWF GEN2
OPROEP LOOP2
TERUGKEER

TERUGKEER

;******************************************************************************
; Einde van programma

Gerelateerde Artikelen

Marker Connector

Marker Connector

Ik ben redelijk nieuw in de wereld van 3D printing software en tools, zo leren kennen ze een beetje beter die mij wilden voor wekken een tekengereedschap dat het uiterlijk van mijn lijn ingrijpend zou veranderen. Door de jaren heen heb ik een kenmerk
Marker Recycling collectie Bin

Marker Recycling collectie Bin

Dit zijn de instructies voor het maken van een echt cool marker collectie opslaglocatie voor gebruikte markeringen die gerecycled worden zal. Dit is ontworpen door de legendarische Lego Lords, voor gebruik met het programma van de ColorCyle Crayola(r
PVC Marker Buoy voor Drift vissen of roeien

PVC Marker Buoy voor Drift vissen of roeien

Marker boeien zijn erg handig voor het markeren van structuur, wanneer u drijfnetten vissen zijn en kan ook worden gebruikt om een zoekgebied markeren als u hebt liet iets overboord.  Als u de regel verwijdert, kunt u hen ook als bumpers of dummies g
IRONMAN 2 suit (mark 4 & 6)

IRONMAN 2 suit (mark 4 & 6)

Hier is de DIY van IRONMAN 2!Dit is mijn eerste ervaring, iets als dit, en ik wil delen, 4 lange maanden werken alle weekenden. Dit is de pepakura methode, dus je veel geduld moet."Bereid je voor op..." StadiumEerste lijst van materiaal:ScisorsM
Maak een permanente-marker-remover!

Maak een permanente-marker-remover!

Dit instructable zal u tonen hoe te maken van een permanente-marker-remover uit een lege tekst marker en enkele nagellak remover.Met de kracht van nagellak remover en de precisie van een marker van de tekst kunt u gemakkelijk schoon weg een kleine pe
Hoe te meten en Mark met precisie

Hoe te meten en Mark met precisie

meting is de eerste stap in het hout-werken. De tweede stap is het maken van een merk op het gemeten punt. De combinatie van de twee processen - meten en markeren - vormt de basis van nauwkeurige werk. Indien een verkeerd is gedaan, wordt veel inspan
Cigar Box Guitar Marking Tool

Cigar Box Guitar Marking Tool

Dit Instructable is niet over het maken van een sigaar vak gitaar, maar slechts een hulpmiddel of Jig te markeren hoeveel te knippen weg bij het maken van ruimte voor uw CBG nek materiaal.5-17-16 bijgewerkt THE JIG - Ga naar stap 12-14 om te zien de
Ironman van Mark 3 Arc Reactor goedkoop en gemakkelijk

Ironman van Mark 3 Arc Reactor goedkoop en gemakkelijk

Ironman is een personage uit de strips van Marvel Comics. Het was alleen bekend bij de nerds-uptill dat ze maakte een film over het. Na die film mensen begonnen liefdevolle Ironman de rol alot. Nu bijna ieder (koel) mens op aarde weet over hem en hee
Brandhout Log Marker

Brandhout Log Marker

Logboeken langer dan 18 inch passen niet mijn open haard dus ik een log marker om ervoor te zorgen maakte dat ze de juiste grootte. Deze markering werkt het beste na vallen en de limbing van de boom. Ene uiteinde heeft een scherpe punt, dat de andere
Marker Pen kompas

Marker Pen kompas

Soms moet ik schrijver van een boog op metaal met een kompas. Ik maakte het kompas aan de linkerkant te houden een fijne punt markering pen of een potlood van lood. Het kan ook functioneren als een divider met vervangbare punten gemaakt van gemeensch
Eenvoudige decoratieve origami hart / boek mark

Eenvoudige decoratieve origami hart / boek mark

dit is een eenvoudig origami hart, geweldig voor rookies en profs :)Aangezien ik officieel in het uitleggen zuigen, kunnen de foto's helpen u meer dan mijn beschrijving van de stap.Ook, omdat de bodem van het hart opent, ook kunt u het als een boek-m
Prachtig unieke COPIC marker kleuren!!

Prachtig unieke COPIC marker kleuren!!

Copic kleuren is erg leuk! maar het is moeilijk te vinden goede tutorials voor leren kleur met hen.Hier is een eenvoudige stap voor stap Instructable introductie over kleuren.andere merken van markeringen kunnen worden gebruikt maar copics zijn mijn
Bouwen van een accessoire plank voor een ShopSmith Mark V

Bouwen van een accessoire plank voor een ShopSmith Mark V

Bouwen van een accessoire plank voor een ShopSmith Mark VVorig jaar kocht ik een vroege jaren 1980 ShopSmith Mark V (500 model) van een familielid van een vriend in onze stad. Het was in grote voorwaarde en, na een paar maanden van knutselen en te ge
Breien marker

Breien marker

dit is mijn allereerste frist instructable ik ooit heb gedaan, zodat het wellicht niet de beste. Ik ben tonen u hoe te maken van een marker breien. Geweldig voor een cadeau voor een vriend breien of gewoon voor jezelf!Benodigdheden:1. Naald-neus buig