Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ATMEL 89C51 zadatak u C

[es] :: Elektronika :: Mikrokontroleri :: ATMEL 89C51 zadatak u C

Strane: < .. 1 2 3 4

[ Pregleda: 8564 | Odgovora: 63 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

HeplF2
Mika Petrov
Beograd

Član broj: 331020
Poruke: 61
*.adsl-a-6.sezampro.rs.



+1 Profil

icon Re: ATMEL 89C51 zadatak u C02.12.2015. u 15:44 - pre 101 meseci
Opet nista :( istu gresku izbacuje
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: ATMEL 89C51 zadatak u C02.12.2015. u 15:49 - pre 101 meseci
isprati debagerom
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: ATMEL 89C51 zadatak u C02.12.2015. u 16:28 - pre 101 meseci
dakle ovako
1. ugasis interapt rutinu skroz
2. ispratis debagerom main, mora da ti popuni ring[] niz sa ovima koji
su deljivi sa 3

to ti je cca 4 minuta opsla max
 
Odgovor na temu

HeplF2
Mika Petrov
Beograd

Član broj: 331020
Poruke: 61
*.adsl-a-6.sezampro.rs.



+1 Profil

icon Re: ATMEL 89C51 zadatak u C02.12.2015. u 17:56 - pre 101 meseci
popuni ali ne radi , ne znam zasto
 
Odgovor na temu

uart

Član broj: 232423
Poruke: 125
*.adsl.eunet.rs.



+6 Profil

icon Re: ATMEL 89C51 zadatak u C02.12.2015. u 19:21 - pre 101 meseci
U poslednjoj verziji koda ne vidim ET0=1 (enable timer 0 interrupt)?

 
Odgovor na temu

HeplF2
Mika Petrov
Beograd

Član broj: 331020
Poruke: 61
*.adsl-a-6.sezampro.rs.



+1 Profil

icon Re: ATMEL 89C51 zadatak u C02.12.2015. u 22:48 - pre 101 meseci
Jeste,nema ga.

Pise undefined identifier kada ga dodam u inicijalizaciju
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: ATMEL 89C51 zadatak u C02.12.2015. u 22:49 - pre 101 meseci
kako ne radi ako popuni?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: ATMEL 89C51 zadatak u C02.12.2015. u 22:51 - pre 101 meseci
mora pokrenes interapt, sad kako se to radi nemam pojma to vec moras sam da resis ali ako ti popuni niz znaci da radi kako terba main, sad samo jos napravi da radi interapt i ispisivace ti to na 1sec
 
Odgovor na temu

micromatic
Hrvatska

Član broj: 37825
Poruke: 85
217.68.82.*

Sajt: www.micromatic.hr


Profil

icon Re: ATMEL 89C51 zadatak u C04.12.2015. u 07:33 - pre 101 meseci
Probaj ovaj kod

Code:


#include <reg51.h> 
#include <math.h>                  
typedef unsigned char byte;

byte a[7]= {3,5,15,1,4,11,9}; 

byte counter;
byte xdata display _at_ 0x8001;
byte xdata Buffer[7] _at_ 0x8002;
byte started = 0;
int i=0;
int j=0;

sbit switcher=P0^0;
 
void Inic(void) 
{
    EA=1;         
    TMOD=1;       //  16 bit timer
    TH0=0x3C;     // set timer0  0xC350
    TL0=0xAF;     // 50,000 decimalno
    TR0=0;          // NE STARTAMO TIMER ODMAH
    counter=1;    // set brojac
}

 
void timer0(void) interrupt 1 using 2 
{    
    TH0=0x3C;  // set timer0  C350 = 50,000
    TL0=0xAF;   // posle svakog prekida                   
    
    counter--;  // broj prekide
    if(counter == 0)      // broj 20 prekida za 1 sec kasnjenja     
       {
       counter = 20;        
       if(started == 1)  
         {
                display=Buffer[j];  // ispisi na displej
                 j++;                 // inkrementiranje za  novu vrednost u nizu
         if(Buffer[j] == 0)         // kada se prodju svi elementi u nizu ,resetuj tajmer                         
            {
            ET0 = 0;      // disable timer 0 
            TR0 = 0;      // stop timer0 - svi u nizu su provereni
            started = 0;  // started = 0,zaustavi kada se prekidac opet stisne 
            }
         }
       }
}

void main(void) 
{
   Inic();        
   switcher = 1;  // prekidac se startuje na 1
   i = 0;         // postavi i na prvi broj u nizu
   j = 0;         // postavi i na prvi broj u bufferu

   // izdvojimo u buffer brojeve iz niza djeljive s 3
 nxt:
            if(!(a[i]%3) )       //    deli brojeve u nizu sa 3
              {
                  Buffer[j]=a[i];  // ako su deljivi, upiši u buffer    
                 j++;             // inkrementiranje za  novu poziciju u bufferu                
                  Buffer[j]=0;     //kraj tabele buffera  
              }
         i++;             // inkrementiranje za  novu vrednost u nizu
         if(i < 7)        // obradi sve elemente u nizu                        
         goto nxt;     

   while(1)                 // 
     {                    
     if(switcher == 0)    
       if(started == 0)   
          {         
          started = 1;    // started ide na 1 kada je prekidac pritisnut
          counter = 1;    // ceka se 50 milisekundi
          j=0;            // krečemo od prvog broja u bufferu
          ET0=1;          // enable timer0 interupt
          TR0=1;          // start timer0        
          }
     }            
}            

 



 
Odgovor na temu

HeplF2
Mika Petrov
Beograd

Član broj: 331020
Poruke: 61
*.adsl-a-1.sezampro.rs.



+1 Profil

icon Re: ATMEL 89C51 zadatak u C04.12.2015. u 13:03 - pre 101 meseci
Probao sam taj sto si napisao sa bufferom ali ne radi.
Upalio sve diode na svim adresama 8000 8001 8002 8003 i neke ugasio opet na razlicitim..Svaki put kada startujem , neke druge diode ugasi ili upali.. ali svi portovi sa diodama su upaljeni, i zelene i zute i crvene plave. Onda kada ugasim i opet pokrenem program potpuno druge su neke upaljene, recimo plave... itd

Probao sam ja i dalje ovako

Code:

#include <reg51.h> 
                 
typedef unsigned char byte;

byte a[16]= {7,5,16,3,1,4,11,6,12,15,24,13,18,33,39,14}; 
byte counter;
byte frequency;
byte displ;
byte xdata display _at_ 0x8001;
byte started = 0;
int i=0;

sbit switcher=P0^0;
 
void Inic(void) 
{
    EA=1;         
    TMOD=1;       
    TH0=0x3C;    
    TL0=0xAF;     
    
    counter=1;   

 
void timer0(void) interrupt 1 using 2 
{   
    TH0 = 0x3C;           
    TL0 = 0xAF;                     
    
    counter--;           
    if(counter == 0)      
       counter = 200;      
       if(started == 1)   
         {   
         while(i < 16)    
           {
           if( (a[i] % 3) == 0)   
              {
              display = (a[i]); 
              i++;          
              break;     
              } 
           i++;           
           }                   
         if(i == 16)       
           {
           ET0 = 0;       
           TR0 = 0;       
           started = 0;     
           }
         }      
       }  
}

void main(void) 
{
   Inic();        
   switcher = 1;  
                 
   while(1)       
     {                    
     if(switcher == 0)   
       if(started == 0)  
          {         
          started = 1;   
          i = 0;        
          counter = 200;   
                       
          TH0=0x3C;     
          TL0=0xAF;      
          ET0=1;         
          TR0=1;        
          }
     }            




Dodao sam samo break u prekidnoj rutini. Mada to nesto ne pomaze al ajde...
I povecao sam recimo brojac na 200 i usporio je dostaprelaz ali kao da jos malkice treba da se smanji brzina ,to je mozad u mili sekundama ali ne znam kako tacno da odredim.....
 
Odgovor na temu

HeplF2
Mika Petrov
Beograd

Član broj: 331020
Poruke: 61
*.adsl-a-1.sezampro.rs.



+1 Profil

icon Re: ATMEL 89C51 zadatak u C04.12.2015. u 13:05 - pre 101 meseci
ovo u zaglavlju zanemarite , posto sam probao nesto drugo pa je ostalo ali ne smeta da stoji
Code:

byte frequency;
byte displ;

 
Odgovor na temu

HeplF2
Mika Petrov
Beograd

Član broj: 331020
Poruke: 61
*.adsl-a-1.sezampro.rs.



+1 Profil

icon Re: ATMEL 89C51 zadatak u C04.12.2015. u 13:06 - pre 101 meseci
Bilo bi dobro ako neko ima program micro vision pa da isproba program pa da se uveri ,tesko je ovako...
ATMEL 89 C 51
 
Odgovor na temu

micromatic
Hrvatska

Član broj: 37825
Poruke: 85
217.68.82.*

Sajt: www.micromatic.hr


Profil

icon Re: ATMEL 89C51 zadatak u C04.12.2015. u 13:30 - pre 101 meseci
Program je i proban u microvisionu i radi dobro.

Problem je da ti sad navodiš da "Upalio sve diode na svim adresama 8000 8001 8002 8003 i neke ugasio opet na razlicitim.." što mi baš nije jasno!?


Na početku programa definiraš da je

byte xdata display _at_ 0x8001;

Dakle display je bajt rama na adresi 0x8001

To nisu diode

U mom programu na adresama 0x8002 i narednih 7 je buffer a ne diode.

Malo pojasni sam hardwer.
 
Odgovor na temu

HeplF2
Mika Petrov
Beograd

Član broj: 331020
Poruke: 61
212.200.65.*



+1 Profil

icon Re: ATMEL 89C51 zadatak u C04.12.2015. u 18:06 - pre 101 meseci
E pa kod mene je cetiri reda po osam dioda razlicitih boja i svaki red tih 8 dioda razlicite boje, poziva se sa adresama koje sam naveo .... Tako je kod mene..
Kako ti se cini moj kod?

a bafera nema i nismo to koristili nikada
 
Odgovor na temu

micromatic
Hrvatska

Član broj: 37825
Poruke: 85
37.244.250.*

Sajt: www.micromatic.hr


Profil

icon Re: ATMEL 89C51 zadatak u C04.12.2015. u 18:23 - pre 101 meseci
A tih 8 dioda po adresi su 7 segmentni displej ili kako na njih upisati broj (binararno svaka adresa 1 znamenka ili kako)
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: ATMEL 89C51 zadatak u C04.12.2015. u 18:32 - pre 101 meseci
posalji ceo projekat u keil-u koji ima sve te kalakurcije .. pa da vidimo
 
Odgovor na temu

HeplF2
Mika Petrov
Beograd

Član broj: 331020
Poruke: 61
*.mts.telekom.rs.



+1 Profil

icon Re: ATMEL 89C51 zadatak u C05.12.2015. u 19:47 - pre 101 meseci
Taj displej se zove LED/7 seg 4x8 . Znaci diode su 4 reda po osa led dioda . Svaki red ima svoju adresu pomocu koje se poziva znaci 8000 8001 8002 8003 , redom crvene zute zelene plave

Atachment je u prilogu kako izgleda


[Ovu poruku je menjao HeplF2 dana 05.12.2015. u 21:02 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

HeplF2
Mika Petrov
Beograd

Član broj: 331020
Poruke: 61
*.mts.telekom.rs.



+1 Profil

icon Re: ATMEL 89C51 zadatak u C05.12.2015. u 19:50 - pre 101 meseci
Kod je napisan ovako i najbolji je jer je brzina jako priblizna jednoj sekundi ,u mili sekundama je razlika

Code:

#include <reg51.h> 
                 
typedef unsigned char byte;

byte a[16]= {7,5,16,3,1,4,11,6,12,15,24,13,18,33,39,14}; 
byte counter;
byte xdata display _at_ 0x8001;
byte started = 0;
int i=0;

sbit switcher=P0^0;
 
void Inic(void) 
{
    EA=1;         
    TMOD=1;       
    TH0=0x3C;    
    TL0=0xAF;     
    
    counter=1;   

 
void timer0(void) interrupt 1 using 2 
{   
    TH0 = 0x3C;           
    TL0 = 0xAF;                     
    
    counter--;           
    if(counter == 0)      
       counter = 200;      
       if(started == 1)   
         {   
         while(i < 16)    
           {
           if( (a[i] % 3) == 0)   
              {
              display = (a[i]); 
              i++;          
              break;     
              } 
           i++;           
           }                   
         if(i == 16)       
           {
           ET0 = 0;       
           TR0 = 0;       
           started = 0;     
           }
         }      
       }  
}

void main(void) 
{
   Inic();        
   switcher = 1;  
                 
   while(1)       
     {                    
     if(switcher == 0)   
       if(started == 0)  
          {         
          started = 1;   
          i = 0;        
          counter = 200;   
                       
          TH0=0x3C;     
          TL0=0xAF;      
          ET0=1;         
          TR0=1;        
          }
     }            


 
Odgovor na temu

HeplF2
Mika Petrov
Beograd

Član broj: 331020
Poruke: 61
*.mts.telekom.rs.



+1 Profil

icon Re: ATMEL 89C51 zadatak u C10.12.2015. u 09:49 - pre 101 meseci
...........i onda su ljudi utihnuli :))
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: ATMEL 89C51 zadatak u C10.12.2015. u 12:17 - pre 101 meseci
Slaba trojčica.. neka. Slaba zato što ne slušaš šta ti ljudi savetuju a trojčica za trud i muku :)
gorankg
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: ATMEL 89C51 zadatak u C

Strane: < .. 1 2 3 4

[ Pregleda: 8564 | Odgovora: 63 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.