Всем доброго дня! Изучаю передачу данных по USART между МК с помощью исходников sasha_1973(огромное спасибо!)Написал небольшие программы для передатчика и приемника на Atmega8 . Симулирую на Proteus - никакого результата. Направьте на правильный путь
Передатчик:
$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 32 $framesize = 24 $baud = 9600 Dim Info As Byte Config Pind.1 = Output Config Pind.2 = Input Do Bitwait Pind.2 , Reset ' ждем пока состояния пина будет 0 Info = Pind.2 ' записываем в переменную Info Print Info ' передаем по USART Bitwait Pind.2 , Set Info = Pind.2 Print Info Loop
Приемник:
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 32
$framesize = 24
$baud = 9600
On Urxc Priem
On Utxc Peredacha
Enable Urxc 'Прерывание после окончания приёма данных по USART
Enable Utxc 'Прерывание после окончания приёма данных по USART
Enable Interrupts
Dim Var As Byte
Config Portb.0 = Output
Config Pind.0 = Input
Config Portb.4 = Output : Priem_okonchen Alias Portb.4
Do
If Priem_okonchen = 1 Then
Input Var
Reset Priem_okonchen
If Var = 1 Then Set Portb.0 : Print 55 '
If Var = 0 Then Reset Portb.0 : Print 66
End If
Loop
End
Priem:
Disable Urxc
Set Priem_okonchen
Return
Peredacha:
Enable Urxc
ReturnВ терминале(в Протеусе) выводится одновременно 55 и 66, т.е выполняются вот эти строки кода:
If Var = 1 Then Set Portb.0 : Print 55 '
If Var = 0 Then Reset Portb.0 : Print 66??
Файлы
Отредактировано Niya (2020-07-19 23:53:15)
