Šviesdijodžių programavimas su PIC16F84 mikrovaldikliu  (6)

Tai pirmas žingsnis programavimo likn, kuris leidžia susipažinti su elementariausiomis komandomis ir leidžia vaizdžiai matyti programavimo pokyčius.


Prisijunk prie technologijos.lt komandos!

Laisvas grafikas, uždarbis, daug įdomių veiklų. Patirtis nebūtina, reikia tik entuziazmo.

Sudomino? Užpildyk šią anketą!

Schemos programavimui naudojamas PIC16F84A mikrovaldiklis su 4 MHz kvarciniu generatoriaus dažniu. Naudojamas diodų skaičius 8, kurie yra pajungti ant PORTB mikrovaldiklio išėjimų. SW1 jungtukas naudojamas šviesdijodžių uždegimo sekai pakeisti. Ši schema puikiai tinka pradėti programavimo „meno“. Programos tekstas rašytas su MPLAB IDE programa. Ji yra nemokama ir galima parsisiųsti:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469

Mikrovaldiklio išvadų  aprašymasR1 rezistorius reikalingas tam, kad būtų galima paleisti mikrovaldiklį.

 

R2 rezistorius reikalingas tam, kad būtų galima RA4 įėjime sudaryti aukštą lygį (būtų galima jungti tiesiogiai, bet įjungus jungtuką užtrumpintų grandinę).

R3 – R10 rezistoriai naudojami tam, kad padavus iš mikrovaldiklio aukštą lygį nebūtų smarkiai apkraunami mikrovaldiklio išėjimai, taip pat reikalingas per šviesdijodį tekančios srovės sumažinimui.  

Schema

Programa rašoma dviems šviesdijodžių mirksėjimo variantams:

a) kai jungtukas (SW1) yra išjungtas. Šviesdijodžiai užsidega nuo vidurio ir išsiskiria į kraštus

Šviesdijodžių mirksėjimo variantas

b) kai jungtukas (SW1) įjungtas. Bėgantys šviesdioddžiai

Šviesdijodžių mirksėjimo variantas

Programos tekstas:

 Pradžioje reikalingi mikrovaldiklio nustatymai. Plačiau galite rasti teorinės dalies aprašymuose.

            #include <p16F84a.inc>      ;mikrovaldiklio bibliotekos itraukimas
;KONFIGURACINIU BITU NUSTATYMAS:
            __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
            org 0x00         ;Programos resetavimas

Apsibrėžiamas kintamųjų blokas, kad tekste būtų galima lengviau orientuotis

;KINTAMUJU APSIBREZIMAS:
count1            equ                 10h     ;skaitliukas 1
count2            equ                 11h     ;skaitliukas 2
sw1                  equ                 0x04   ;sw1 jungtukas

Atliekami mikrovaldiklio išvadų nustatymai. Plačiau apie tai galite rasti teorinės dalies aprašymuose.

;ATLIEKAMI REIKALINGI NUSTATYMAI:
            bsf       STATUS,RP0                       ;Pereina i bank1
            bsf       TRISA,sw1                             ;RA4 pasiruosias duomanis priimti
            clrf       TRISB                                    ;PortoB pasiruosias duomanis siusti
            bcf       STATUS,RP0                       ;pereina i bank0

Programos pradžioje yra tikrinamas jungtukas kuris variantas. Pagal jungtuko padėtį yra pereinama į tam tikrą programos vietą.

 sw_tikrina       
            btfss PORTA,sw1                 ;jungtuko tikrinimas:
            goto pirmas_variantas;
            goto antras_variantas;

Pirmas variantas, tai pirmas šviesdijodžių mirksėjimo variantas. Čia duomenys yra parašyti dvejetainiais skaičiais tam, kad būtų galima vizualiai siunčiamus duomenis į išėjimus. Čia keičiant duomenis ar vienetukų nuliukų tvarką keičiasi ir šviesdijudžių mirksėjimo eiliškumas.

 pirmas_variantas
            movlw b'00011000'              ;Duomenu irasymas
            movwf PORTB                      ;duomenu siuntimas
            call wait                                  ;velinimas 500mS
            movlw b'00100100'              ;Duomenu irasymas
            movwf PORTB                      ;duomenu siuntimas
            call wait                                  ;velinimas 500mS
            movlw b'01000010'              ;Duomenu irasymas
            movwf PORTB                      ;duomenu siuntimas
            call wait                                  ;velinimas 500mS
            movlw b'10000001'              ;Duomenu irasymas
            movwf PORTB                      ;duomenu siuntimas
            call wait                                  ;velinimas 500mS
            goto sw_tikrina         

Antras šviesdijodžių mirksėjimo variantas, kai jungtukas yra įjungtas

 antras_variantas
            movlw b'10000100'              ;Duomenu irasymas
            movwf PORTB                      ;duomenu siuntimas
            call wait                                  ;velinimas 500mS
            movlw b'01000010'              ;Duomenu irasymas
            movwf PORTB                      ;duomenu siuntimas
            call wait                                  ;velinimas 500mS
            movlw b'00100001'              ;Duomenu irasymas
            movwf PORTB                      ;duomenu siuntimas
            call wait                                  ;velinimas 500mS
            movlw b'00010000'              ;Duomenu irasymas
            movwf PORTB                      ;duomenu siuntimas
            call wait                                  ;velinimas 500mS
            movlw b'00001000'              ;Duomenu irasymas
            movwf PORTB                      ;duomenu siuntimas
            call wait                                  ;velinimas 500mS
            goto sw_tikrina          

Vėlinimo paprogramė. Plačiau apie paprogramių ir makrosų kūrimą plačiau teorinės dalies aprašymuose.

Vėlinimo programa yra rašoma tam, kad šviesdijodžių mirksėjimas būtų matomas. Mikrovaldikliai komandas įvykdo greitai ir jeigu nebūtų vėlinimo tiesiog matytumėme kaip šviesdijodžiai šviečia.

Norint keisti mirksėjimo dažnumą čia ir reikėtų prisidėti t.y. keičiant įrašymoduomenis.

Pastaba. Duomenų įrašymo skaičius neturi viršyti 256 dešimtainio skaičiaus. Todėl vėlinimo programoje ir naudojami du atskiri 250 skaičiai (vėlinimo laikas gaunamas apie: 250x250x8=0,5s)

wait
            movlw .250                            ;irasomi duomenys 
            movwf count1                        ; skaitliuko uzpildymas
            movlw .250                            ;irasomi duomenys
            movwf count2                        ;skaitliuko uzpildymas
            nop                                         ; velinamas vienas ciklas
            nop                                         ; velinamas vienas ciklas
            nop                                         ; velinamas vienas ciklas
            nop                                         ; velinamas vienas ciklas
            nop                                         ; velinamas vienas ciklas
            decfsz count1,f                      ;skaitliuko mazinamas 1 ir jai 0 persoka
            goto $-.6                                 ;grizimas atgal
            decfsz count2,f                      ;skaitliuko mazinamas 1 ir jai 0 persoka
            goto $-.5                                 ;grizimas atgal
            return                                      ;grizimas is paprogrames
            end                                         ;programos užbaigimas

 Plačiau komandų reišmes žiūrėti teorinės dalies aprašymuose.

Šviesdijodžių programos testavimas (Proteus)    

Asembleris

Heksas

SĖKMĖS ! ! ! 

Pasidalinkite su draugais
Aut. teisės: www.technologijos.lt
(0)
(0)
(0)

Komentarai (6)

Susijusios žymos: