Öncelikle herkese merhaba, ilk konumun bu olmasını istemezdim fakat üniversite sebebiyle fazla aktiflik sağlayamıyorum. Özet geçeceğim klasik başına buyruk üniversite hocalarının
azizliğine uğruyoruz dönem başında C++ ile başlayıp dönem sonunda Assembly ile devam ettirme kararı aldı C++ ile bir sorunum yok fakat Assembly de başarılı olduğum söylenemez bu sebeple yardıma ihtiyacım var vakit ayırıp okuduğunuz için minnettarım. Aşağıya hocanın paylaştığı hazır kodu yazıyorum bunun üzerinde oynama yapılacakmış, hocanın isteği şu şekilde;


"8051 ile trafik lambası uygulaması yapılacaktır. Bir kırmızı LED port0.3, bir sarı LED port0.5, bir yeşil
LED port0.7’ye bağlanacaktır. Sistemde önce kırmızı LED 10 saniye yanacak, sonra sarı LED 10 saniye
yanacak, süre bitiminde kırmızı ve sarı ışık sönerken yeşil ışık 10 saniye yanacaktır. Yeşil ışık sönünce,
port P2.2’ye bağlanan mavi LED 3 saniye yanıp sönecektir. Mavi LED söndükten sonra trafik ışıkları aynı
sistemde yanmaya devam edecektir."

NOT: Proteus üzerinde simülasyonu gerçekleştirilecek. Ücretli yaparım diyenler için Whatsapp İletişim İçin Tıkla


org 0000h
ljmp start


org 0200h
    start:clr p0.0; set red led
          setb p0.1;off yellow
          setb p0.2;off green
          lcall delayfor10;generate a delay of 10 sec
          clr p0.1;yellow led on indicating red will turn off in sometime
          lcall delayfor5;delay for yellow led
          setb p0.0;off the red led
          setb p0.1;off yellow led
          clr p0.2;turn on green led
          lcall delayfor10;delay for 10sec
          clr p0.1;turn on yellow led for indicating the green will turn on
          lcall delayfor5;delay for 5 sec
          sjmp start;again repeat the same process
org 1500h
              delayfor10:mov tmod,#01h;initilize the timer
                         mov r0,#152;N1
              back:   mov tl0,#00h;
                         mov th0,#00h;
                        
                         setb tr0;
                    check:jnb tf0,check;66ms 66ms*152=10 sec
                          clr tf0;
                          clr tr0;
                          djnz r0,back
                          ret;
                          
org 1700h
              delayfor5:mov tmod,#01h;initilize the timer
                        mov r0,#76;
              back1:   mov tl0,#00h;
                         mov th0,#00h;
                        
                         setb tr0;
                    check1:jnb tf0,check1
                           clr tf0;
                           clr tr0;
                          djnz r0,back1;we are able to generate the required delay
                          ret;      
end