$regfile = "m48pdef.dat" $crystal = 1000000 Prr = &B11101010 Config Adc = Single , Prescaler = Auto , Reference = Internal 'конфигурация АЦП Config Portd.4 = Output : U_24l01 Alias Portd.4 : Set U_24l01 Config Portb.1 = Output : U_term Alias Portb.1 : Set U_term 'Заявить отдельные подпрограммы Declare Sub R_register(byval Command As Byte , Byval C_bytes As Byte) Declare Sub W_register(byval C_bytes As Byte) Declare Sub Tx(byval D1 As Byte , Byval D2 As Byte , Byval D3 As Byte , Byval D4 As Byte , Byval D5 As Byte) 'SPI (nRF24L01) команды Const Write_reg = &H20 'Определить Команду Записи В Реестр Const Rd_rx_pload = &H61 'Define Rx Полезной Нагрузки Адрес Регистра Const Wr_tx_pload = &HA0 'Определить Tx Полезной Нагрузки Адрес Регистра Const Flush_tx = &HE1 'Определить Флеш Tx Зарегистрировать Команду 'SPI (nRF24L01) регистры (адреса) Const Config_nrf = &H00 'Config адрес регистра Const En_aa = &H01 'Включить Автоматическое Подтверждение регистрации адрес Const En_rxaddr = &H02 'Включено Rx адреса " адрес регистра" Const Rf_ch = &H05 'RF channel' адрес регистра Const Rf_setup = &H06 'РФ Setup " (Настройка) адрес регистра" Const Status = &H07 'Статус " адрес регистра" Const Rx_addr_p0 = &H0A 'rx адрес Pipe0 " зарегистрировать адрес" Const Tx_addr = &H10 'TX address (адрес) Const Rx_pw_p0 = &H11 'rx полезной нагрузки ширина , Pipe0 " зарегистрировать адрес" Const Fifo_status = &H17 'fifo - Регистр Состояния " регистрация адреса" Dim D_bytes(6) As Byte , B_bytes(5) As Byte Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 1 'Программное обеспечение SPI НЕ работает с nRF24L01, используйте оборудование SPI только, но эсэсовцы pin-код должен управляться нашей функцией Config Portd.3 = Output : Ss Alias Portd.3 'CE pin is output Config Portb.2 = Output : Ce Alias Portb.2 'SS pin is output Config Pind.2 = Input : Irq Alias Pind.2 'IRQ pin is input 'подключение светодиодов индикации Config Portd.0 = Output : Led Alias Portd.0 'Подключена ножка IRQ и подтянута 10 КОм к (+) 'Config Int0 = Falling 'On Watchdog Res 'Enable Interrupts 'Enable Int0 'Enable Watchdog Spiinit Dim N_d As Byte , R As Word Dim Temp As Byte , W As Word Dim Packet_count As Byte Dim Term As Word , Term_t As Word , T As Byte , Term_st As Byte , Term_ml As Byte N_d = 1 Gosub Setup_rx 'Включаем на приём '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'Основной цикл ' ' Do If Pind.2 = 0 Then 'Ждёт приёма 'Set Led Waitms 2 ''''''''''''''''''''''''''''' Call R_register(rd_rx_pload , 5) 'Читать 5 байт RX pload регистрации For T = 1 To 100 'Цикл измерения температуры Term = Getadc(3) Term_t = Term_t + Term Next Term = Term_t / 93 Term_t = Term / 10 Reset U_term Term_st = Term_t Term_t = Term Mod 10 Term_ml = Term_t Call Tx(1 , Term_st , Term_ml , 4 , 5) 'Передаём температуру на приёмник ' ' ''''''''''''''''''''''''''''''' 'Set nRF20L01 в режиме приема Config Watchdog = 8192 Start Watchdog Reset U_24l01 'Reset Led Powerdown 'Спящий режим End If Loop 'Sub подпрограмм Sub W_register(byval C_bytes As Byte) 'Пишите зарегистрировать с SPI Reset Ss 'Руководство управления СС контакт, установить СС низких до смещение, байт Spiout D_bytes(1) , C_bytes 'Shiftout байты данных SPI корыта, C_bytes это количество байт, которые будут написаны Set Ss 'Set СС высокого End Sub Sub R_register(byval Command As Byte , Byval C_bytes As Byte) As Byte 'C_bytes = Count_bytes, номер off байт для чтения Reset Ss 'Ручное управление СС контакт, установить на низком уровне до переход в/из байт Spiout Command , 1 'Первый shiftout в реестр, который будет читать Spiin B_bytes(1) , C_bytes 'Прочитал назад байты из SPI направлять по nRF24L01 Set Ss 'Установить СС обратно на высоком уровне End Sub $include "setup_tx.bas" $include "Setup_rx.bas" 'Res: 'Incr R 'If R < 200 Then Powerdown 'Return