Bu kodların karşılıklarını açıklarmısınız?

Başlatan f1varol, 04 Ekim 2007, 14:18:19

f1varol

Bu kodların karşılıklarını açıklayabilirmisiniz arkadaşlar?  Hangi pinlerin giriş_ çıkış olduğunu, hangi pin yüksek olduğunun da hangi pinlerde ne gibi değişiklikler olduğunu vs. Normalde kodların karşılıklarına açıklama yazarız; işte öle bişey istiyorum.
Program 2 adet 7 segment gösterge ve bunlara istenilen değer girilen iki buton ve buna bağlı olarak 1 adet "git" butonu. Yine program ek bir karttaki 3 ayrı sensörden veri alıp pwm moduyla motor sürüyor. ....
programı satır bazın da açıklayıcı bir hale getirebilirseniz çok makbule geçecek. Saygılar


 
b var byte

    
' Display

    digit var byte(10)
    
    digit[0] = %00111111
    digit[1] = %00000110
    digit[2] = %01011011
    digit[3] = %01001111
    digit[4] = %01100110
    digit[5] = %01101101
    digit[6] = %01111101
    digit[7] = %00000111
    digit[8] = %01111111
    digit[9] = %01101111
    
    digit1 var byte
    digit1_old var byte
    digit2 var byte
    digit2_old var byte

    digit1 = 255
    digit2 = 255
    digit1_old = 255
    digit2_old = 255
    
    displayed var byte
    displayed = 1
    
    limit var byte
    limit = 99
    target var byte
    target = 1
    location var byte
    location = 1
    
    turn var byte
    turn = 0
    turn_index var byte
    turn_index = 0
    
' Keyboard    

    btn_up var portd.0
    btn_down var portd.1
    btn_go var portd.2
    
    btn_up_ok var byte
    btn_down_ok var byte
    btn_go_ok var byte
    
    btn_up_ok = 1
    btn_down_ok = 1
    btn_go_ok = 1
    
    btn_up_count var word
    btn_up_count = 0
    btn_down_count var word
    btn_down_count = 0
    
    btn_max_count con 200

' Advertisment

    adv_max_count con 5000
    
    adv_mode var byte
    adv_mode = 0
    
    adv_dir var byte
    adv_dir_up con 1
    adv_dir_down con 2
    adv_dir = adv_dir_up
    adv_count var word

' Motor

    motor_a con 1
    motor_b con 2
    motor var byte

    motor_dir_fwd con 1
    motor_dir_bck con 2
    motor_dir var byte

    step_delay con 30     

    direction var byte
    dir_up con 0
    dir_down con 1
    dir_none con 2
    
    temp var byte

    direction = dir_none
	    
' Sensor

    next_ok var byte
    next_ok = 1
    
    first_ok var byte
    first_ok = 1
    
    last_ok var byte
    last_ok = 1    
    
' Interrupt

    option_reg = $55
    intcon = $A0

    on interrupt goto INT
    enable interrupt

' Port

    adcon1 = 7

    trisa = %11111111
    trisb = %00000000
    trisc = %00000000
    trisd = %00000111

    porta = %00000000
    portb = %00000000
    portc = %00000000
    portd = %00000000

	if portd.0 = 1 then
		adv_mode = 1
		call display_adv
	endif
' Main
	call reset_map
start:
	call move_map
	call display_turn
	call advertisment
    goto start
    
'///////////////////////////////////////
    
    disable
    
display:
    digit1 = displayed / 10
    digit2 = displayed // 10

    digit1_old = digit1
    portb = digit(digit1)

    digit2_old = digit2
    portc = digit(digit2)

    return
    
display_turn:
	if turn = 1 then
		if turn_index mod 6 = 0 then
			    portb = %00100000
			    portc = %00100000
  		endif
		if turn_index mod 6 = 1 then
			    portb = %00010000
			    portc = %00010000
  		endif
		if turn_index mod 6 = 2 then
				portb = %00001000
			    portc = %00001000
  		endif
		if turn_index mod 6 = 3 then
				portb = %00000100
			    portc = %00000100
  		endif
		if turn_index mod 6 = 4 then
				portb = %00000010
			    portc = %00000010
  		endif
		if turn_index mod 6 = 5 then
				portb = %00000001
			    portc = %00000001
		endif
					
		if turn_index < 10 then
			turn_index = turn_index + 1
		else
			turn = 0
			turn_index = 0
			
			displayed = location
			call display

			if adv_mode = 1 then
				call display_adv
			endif
		endif
		
	endif
	return

display_adv:
	portb = %11110111
	portc = %11011110
	pause 3000
	call display
	return

keyboard:
	if target = location then
			if btn_up = 1 then
		 		if btn_up_ok = 1 then
		 			btn_up_ok = 0
		 			if displayed < limit then
		 				displayed = displayed + 1
					endif
				else
		 			btn_up_count = btn_up_count + 1
		 			if btn_up_count > btn_max_count then
		 				if displayed < limit then
		 					displayed = displayed + 1
						endif
		 				pause 100
		 			endif
		 		endif
			else
		 		btn_up_ok = 1
		 		btn_up_count = 0
			endif
		
			if btn_down = 1 then
		 		if btn_down_ok = 1 then
		 			btn_down_ok = 0
		 			if displayed > 1 then
			 			displayed = displayed - 1
		 			endif
				else
		 			btn_down_count = btn_down_count + 1
		 			if btn_down_count > btn_max_count then
		 				if displayed > 1 then
					 		displayed = displayed - 1
			 				pause 100
				 		endif
		 			endif
		 		endif
			else
		 		btn_down_ok = 1
		 		btn_down_count = 0
			endif
		
			if btn_go = 1 then
		 		if btn_go_ok = 1 then
		 			btn_go_ok = 0
		 			
					turn = 1
					target = displayed
		 		endif
			else
		 		btn_go_ok = 1
			endif
	else
				                                
	endif
	return

'/// Motor Functions ////////////////////////    
    
start_motor:
    select case motor
        case motor_a
            select case motor_dir
                case motor_dir_fwd
                    high PORTD.4
                case motor_dir_bck
                    low PORTD.4
            end select
        
            high PORTD.3
        case motor_b
            select case motor_dir
                case motor_dir_fwd
                    high PORTD.6
                case motor_dir_bck
                    low PORTD.6
            end select

            high PORTD.5
    end select
    return
    
'///////////////////////////////////////

stop_motor:
    select case motor
        case motor_a
            low PORTD.3
        case motor_b
            low PORTD.5
    end select
    return

'///////////////////////////////////////

step_down:
    motor_dir = motor_dir_fwd

    motor = motor_a
    call start_motor
    motor = motor_b
    call start_motor

    pause step_delay 
    
    motor = motor_a
    call stop_motor

    pause step_delay / 2

    motor = motor_b
    call stop_motor
    return

'//////////////////////////////////////////

step_up:
    motor_dir = motor_dir_bck

    motor = motor_a
    call start_motor
    motor = motor_b
    call start_motor

    pause step_delay / 2

    motor = motor_b
    call stop_motor

    pause step_delay

    motor = motor_a
    call stop_motor

    return

'/// Map Functions ///////////////////////////////////////

move_map:
    if location < target then
        direction = dir_down
    endif
    
    if location > target then
        direction = dir_up
    endif
    
    if location = target then
        direction = dir_none
    endif
    
    select case direction
        case dir_up
            call step_up
        case dir_down
            call step_down
        case dir_none
            motor = motor_a
            call stop_motor
            motor = motor_b
            call stop_motor
    end select
        
    return
    
move_temp:
    select case direction
        case dir_up
            call step_up
        case dir_down
            call step_down
        case dir_none
            motor = motor_a
            call stop_motor
            motor = motor_b
            call stop_motor
    end select
    
    return

reset_map:    
    displayed = 0
    call display

    if portd.2 = 1 then
        if porta.1 = 0 then
            direction = dir_down
            while porta.1 = 0        
                call move_temp
            wend
        endif
    else    
        if porta.1 = 0 then
            direction = dir_up
            while porta.1 = 0        
                call move_temp
            wend
        endif
    endif
    
    while portd.2 = 1
    wend
    
    displayed = 1
    call display

	target = 1
	location = 1

    return

'/// Sensor Check //////////////////////////////////

sensor_check:
    if porta.3 = 1 then
        if next_ok = 1 then
            select case direction
                case dir_up
                    location = location - 1
                case dir_down
                    location = location + 1
            end select
            turn = 1
            next_ok = 0
        endif
    else
        next_ok = 1
    endif

'İlk sayfa kontrolü
    if porta.1 = 1 then
        if first_ok = 1 then
            target = 1
            location = 1
            displayed = 1
            turn = 1
            direction = dir_none
            first_ok = 0
        endif
    else
        first_ok = 1
    endif

'son sayfa kontrolü
    if porta.2 = 1 then
        if last_ok = 1 then
            limit = location
            target = location
            displayed = location
            turn = 1
            direction = dir_none
            last_ok = 0
        endif
    else
        last_ok = 1
    endif

    return

'/// Advertisment ////////////////////////

advertisment:
	if adv_mode = 1 then
	adv_count = adv_count + 1
	if adv_count > adv_max_count then
		adv_count = 0
		
		select case adv_dir
			case adv_dir_up
				if target + 1 = 7 then
					target = 5
					adv_dir = adv_dir_down
				else
					target = target + 1
				endif
			case adv_dir_down
				if target - 1 = 0 then
					target = 2
					adv_dir = adv_dir_up
				else
					target = target - 1
				endif
		end select
	endif
	endif
	
	return
				
    
'/// Interrupt ///////////////////////////

int:
   	if location = target then
		call display
	endif
	
	if adv_mode = 0 then
		call keyboard
	endif
    call sensor_check
    
	resume
    enable    
    
'///////////////////////////////////////////


    

f1varol

kodlar açıklama için epey uzun farkındayım, anlayışınıza sığınarak böle bi şey istedim zaten, zaman ayırırsanız sevinirim. Tümünü tek bir arkadaşın açıklama satırı eklemesi bunaltabilir, farkındayım o nedenle herkes sıkıldığı yere kadar artık :D

Ziya

/// Advertisment //////////////////////// karşılığı /// Reklam ////////////////////,
else karşılığı değilse,
case karşılığı durum, çanta,
then karşılığı sonra,....

Lise yıllarımda (20 yıldan fazla oldu) şöyle bir söz duymuştum: "madem yüzme bilmiyorsun, niçin çıktın kavağa,..." hala *tam olarak* bu sözü doğrulayacak özgün bir örneğe rastlayamadım.
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

OG

ETE' nin bilinen ders notları hızlı bir şekilde yardımcı olacaktır.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mech

önce programın ne işe yaradığını anlatibilirsen bu daha kolay olur sanırım.
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Şarttır