Prosba - monostabilni obvod s MCU (VYRESENO)

Jirka zaloha na volny.cz
Pondělí Září 3 21:27:45 CEST 2012


Tak se musím pochlubit, už mi to  i pípá:

************************************************************************
'-----------------------------------------------------------------------
' casovy spinac 30 min., inspirace http://www.bittnar.info/cz/casovy-spinac/
' zmeny: zkraceni casu, inverze vystupu, odstraneni konfig. vstupu a jejich
' zmena na vystupy, pridani pipnuti po skonceni casu
' program funguje i v PIC12C509A nebo PIC12F509
'-----------------------------------------------------------------------
'
'         Vcc -|  U  |- Vss
'   green LED -|     |-
'     red LED -|     |- zvuk
' rezim/start -|     |- vystup

DEVICE 12C508
XTAL = 4
config WDT_OFF, MCLRE_OFF, CP_OFF, INTRC_OSC
set_osccal	 		' nastaveni kalibrace oscilatoru
	
Dim cas As Word			' deklarace promennych
Dim i As Word
Dim j As Word
Dim auto As Bit
Symbol snd = GPIO.1		' vystup zvuku
Symbol out = GPIO.2		' casovy vystup (L je aktivni uroven)
Symbol in = GPIO.3		' start tlacitko (pri manual)
Symbol red = GPIO.4		' H rozsviti cervenou LED (menic bezi)
Symbol green = GPIO.5		' H rozsviti zelenou LED (napajeni)

	option_reg.6 = 0	' povoleni pull-up
	option_reg.5 = 0	' pin 5 jako GP2
	trisio = %00001001	' nastaveni portu (vstupy / vystupy)
	out = 1			' cas. vystup do H (vypnuti menice)
	snd = 0                 ' zvuk do 0
	red = 0                 ' zhasnuti cervene LED
     green = 1                   ' rozsviceni zelene LED
     auto = 0			
     if in = 0 then auto = 1	' zjisteni rezimu s nastavenim priznaku

main:
     If auto = 0 Then If in = 1 then Goto main	' cek. na start
     out = 0
     red = 1
     green = 0	  	   	' cas. vystup do L (zapnuti menice)
     cas = 1800            	' 30 min. (1800 sec.)
     For i = 1 To cas        ' smycka generujici dobu sepnuti
     delayMs 1000   	    			
     Next i
     For j = 1 to 5000       ' smycka generujici 2kHz po dobu 5 sec.
     snd = 1
     DelayUs 250
     snd = 0
     DelayUs 250
     Next j
     snd = 0
     red = 0                      ' zhasnuti cervene LED
     green = 1                    ' rozsviceni zelene LED
     out = 1	   		 ' cas. vystup do H (vypnuti menice)

konec:
	If auto = 1 Then Goto konec	' konec (pri automat.),
	Goto main 		 	' jinak opakovat znovu	
************************************************************************

největší porod byl s pochopením funkce trisio, tedy hlavně s fcí 
jednotlivých bitů, není to pořádně popsáno prakticky nikde...

---
Jirka


Další informace o konferenci Hw-list