Цитата
Код
TRISB = 0b00000001;
RB4 = RB7;
Попробуйте догадаться, что здесь выглядит странновато.
исходя из нижеизложенного — "прочитать состояние RB7 и установить RB4 в такую же позу" - с диода на кнопку. Действительно, странновато. Спасибо за подсказку.
Цитата
Мил человек, думаете, я от скуки спрашивал, как у Вас кнопка включена? По исходной программе можно было предположить, что кнопка висит между Gnd и пином "knopka", и это при "RBPU = 0;" и кнопке на RBx совершенно нормально и работоспособно.
Кроме того, я полагал, что Вы догадывались, что "RBPU = 0;" включает внутренние подтяжки по пинам PORTB к Vcc. Но, судя по ..., я опять ошибся.
Т.е. если в линию порта ничего не записывать, там через подтягивающий резистор установится ВЛУ? (1)?
А потом кнопкой можно замкнуть на GND. Полученное изменение должно быть передано на RB4.
Или с инверсией (мое предположение):
Код
RB4 = !RB7;
Цитата
Когда гадать надоест, почитайте ДШ что ли.
Вот про подключение кнопок там нет.
Попробовал:
Код
#include <pic.h>
void podgot (void)
{
ADCON1 = 0x07;
TRISB = 0b00000001;
TRISA = 0b11111111;
PORTA = 0;
// PORTB = 0;
RBPU = 0;
}
void main (void)
{
podgot();
while(1)
{
RB4 = RB7;
}
}
Hа RB7 НЛУ. При подаче него VCC загорается светодиод с RB4 на GND. При закорачивании RB7 на GND, на RB4 тоже появляется НЛУ.
И как подключить кнопку к RB7, чтобы при нажатии и отпускании на RB4 были изменения?
Вот ассемблерный листинг:
Код
1: #include <pic.h>
2:
3:
4:
5: void podgot (void)
6: {
7: ADCON1 = 0x07;
7F2 3007 MOVLW 0x7
7F3 1683 BSF 0x3, 0x5
7F4 1303 BCF 0x3, 0x6
7F5 009F MOVWF 0x1f
8: TRISB = 0b00000001;
7F6 3001 MOVLW 0x1
7F7 0086 MOVWF 0x6
9: TRISA = 0b11111111;
7F8 30FF MOVLW 0xff
7F9 0085 MOVWF 0x5
10: PORTA = 0;
7FA 1283 BCF 0x3, 0x5
7FB 0185 CLRF 0x5
11:
12: RBPU = 0;
7FC 1683 BSF 0x3, 0x5
7FD 1381 BCF 0x1, 0x7
13: }
7FE 1283 BCF 0x3, 0x5
14:
15: void main (void)
16: {
17: podgot();
7E9 27F2 CALL 0x7f2
18: while(1)
7F1 2FEA GOTO 0x7ea
19: {
20: RB4 = RB7;
7EA 1283 BCF 0x3, 0x5