'----------------------- Конфигурация контроллера ----------------------------
$map ' Получаем карту распределения памяти компилятором Bascom
$regfile = "m328pdef.dat" ' Используемый контроллер, документация производителя - http://www.atmel.com/Images/Atmel-2549- … asheet.pdf
$crystal = 1000000 ' 1 МГц, частота для расчета временных задержек компилятором, должна соответствовать запрограммированым фьюзам МК
$framesize = 64 ' Размер области используемой и необходимой для преобразований
$hwstack = 64 ' Размер аппаратного стека
$swstack = 64 ' Размер программного стека
'----------------------- Конфигурация USART ----------------------------------
$baud = 4800 ' Скорость трансляции
Config Com1 = Baud , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Ucsr0a.1 = 1 ' Baud = Baud * 2
'----------------------- Конфигурация MCP330x --------------------------------
Pin_din_mcp320x Alias 4
Port_din_mcp320x Alias Pinb
Din_mcp320x Alias Pinb.4 : Config Din_mcp320x = Input
Cs_mcp320x Alias Portb.2 : Config Cs_mcp320x = Output : Cs_mcp320x = 1
Sck_mcp320x Alias Portb.5 : Config Sck_mcp320x = Output : Reset Sck_mcp320x
'--------------- Используемые переменные, для работы с MCP330x ----------------
Dim A_mcp320x As Byte
Dim Сигнатура_mcp320x As Byte
Dim Данные_mcp320x_word As Word
'===============================================================================
Главный_цикл:
'===============================================================================
Gosub Ацп_mcp320x
Print Данные_mcp320x_word
Waitms 500
'===============================================================================
Goto Главный_цикл
End
'===============================================================================
'===============================================================================
Ацп_mcp320x:
'-------------------------------------------------------------------------------
Sck_mcp320x = 0
Cs_mcp320x = 0
Sck_mcp320x = 1
Sck_mcp320x = 0
Sck_mcp320x = 1
Sck_mcp320x = 0
'Принимаем старший байт
!clr R16
!ldi R17 , 4
Чтение_mcp320x_high:
Sck_mcp320x = 1
Sck_mcp320x = 0
!SBIC Port_din_mcp320x , Pin_din_mcp320x
!SET
!sBIs Port_din_mcp320x , Pin_din_mcp320x
!clt
!BLD R16 , 0
!mov R27 , R16
!LSl R16
!dec R17
!brne Чтение_mcp320x_high
'Принимаем младший байт
!clr R16
!ldi R17 , 8
Чтение_mcp320x_low:
Sck_mcp320x = 1
Sck_mcp320x = 0
!SBIC Port_din_mcp320x , Pin_din_mcp320x
!SET
!sBIs Port_din_mcp320x , Pin_din_mcp320x
!clt
!BLD R16 , 0
!mov R26 , R16
!LSl R16
!dec R17
!brne Чтение_mcp320x_low
'Забираем, что намеряли
!sts {Данные_mcp320x_word} , R26
!sts {Данные_mcp320x_word + 1} , R27
Cs_mcp320x = 1
'-------------------------------------------------------------------------------
Return
'===============================================================================