Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Kompilator Asemblera Pod Windows

Upi
Kompilator Asemblera Pod Windows

Postautor: Upi » 12 gru 2004, o 16:45

Pytanko numer 1:

Jaki kompilator pod windows jest najlepszy , czyli jakiego wy używacie. Bo ja mam w szkole Reads51 i nie wiem dlaczego jak sie napisze program wykorzystujący przerwania (u mnie zegarowe) to w debuggerze wszystko jest okej , jednak po wgraniu na płytke to juz przerwania sie nie uruchamiają.

Pytanko numer 2:


A może ktoś mógłby podesłać taki najprostszy w świecie programik z Timerami na przerwaniach abym mógl sprawdzić czy to zadzaiła , bo może to ja zły program napisałem. (ten mój program to zegarek z użyciem wyswietlacza 7-segmentowego).

radzio
Moderator
Moderator
Posty:967
Rejestracja:13 maja 2003, o 10:33
Lokalizacja:Sosnowiec
Kontaktowanie:

Postautor: radzio » 12 gru 2004, o 22:22

Odp do pyt 1:
Domyślam się (bo nie określiłeś) ze chodzi o 8051. Ja używam Raisonance http://www.raisonance.com/ lub MIDE http://www.opcube.com wraz z ASEM51 http://plit.de/asem-51/home.htm
Odp do pyt 2:
A moze Ty zamieścisz swój programik i zobaczymy co w nim jest nie tak?

Upi

Postautor: Upi » 13 gru 2004, o 11:51

Poniżej jest kod mojego programu :

Kod: Zaznacz cały

#include <sfr51.inc> ;timer 0 T0_G equ 0 ;Gate T0_C equ 0 ;Counter/Timer T0_M equ 1 ;mode (0..3) Mode1 to od zera do 65536*12/11.0592= 71 ms Tim0 equ T0_M + T0_C*4 + T0_G*8 ;timer 1 T1_G equ 0 ;Gate T1_C equ 0 ;Counter/Timer T1_M equ 0 ;mode (0..3) Zero bo tego timera ne uzywamy Tim1 equ T1_M + T1_C*4 + T1_G*8 TMod_Set equ Tim0 + Tim1*16 ; 50[ms] = 50 000 [mikros] *(11.0592[MHz]/12)=46 080 cykli = 180 *256 Tl0_Set equ 0 Th0_Set equ 256-45 ajmp Start ;--------------------- Procedura odslugi przewania ---------------- org 0Bh mov Th0,#Th0_Set cjne r4,#0,NiePierwsze clr A add A,#e0h add A,r0 mov P1,A inc r4 ajmp JednaZapalona NiePierwsze: cjne r4,#1,NieDrugie clr A add A,#d0h add A,r1 mov P1,A inc r4 ajmp JednaZapalona NieDrugie: cjne r4,#2,NieTrzecie clr A add A,#b0h add A,r2 mov P1,A inc r4 ajmp JednaZapalona NieTrzecie: clr A add A,#70h add A,r3 mov P1,A mov r4,#00h djnz r6,No_1Sek mov r6,#20 inc r0 JednaZapalona: No_1Sek: reti ;------------ Koniec Procedury Obslugi Przerwania ----------- org 100h Start: mov r0,#00h mov r1,#00h mov r2,#00h mov r3,#00h mov r4,#00h mov TMod,#TMod_Set mov Tl0,#Tl0_Set mov Th0,#Th0_Set setb Tr0 mov r6,#20 ; 20 razy na sekunde setb EA ; wlacz zezwolenie ogolne na przerwania setb ET0 ; wlacz zezwolenie na przerwanie od Timera 0 ajmp NieMinelo10s Minelo10s: inc r1 mov r0,#00h cjne r1,#06h,NieMinelo60s inc r2 ; minelo 60s mov r1,#00h cjne r2,#0ah,NieMinelo10m inc r3 ; minelo 10 minut mov r2,#00h NieMinelo60s: NieMinelo10m: NieMinelo10s: cjne r0,#10,NieMinelo10s ajmp Minelo10s end


[ Dodano: 14-12-2004, 11:25 ]
Dodam jeszcze ,że ten program to zegarek , gdzie wynik jest wyswietlany na wyświetlaczu 7-segmentowym . Wartość wysyłana na port P1 bity 0-3 to wartość do wyswietlenia bity 5-7 wysterowanie wyświetacza

[ Dodano: 16-12-2004, 13:50 ]
Jeszcze jedno . Ten program wyżej (zegarek) działa co zostało przetestowane w symulatorach (chyba z trzech). Dopiero po załadowaniu do mikrokontrolera , przestaja się uaktywniać przerwania. Co jest nie tak , nikt nie ma pojęcia , ale to raczej wina sprzętu niz programu i tak jest w całej pracowni , a może i wina programu juz sam nie wiem . Jakby ktos mógł to niech załaduje ten program na mikrokontroler i sprawdzi czy to działa na sprzecie. (piny portu P1.0-P1.3 do wyświetlacza piny P1.4-P1.7 sterują który wyświetlacz wyświetla cyfrę) A pewnie trzeba będzie odhaczyć tego includa na górze i dodać zera tam gdzie jest Add A,#b0h -> Add A,#0b0h (ale to w zaleśności od kompilatora). Koniec juz więcej nie piszę na ten temat jakby ktos miał na tyle chęci aby to sprawdzić to bede wdzieczny.

Wróć do „8051”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 7 gości