Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Programowanie w Bascom. Czy jest jaki¶ mniejszy stop? Jak zrobić 0.1ms?

webserver 03 Oct 2006 18:31 1553 7
  • #1
    webserver
    Level 12  
    Witam mam problem w Bascom czy jest jakis mniejszy stop nic waitms 1 ? jak zrobic np. 0.1 milisekuny ?
  • #2
    ja_dzik
    Level 18  
    Jest jeszcze Waitus które daje opóĽnienie w mikrosekundach.
    Czyli zeby uzyskać 0.1ms stosujesz Waitus 100 (100us = 0.1ms )
    Pozdrawiam
  • #3
    Press
    Level 23  
    ja_dzik wrote:
    Jest jeszcze Waitus które daje opóĽnienie w mikrosekundach.
    Czyli zeby uzyskać 0.1ms stosujesz Waitus 100 (100us = 0.1ms )
    Pozdrawiam


    Wszystko pieknie, ale kolega zapomnial dodac, ze waitus dziala tylko w Bascom dal AVR. w wersji dla '51 to olecenie nie jest dostepne.
  • #4
    ja_dzik
    Level 18  
    Zapomniałem poniewasz Bascom'em 51 wogule sie nie zajmuje i po przeczytaniu postu od razy przyszedł mi na my¶l Bascom AVR wiec napisałem co wiedziałem o nim.
  • #5
    webserver
    Level 12  
    no i wlansie tu jest problem bo ja uzywam 8051
    z tego co wiem to z avr nie mozna programowac 98s8253
  • #6
    Electix
    Level 21  
    Siemka!

    To może spróbuj odmierzyć czas przy pomocy dostępnych w mikrokontrolerze timerów. W Bascomie robi się to stosunkowo prosto. Poszukaj w helpie komend obsługuj±cych timery i w paru linijkach kodu na pewno rozwi±żesz ten problem.

    Pozdrawiam! :)
  • Helpful post
    #7
    Bęben
    Level 16  
    Const odlicz=65436
    rem dla zegara 12MHz odliczy tylko 100 impulsow (100us)

    dim licznik as word
    dim koniec as bit

    Config Timer1 = Timer , Mode = 1 , Gate = Internal
    On Timer1 etykieta
    Counter1 = odlicz

    do
    start timer1
    bitwait koniec,set
    reset koniec

    rem petla powtarza sie co 100 us

    loop

    etykieta:
    licznik = counter1 rem To ma eliminowac czas od momentu
    licznik= licznik+odlicz rem zgloszenia przerwania, do jego obslugi
    counter=licznik
    set koniec
    Return

    Dodano po 7 [minuty]:

    Ewentualnie, cos duzo prostszego!!!

    dim licz as byte

    do
    for licz= 0 to 100
    next licz

    loop

    Ten przyklad pewnie nie odliczy czasu zbyt dokladnie ale jest prosty
    Zalezy jeki masz zegar, jesli 12 MHz to cykl trwa 1MHz czyli 1us
    wiec trzeba t± 1us wykonac 100 razy.
    Problem w tym ze niekture instrukcje s± wykonywane w czasie dluzszym niz
    jeden cykl maszynowy