Re: Przerwania czasowe w AT89C51



Masz problem? Zapytaj na forum elektroda.pl z bramką pl.misc.elektronika!

Poprzedni Następny
Wiadomoœć
spis treści
From: "Paweł Kowalski" <pk_at_nospam_tcs.uni.wroc.pl>
Subject: Re: Przerwania czasowe w AT89C51
Date: Thu, 22 Jul 1999 00:16:25 +0200



Juliusz <juliusz_at_nospam_multi-ip.com.pl> wrote in message
news:cTnl3.42$D4.581_at_nospam_news.tpnet.pl...

To jest bardzo proste. Ale bez znajomosci assemblera nie zrobisz tego jak
nie wiesz co sie dzieje w sprzecie. Timer zlicza do max. 0xFFFF i moze
wystapic przerwanie od przekrecenia sie licznika. naliczenie o 1 nastepuje
co cykl maszynowy czyli kwarc/12. Jak ci malo to zrobisz sobie programowe
liczniki, zliczajace ilesc przerwan i co iles tam tych przerwan wykonujesz
co tam chcesz. To jest razem 20-30 rozkazow. Bardzo proste.

Z assemblerem jest u mnie akurat całkiem nieźle (przynajmniej jeśli chodzi o
procedury na pc). Chodziło mi raczej o opis krok po kroku jak uaktywnić
takie przerwanie. Jak powiedzieć mu, żeby liczył do np. 0x0F00?

Dzięki za pomoc...

Kowal



Poprzedni Następny
Wiadomoœć
spis treści
From: "Juliusz" <juliusz_at_nospam_multi-ip.com.pl>
Subject: Re: Przerwania czasowe w AT89C51
Date: Thu, 22 Jul 1999 13:00:56 GMT



Paweł Kowalski napisał(a) w wiadomości: <3797021a_at_nospam_news.vogel.pl>...

Juliusz <juliusz_at_nospam_multi-ip.com.pl> wrote in message
news:cTnl3.42$D4.581_at_nospam_news.tpnet.pl...

To jest bardzo proste. Ale bez znajomosci assemblera nie zrobisz tego jak
nie wiesz co sie dzieje w sprzecie. Timer zlicza do max. 0xFFFF i moze
wystapic przerwanie od przekrecenia sie licznika. naliczenie o 1
nastepuje
co cykl maszynowy czyli kwarc/12. Jak ci malo to zrobisz sobie programowe
liczniki, zliczajace ilesc przerwan i co iles tam tych przerwan
wykonujesz
co tam chcesz. To jest razem 20-30 rozkazow. Bardzo proste.

Z assemblerem jest u mnie akurat całkiem nieźle (przynajmniej jeśli chodzi
o
procedury na pc). Chodziło mi raczej o opis krok po kroku jak uaktywnić
takie przerwanie. Jak powiedzieć mu, żeby liczył do np. 0x0F00?

Dzięki za pomoc...



Tu masz caly setup poczatkowy. Poprzesuwaj sobie te kreski, bo windows je
jakos zle formatuje.
Tutaj T0 jest 16-bitowy

ORG 00H ;START
AJMP START

ORG 0BH ;SRV T0
ajmp SRV_T0 ; <----- to jest labelek poczatku procedury przerwania.



START: clr EA
IE_SetUp equ 00000000B ; 1=on
; | ||||^ przerwania z INT0
; | |||^ przerwania z T0
; | ||^ przerwania od INT1
; | |^ przerwania od T1
; | ^ przerwania z SIO
; |
; ^ wszystkie przerwania

mov IE,#IE_SetUp


IP_SetUp equ 00000000B
; ||||^ priorytet przerwania z INT0
; |||^ priorytet przerwania z T0
; ||^ priorytet przerwania od INT1
; |^ priorytet przerwania od T1
; ^ priorytet przerwania z SIO
;

mov IP,#IP_SetUp


TMOD_SetUp equ 00010001B
; |||||||^ tryb T0 0,1,2,3
; ||||||^ tryb T0
; |||||^ 0-czasomierz 1-licznik
; ||||^ 1-bramkowanie /INT0
; |||^ tryb T1 0,1,2,3
; ||^ tryb T1
; |^ 0-liczenie wlasnych cykli masz., 1-impulsy zewnetrzne
; ^ 1-bramkowanie /INT1

mov TMOD,#TMOD_SetUp


TCON_SetUp equ 00000000B
; |||||||^ 0-od LOW 1-od HIGH na INT0
; ||||||^
; |||||^
; ||||^
; |||^ 0-stop 1-praca licznika T0
; ||^
; |^ 0-stop 1-praca licznika T1
; ^
mov TCON,#TCON_SetUp

;SCON_SetUp equ 11110000B
; |||||||^ - znacznik odebrania znaku RI
; ||||||^ - znacznik zakonczenia wysylania znaku TI
; |||||^ - dziewiaty znak odbierany RB8
; ||||^ - dziewiaty znak wysylany TB8
; |||^ - uaktywnienie odbiornika REN
; ||^ - multiproces
; |^ - tryb 3 seriala
; ^ - tryb 3 seriala
; mov SCON,#SCON_SetUp


dakej start T0

mov TCON,#00010000B ;start T0
mov IE,#10000010B ;wlaczam przerwania T0 + wszystkie

i juz tnie glowna petelke.

Juliusz