pyzh_man писал(а):racushka, все, что пишет clawham, верно, но оно вам не надо.
Это хорошо, что не надо, потому что я ничего не поняла...
pyzh_man писал(а):Берете три провода.
Вообще проводов нет... Только шлейфы...
Поэтому шлейфом и собиралась подключать.
Там на каждом порту есть земля, это значит что дополнительно землю подключать не нужно?
pyzh_man писал(а):И программку дайте(отсылательную), ведь чтобы принимать, надо знать как.
Код: Выделить всё
.include "m16def.inc"
.def Temp = r24 ; регистр для хранения временных данных
.def cntB = r23 ; счетчик бит
.def Temp1 = r25
.def Temp2 = r26
.def al= r27
.def bl= r28
; Инициализация
ser Temp ; в Temp записываем 0xff
out DDRA,Temp ; PORTA настраиваем на выход
out DDRB,Temp ; PORTB настраиваем на выход
out DDRC,Temp ; PORTC настраиваем на выход
clr Temp ; в Temp записываем 0х00
out DDRD,Temp ; PORTD настраиваем на вход
cbr Temp2,0x80
sbr Temp2,0x40
ldi al, 0b01000000
ldi bl, 0b10000000
; шина USB в состоянии покоя
ini:
sbr Temp2, 0x20
out portc,Temp2
clr Temp ; очищаем временные переменные
cbr Temp2, 0x20
out portc, Temp2
; Тест ввода-вывода
LOOP:
sbis PIND,0 ; проверяем состояние ключа 1
cbr Temp,0x1 ; ключ нажат, зажигаем светодиод 1
sbic PIND,0 ; нет, гасим
sbr Temp,0x1
sbis PIND,1 ; проверяем состояние ключа 2
cbr Temp,0x2 ; ключ нажат, зажигаем светодиод 2
sbic PIND,1 ; нет, гасим
sbr Temp,0x2
sbis PIND,2 ; проверяем состояние ключа 3
cbr Temp,0x4 ; ключ нажат, зажигаем светодиод 3
sbic PIND,2 ; нет, гасим
sbr Temp,0x4
sbis PIND,3 ; проверяем состояние ключа 4
cbr Temp,0x8 ; ключ нажат, зажигаем светодиод 4
sbic PIND,3 ; нет, гасим
sbr Temp,0x8
sbis PIND,4 ; проверяем состояние ключа 5
cbr Temp,0x10 ; ключ нажат, зажигаем светодиод 5
sbic PIND,4 ; нет, гасим
sbr Temp,0x10
sbis PIND,5 ; проверяем состояние ключа 6
cbr Temp,0x20 ; ключ нажат, зажигаем светодиод 6
sbic PIND,5 ; нет, гасим
sbr Temp,0x20
sbis PIND,6 ; проверяем состояние ключа 7
cbr Temp,0x40 ; ключ нажат, зажигаем светодиод 7
sbic PIND,6 ; нет, гасим
sbr Temp,0x40
sbis PIND,7 ; проверяем состояние ключа 8
cbr Temp,0x80 ; ключ нажат, зажигаем светодиод 8
sbic PIND,7 ; нет, гасим
sbr Temp,0x80
out PORTA,Temp ; выводим состояние ключей в PORTA
out PORTB,Temp ; выводим информацию о состоянии ключей на светодиоды
// ldi Temp,0b10010001
; процедура вывода байта по USB
usb_out_byte:
ldi cntB,0x08 ; загружаем счетчик битов
c1:
sbrs Temp, 7
rjmp lw
rjmp hh
;out portc, al;low
;sbrc Temp, 7
;rjmp hh
;out portc,bl;high
// brne out_low
lw:
out portc, al
nop
lsl Temp ; сдвигаем на бит влево
dec cntB ; уменьшаем счетчик битов
brne c1 ; проверяем на конец цикла
rjmp strob
hh:
out portc, bl
nop
nop
lsl Temp ; сдвигаем на бит влево
dec cntB ; уменьшаем счетчик битов
brne c1 ; проверяем на конец цикла
rjmp strob
strob:
ldi Temp1, 0b00000000
out portc, Temp1 ; строб EOP
nop
nop
nop
nop
nop
nop
nop
rjmp ini