Számláló 16F877-es mikrovezérlőre 7 szegmenses LED kijelzővel

A programot PIC Simulator IDE nevű programmal írtam és teszteltem. Ez az első önálló PIC programom. 0-tól 9-ig elszámol, majd újrakezdi. Valójában az indirekt címzés gyakorlására írtam a programot. Amihez a szükséges információkat a Tudomány és Technika weboldaláról szereztem.



Lássuk a forráskódot a megjegyzésekkel:

  1.         list p=16F877           ;processzor megadasa
  2.         #include "P16F877.INC"
  3.         bsf STATUS,RP0  ;lapozas 1. regiszterbankba
  4.         clrf trisb      ;B port minden lába kimenet
  5.         bcf status,RP0  ;ugrás vissza 0. regiszterbankba
  6.  
  7. __      equ b'10000000' ;A 7szegmenses kijelzon ertekek
  8. _0      equ b'10111111' ;definialasa urestol 9-ig
  9. _1      equ b'10000110'
  10. _2      equ b'11011011'
  11. _3      equ b'11001111'
  12. _4      equ b'11100110'
  13. _5      equ b'11101101'
  14. _6      equ b'11111101'
  15. _7      equ b'10000111'
  16. _8      equ b'11111111'
  17. _9      equ b'11101111'
  18.  
  19.         movlw _0        ;egymas utani regiszterekbe
  20.         movwf 020h      ;kerulnek az ertekek
  21.         movlw _1
  22.         movwf 021h
  23.         movlw _2
  24.         movwf 022h
  25.         movlw _3
  26.         movwf 023h
  27.         movlw _4
  28.         movwf 024h
  29.         movlw _5
  30.         movwf 025h
  31.         movlw _6
  32.         movwf 026h
  33.         movlw _7
  34.         movwf 027h
  35.         movlw _8
  36.         movwf 028h
  37.         movlw _9
  38.         movwf 029h
  39.         movlw __
  40.         movwf 02Ah
  41.  
  42. start
  43.         movlw 020h      ;indirekt cimzeshez kezdocim
  44.         movwf FSR       ;beallitasa FSR-be
  45. counter                 ;szamlalas kezdodik
  46.         movfw INDF      ;INDF az FSR-ben levo cimre mutat
  47.         movwf portb     ;amin levo erteket kimenetre kuldom
  48.  
  49.         call timer      ;kesleltetes meghivasa
  50.  
  51.         xorlw _9        ;9-es eseten a Z status (zero) 1-re beallitasa
  52.         btfsc status,Z  ;Ha Z=0, akkor hagyja ki a kovetkezo sort
  53.         goto start      ;Ha Z=1 akkor
  54.         incf FSR,F      ;noveli az aktualis cimet 1-el
  55.         goto counter    ;folytatja a szamlalo ciklust a kov szammal
  56.  
  57. timer                   ;keslelteto "eljaras"
  58.         movwf 030h      ;munkaregiszter allapotanak mentese 030h-ba
  59.         movlw 05h       ;A kesleltetes hossza (utasitasszam)
  60.         movwf 031h      ;31h regiszterben taroljuk a hosszt
  61. timer_s                 ;dekrementalo utasitasok 31h reg-en
  62.         decfsz  031h,1  ;amig nem lesz a tartalma nulla
  63.         goto timer_s    ;ha 031h-ban nem nulla van, tovabb dekremental
  64.         movfw 030h      ;munkaregiszter allapotanak visszaallitasa
  65.         return          ;visszateres
  66.         end             ;program vege

PIC simulator IDE tesztelés közben

Kategóriák: 
Megosztás/Mentés

Új hozzászólás