Показать сообщение отдельно
Старый 13.11.2010, 22:33   #633   
Форумец
 
Аватар для Butik
 
Сообщений: 36
Регистрация: 19.10.2010
Возраст: 59

Butik вне форума Не в сети
... ну в принципе согласен.... аргументы у Вас коллега железные...
Вот сейчас и проверим... в смысле напишется теги как надо или нет...)))
Вот вопросик возник... Я еще не совсем силен в СИ - вот как например написать на СИ подобный фрагмент на ассемблере- программа в зависимости от изменения уровня на входе контроллера переключает другой вывод на режим входа или выхода- выставляет в 1 вывод при работе как выход(например заряд емкости) или читает его состояние при работе как вход...В принципе алгоритм не имеет почти никакого практического значения но может быть использован как фрагмент программы например примитивного АЦП без претензий на большую точность или для построения простейших девайсов где необходим аналоговый ввод...


Код:
list      p=12f629           
    #include <p12f629.inc>        

    errorlevel  -302             

    __CONFIG   _CP_OFF & _CPD_OFF & _BODEN_ON & _MCLRE_OFF & _WDT_OFF& _PWRTE_ON & _INTRC_OSC_NOCLKOUT  

;***** VARIABLE DEFINITIONS
    
 cblock 0x20
    Toggler   
 endc
;**********************************************************************
        ORG     0x000             ; processor reset vector
        goto    main              ; go to beginning of program

;***********************************************************************
  main
;начальная инициализация
        movf   GPIO,f
        movlw  0x07
        movwf  CMCON      
        bsf    STATUS,RP0   
        movlw  b'00101011'
        movwf  TRISIO
        movlw  b'10000101'
        movwf OPTION_REG
        bcf   STATUS,RP0       
        movlw    0x20    
         movwf    Toggler             
 ;-----------------------------------------------------------
       
 Loop
    movf    GPIO,w            
    andlw    0x20
    xorwf    Toggler,w    
    btfss    STATUS,Z
    goto    Loop        
    clrf TMR0        
    movlw    0x20    
    xorwf    Toggler,f
    btfss    Toggler,5    
    goto    Loop1       
    btfsc    Toggler,5    
    goto    Loop2    
    goto    Loop

;-------------------------------------------------
  Loop1
        nop
        bsf STATUS,RP0
        movlw b'00101001'
        movwf TRISIO
        bcf STATUS,RP0
        bsf GPIO,1
        goto Loop
;------------------------------------------------------------
  Loop2
        nop
        movf GPIO,f 
        bcf GPIO,1         
        bsf STATUS,RP0
        movlw b'00101011'   
        movwf TRISIO
        bcf STATUS,RP0
        goto Loop
;------------------------------------------------------------
        END   ; directive 'end of program'

Последний раз редактировалось Butik; 13.11.2010 в 23:18.
  Ответить с цитированием