... ну в принципе согласен.... аргументы у Вас коллега железные...
Вот сейчас и проверим... в смысле напишется теги как надо или нет...)))
Вот вопросик возник... Я еще не совсем силен в СИ - вот как например написать на СИ подобный фрагмент на ассемблере- программа в зависимости от изменения уровня на входе контроллера переключает другой вывод на режим входа или выхода- выставляет в 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'