Created
October 27, 2014 20:41
-
-
Save rafalw/c1231c0154dd6069baa8 to your computer and use it in GitHub Desktop.
Przerzutnik JK & demo I2C - przykład "wielozadaniowości"
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
' Część 1: | |
' Licznik binarny - demonstracja prostej obsługi magistrali I2C. | |
' - element master - MCU | |
' - element slave - PCF8574AP (ekspander magistrali I2C) | |
' Sterowanie LED-ami (zwrócić uwagę na prawidłowy sposób zasilania LED-ów przez PCD8574AP) | |
' Część 2: | |
' Przerzutnik JK katywny zboczem narastającym - emulacja sprzętowa na mikrokontrolerze ATtiny2313 | |
' Portb.1 - wyjście Q | |
' Portd.4 - wejście J | |
' Portd.5 - wejście K | |
' Sygnał zegarowy - przerwanie wewnętrzne od timera 1 (częstotliwość: 0,5Hz) | |
' Uwaga: do portów D4 i D5 podłączono przyciski zwierające do masy, w związku z czym naciśnięcie, rozumiane przez | |
' użytkownika jako jedynka logiczna, z punktu widzenia mikrokontrolera jest zerem logicznym (patrz: kod podprogramu | |
' obsługi przerwania). | |
$regfile = "attiny2313.dat" | |
$Crystal=4000000 | |
$hwstack=40 | |
$swstack=16 | |
$framesize=32 | |
' Adres do zapisu ekspandera I2C | |
Const Addr_0 = &B01110000 | |
' Konfiguracja pinów magistrali I2C | |
Config Scl = Portb.7 | |
Config Sda = Portb.5 | |
Config Pinb.1 = Output | |
Portb.1 = 0 | |
' LED kontrolna (wizualizacja taktowania) | |
Config Pinb.0 = Output | |
Portb.0 = 1 | |
Config Pind.4 = Input | |
Portd.4 = 1 | |
Config Pind.5 = Input | |
Portd.5 = 1 | |
Config Timer1 = Timer , Prescale = 64 | |
On Timer1 Przerzutnik | |
Enable Interrupts | |
Enable Timer1 | |
Dim I As Byte | |
I = 255 | |
Do | |
' Wariant 1 - prostszy, możliwy tylkow szczególnych przypadkach - jak ten! | |
' I2csend Addr_0 , I | |
' Wariant drugi, stosowany przy bardziej skomplikowanych układach | |
I2cstart | |
I2cwbyte Addr_0 | |
I2cwbyte I | |
I2cstop | |
Decr I | |
Waitms 100 | |
Loop | |
End | |
Przerzutnik: | |
Toggle Portb.0 | |
If Portb.0 = 1 Then | |
' Przerzutnik aktywny zboczem narastającym | |
If Pind.4 <> Pind.5 Then | |
Portb.1 = Not Pind.4 | |
End If | |
If Pind.4 = 0 And Pind.5 = 0 Then | |
Toggle Portb.1 | |
End If | |
End If | |
Return |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment