Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

mikrobasic komut yardımı

Başlatan secretagent, 23 Ocak 2012, 15:12:45

secretagent

arkadaşlar elimdeki programda biryer var anlıyamadım yardımcı olurmusunuz

program Usart_Test
include kontrol
  dim sonuc2,sonuc3, kontrol,KONTROL2,n3 as byte


main:

   OSCCON=%01110000
   ANSEL=0
  trisa=0                 ' initialize USART module
  trisb=%11000000
  portb=%11000000
  trisc=%01000000
  sayac[0]=179
  sayac[1]=0
  sayac[2]=0
  sayac[3]=0
  sayac[4]=0
  sayac[5]=0
  sayac[6]=0
  sayac[7]=0
  sayac[8]=0
  sayac[9]=0
  sayac[10]=0
  sayac[11]=0
  sayac[12]=0

  
  porta=0
   porta.4=1
  trisc.3=0
  portc.3=0
  j=0
  n=0
  n3=0
  n2=1
  kontrol=0
  KONTROL2=0
  sonuc=0
  sonuc2=150
  delay_ms(1500)
  USART_init(9600)

   portb=0
   portc.0=0
   portc.1=0
   Usart_Write(00)                             '  (8 bit, 19200 baud rate, no parity bit...)
  while TRUE

d1:

     if portb.7=1 then
       delay_ms(100)
       goto d1
       end if
       
d2:
    if portb.7=0 then
       goto d2
       end if
        portc.3=1
        delay_ms(100)
         portc.3=0





         
         
      oku

       n2=0
gonder:
      Usart_Write(sayac[n2])
      delay_ms(10)
      inc(n2)

      if n2<13 then
       goto gonder

       end if

        if portb.6=0 then
       Usart_Write(100)
       delay_ms(10)
       Usart_Write(00)
       else
       Usart_Write(200)
       delay_ms(10)
       Usart_Write(00)
       
       
       ' kontrol=kontrol or %00100000
       
       end if

       n2=1
d9:
      if (UsART_Data_Ready() <> 0) then      ' If data is received,
         sonuc2 = USART_Read()                  ' read the received data
      else
       goto d9
     end if
       '   oku

          delay_ms(100)
           inc(n3)
      'if sonuc2=150 then
'
'      kontrol=kontrol or %10000000
'      end if
'      kontrol=kontrol >> 1
'      if kontrol.3=1 then
'         porta.4=1
'           delay_ms(200)
'         porta.4=0
'         portc.3=0
'         else
'         portc.3=1
'       end if
  select case sonuc2

  case 150
   kontrol=kontrol >> 1
   case 152
  kontrol=kontrol or %10000000

      kontrol=kontrol >> 1


  case 154

   kontrol=kontrol >> 1
    if kontrol.5=0 then
      portb.5=1
      else
      portb.5=0
      end if
       if portb.6=1 then
        kontrol.4=1
       end if
       

       
       
       
       
  case 156
  kontrol=kontrol or %10000000
  kontrol=kontrol >> 1
    if kontrol.5=0 then
      portb.5=1
      else
      portb.5=0
      end if
   if portb.6=1 then
        kontrol.4=1
       end if
  case else

        kontrol=kontrol or %10000000
        kontrol=kontrol >> 1
end select
'    sonuc=sonuc2
'      if portc.3=0 then
'         porta.4=1
'         delay_ms(200)
'         porta.4=0
'       end if


       if kontrol.2=1 then
       if n3>3 then
         porta.4=1
          delay_ms(200)
         porta.4=0
         portc.3=1
         delay_ms(500)
           end if
         else

         portc.3=0

         end if


  wend
  
end.


buda kontrol programı

module kontrol

' dim i as byte[13]
dim sayac as byte[13]
dim j,n,sonuc,n2,hb,lb as byte
dim   karsilastir as word
 '*************************************************
sub procedure oku
d4:
    select case n
 case 0
    portb.0=1
  case 1
    portb.3=1
  case 2
    portc.1=1
  case 3
    portc.0=1
   case 4
    portb.2=1
  case 5
    portb.1=1
end select


        j=0
 d3:
       if (UsART_Data_Ready() <> 0) then
      sayac[n2] = USART_Read()

      inc(j)
      inc(n2)
      else
       goto d3
       end if
      if j<2 then
         goto d3
      end if
      
     'karsilastir =256 * hb + lb
'      if karsilastir > 4096 then
'        portb=0
'        goto d4
'        delay_ms(50)
'
'       end if

     select case n
   case 0
    portb.0=0
  case 1
    portb.3=0
  case 2
    portc.1=0
  case 3
    portc.0=0
   case 4
    portb.2=0
  case 5
    portb.1=0

end select
     ' portb=portb and %11100000
      inc(n)

     if n<6 then
      delay_ms(10)
     goto d4
      end if
       n=0
       n2=1

        porta.1=1
        delay_ms(100)
        porta.1=0
        
     end sub
end.



SORMAK İSTEDİĞİM ise ana programda kontrol.5 diye bir komut var bu komutun anlamı nedir.daha doğrusu kontrol diye bir register tanımlanmamış ki neden kontrolun 5.biti demiş anlayamadım.

Kabil ATICI

 programında
dim sonuc2,sonuc3, kontrol,KONTROL2,n3 as byte
satıında kontrol diye bir değişken ataman var.
kontrol.5 bu değişkenin 5. biti.
kontrol.2 bu değişkenin 2. biti.
ambar7

secretagent

SÖYLEDİĞİNİZ DOĞRU PEKİ KONTROLUN İÇİNE SAYIYI NERDEN ATIYOR PROGRAMDA ONU BULAMIYORUM :s

SERRO EFE

kontrol=kontrol or %10000000
bu satırla kontrolün içine atama yapıyor.

Kabil ATICI

select case sonuc2

  case 150
   kontrol=kontrol >> 1
   case 152
  kontrol=kontrol or %10000000

      kontrol=kontrol >> 1


  case 154

   kontrol=kontrol >> 1
    if kontrol.5=0 then
      portb.5=1
      else
      portb.5=0
      end if
       if portb.6=1 then
        kontrol.4=1
       end if
       

       
       
       
       
  case 156
  kontrol=kontrol or %10000000
  kontrol=kontrol >> 1

    if kontrol.5=0 then
      portb.5=1
      else
      portb.5=0
      end if
   if portb.6=1 then
        kontrol.4=1
       end if
  case else

       kontrol=kontrol or %10000000
        kontrol=kontrol >> 1

end select
'    sonuc=sonuc2
'      if portc.3=0 then
'         porta.4=1
'         delay_ms(200)
'         porta.4=0
'       end if


       if kontrol.2=1 then
       if n3>3 then
         porta.4=1
          delay_ms(200)
         porta.4=0
         portc.3=1

kalın yazıların yazıldığı yerlerde.
ambar7

secretagent