Gönderen Konu: 8051 Örnek Programlar  (Okunma sayısı 16080 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Uykusuz

  • Ziyaretçi
8051 Örnek Programlar
« : 05 Nisan 2009, 16:29:54 »
Soru:

8051 internal data memory 30H adresinde pozitif sayılardan oluşan 25d byte uzunluğunda bir X dizisi bulunmaktadır. Y= Toplam(20 x X + 7) bağıntısı ile tanımlı sonucu hesaplayan ve bellekte 50H adresine kaydeden program.

         
         MOV      R0,#30H
         MOV      R1,#25
         MOV      R2,#0
TEKRAR:         
         MOV      B,#20
         MOV      A,@R0
         MUL      AB            ;SIRADAKI ELEMAN 20 ILE CARPILDI
         CLR      C            ;CARRY TEMIZLENDI
         ADD      A,#7         ;SIRADAKI ELEMAN 7 ILE TOPLANDI
         JNC      DEVAM1
         CLR      C
         INC      B
         JNC      DEVAM1
         INC      R2
DEVAM1:
         CLR      C
         ADD      A,50H
         MOV      50H,A
         JNC      DEVAM2
         CLR      C   
         INC      51H
         JNC      DEVAM2
         CLR      C
         INC      52H
DEVAM2:
         CLR      C
         MOV      A,B
         ADD      A,51H
         MOV      51H,A
         JNC      DEVAM3
         CLR      C
         INC      52H
DEVAM3:
         CLR      C
         MOV      A,R2
         ADD      A,52H
         MOV      52H,A
      
         
         INC      R0
         CJNE   R0,#49H,TEKRAR

         END                              
« Son Düzenleme: 05 Nisan 2009, 16:30:23 Gönderen: Uykusuz »

Uykusuz

  • Ziyaretçi
Ynt: 8051 Örnek Programlar
« Yanıtla #1 : 05 Nisan 2009, 17:52:34 »
P1 Portuna bağlı ortak katot 7 segment displayi sürekli 0'dan 9'a kadar saydıran program:

         MOV         50H,#11111100B   ;0
         MOV         51H,#01100000B   ;1
         MOV         52H,#11011010B   ;2
         MOV         53H,#11110010B   ;3
         MOV         54H,#01100110B   ;4
         MOV         55H,#10110110B   ;5
         MOV         56H,#10111110B   ;6
         MOV         57H,#11100000B   ;7
         MOV         58H,#11111110B   ;8
         MOV         59H,#11100110B   ;9
         
         MOV         R0,#4FH
TEKRAR:
         INC         R0
         MOV         P1,@R0
         LCALL      BEKLE
         CJNE      R0,#59H,TEKRAR
         MOV         R0,#4FH
         JMP         TEKRAR

BEKLE:
         MOV         R2,#0FFH   
         MOV         R1,#0FFH
TEKRARB:      
         DJNZ      R1,TEKRARB
         DJNZ      R2,TEKRARB
         RET

Uykusuz

  • Ziyaretçi
Ynt: 8051 Örnek Programlar
« Yanıtla #2 : 05 Nisan 2009, 21:29:16 »
P1 Portuna bağlı bir ortak katot display, P2,0 portuna bağlı bir butona basıldıkça ondalık olarak saydırılacaktır. P2,1 portuna bağlı olan butonla da sıfırlanacaktır. Çözümü:

         MOV         50H,#11111100B   ;0
         MOV         51H,#01100000B   ;1
         MOV         52H,#11011010B   ;2
         MOV         53H,#11110010B   ;3
         MOV         54H,#01100110B   ;4
         MOV         55H,#10110110B   ;5
         MOV         56H,#10111110B   ;6
         MOV         57H,#11100000B   ;7
         MOV         58H,#11111110B   ;8
         MOV         59H,#11100110B   ;9
         
         
         MOV         P1,#11111100B   ;0
         MOV         R0,#50H
TEKRAR:
         MOV         A,P2
         ANL         A,#00000001B
         CJNE      A,#1,RESET?
         CJNE      R0,#59H,DEVAM
         JMP         RESET?
DEVAM:               
         INC         R0
         MOV         P1,@R0
         LCALL      BEKLE
         JMP         TEKRAR
RESET?:
         MOV         A,P2
         ANL         A,#00000010B
         CJNE      A,#2,TEKRAR
         MOV         R0,#50H
         MOV         P1,@R0
         LCALL      BEKLE
         JMP         TEKRAR
         
BEKLE:
         MOV         R2,#0FFH   
         MOV         R1,#0FFH
TEKRARB:     
         DJNZ      R1,TEKRARB
         DJNZ      R2,TEKRARB
         RET

Uykusuz

  • Ziyaretçi
Ynt: 8051 Örnek Programlar
« Yanıtla #3 : 05 Nisan 2009, 23:27:57 »
30H adresinde 25D uzunluğundaki bir dizi yer almaktadır. Y= (X^2)-5 bağıntısı ile tanımlı Y dizisini 50H adresinden itibaren oluşturunuz:

        MOV     R0,#2FH
        MOV      R1,#50H
TEKRAR:
      INC      R0     
      MOV      A,@R0   
        MOV     B,A
        MOV     A,@R0
        MUL     AB           
        CLR     C           
        SUBB    A,#5         
        JNC      DEVAM1
        DEC      B
DEVAM1:
      MOV      @R1,A
      INC      R1
      MOV      @R1,B
      INC      R1
      CJNE   R0,#49H,TEKRAR
        END 
« Son Düzenleme: 06 Nisan 2009, 00:22:57 Gönderen: Uykusuz »

Uykusuz

  • Ziyaretçi
Ynt: 8051 Örnek Programlar
« Yanıtla #4 : 20 Nisan 2009, 16:34:35 »
P2.0 a basınca tek, P2.1 set olunca da çift sayan program:

         

         
         MOV         DPTR,#0700H
         MOV      R5,#0
TEKRAR:
       
         MOV         C,P2.0
         JC         TEK
         MOV         C,P2.1
         JC         CIFT
         JMP         DEVAM
TEK:
      MOV         R3,#1
      JMP      DEVAM
CIFT:
      MOV         R3,#0
      
DEVAM:

         MOV      A,R5
       
         MOVC         A,@A+DPTR
         MOV      P1,A
        LCALL      BEKLE
         INC      R5
         INC      R5
         
         CJNE      R5,#0AH,DEVAM2
DEVAM2:
         JC         TEKRAR
SIFIRLA: 
      MOV         A,R3       
         MOV         R5,A
         JMP         TEKRAR
         

BEKLE:
         MOV         R2,#0FFH   
         MOV         R1,#0FFH
TEKRARB:     
         DJNZ      R1,TEKRARB
         DJNZ      R2,TEKRARB
         RET
         
         org      700h
         DB         11111100B   ;0
         DB         01100000B   ;1
         DB         11011010B   ;2
         DB         11110010B   ;3
         DB         01100110B   ;4
         DB         10110110B   ;5
         DB         10111110B   ;6
         DB         11100000B   ;7
         DB         11111110B   ;8
         DB         11100110B   ;9
         

             
« Son Düzenleme: 20 Nisan 2009, 16:35:42 Gönderen: Uykusuz »

Uykusuz

  • Ziyaretçi
Ynt: 8051 Örnek Programlar
« Yanıtla #5 : 30 Nisan 2009, 16:10:51 »
P2 portuna bağlı 8 adet ledi sağa ve sola kaydıran program:

         MOV      A,#01H
         MOV      P2,A
SOLA:         
         LCALL   BEKLE
         CJNE   A,#128,SOLA2
         LJMP   SAGA
SOLA2:
         RL      A
         MOV      P2,A   
         LJMP      SOLA
         
SAGA:
         LCALL   BEKLE
         CJNE   A,#1,SAGA2
         LJMP   SOLA
SAGA2:
         RR      A         ;
         MOV      P2,A   
         LJMP   SAGA

BEKLE:
         MOV      R4,#0FFH
D2:         
         MOV      R5,#0FFH
D1:
         DJNZ   R5,D1
         DJNZ   R4,D2
         RET

Uykusuz

  • Ziyaretçi
Ynt: 8051 Örnek Programlar
« Yanıtla #6 : 25 Haziran 2009, 08:17:46 »
TMR1 Kullanılarak yapılmış, P1.0 pğortundan 500Hz frekansında kare dalga üreten program:

      ORG      0000H
      LJMP   ANA
      ORG      001BH
      MOV      TL1,#17H
      MOV      TH1,#0FCH
      LJMP   TMR1
ANA:
      MOV      TMOD,#10H
      MOV      TL1,#17H
      MOV      TH1,#0FCH
      SETB   TR1
      SETB   EA
      SETB   ET1
DON:
      SJMP   DON
TMR1:
      PUSH   PSW
      CPL      P1.0
      POP      PSW
      RETI
      END

« Son Düzenleme: 25 Haziran 2009, 08:18:50 Gönderen: Uykusuz »

Uykusuz

  • Ziyaretçi
Ynt: 8051 Örnek Programlar
« Yanıtla #7 : 25 Haziran 2009, 08:39:59 »
Timer1 kullanılarak T1 girişinbe uygulanan 10KHz frekansındaki sinyali P1.0 çıkışında 10Hz'e düşüren program:

      ORG      0000H
      LJMP   ANA
      ORG      001BH
      MOV      TL1,#9BH
      MOV      TH1,#9BH
      LJMP   TMR1
ANA:
      MOV      TMOD,#60H
      MOV      TL1,#9BH
      MOV      TH1,#9BH
      SETB   TR1
      SETB   EA
      SETB   ET1
DON:
      SJMP   DON
TMR1:
      PUSH   PSW
      CPL      P1.0
      POP      PSW
      RETI
      END


oaslan72

  • Ziyaretçi
Ynt: 8051 Örnek Programlar
« Yanıtla #8 : 15 Temmuz 2010, 14:39:31 »
!!!!!!!!!!!!ACİLLL!!!!!!!!!!!
OFC3H adresinden başlayan dizinin uzunluğu R1 kayıtçısında saklıdır bu dizindeki her elemanı 2 ile çarpan ve çarpımında 2 bit sağa döndüren 8051 programını yazınız....
yapabilirseniz cok işime yarar acillll.........