Страница 1 из 1

Вопрос по коду прошивки[работа с кнопкой]

Добавлено: Пт ноя 22, 2013 22:05:53
O'NeiLL
работаю с pic18f452, к нему подключён 4-х разрядный индикатор(подцеплен к PORTB и PORTC). После того как мк стартует на нём светиться 0. По нажатию кнопки(ножка RA0) загорается 1, ещё одно нажатие - 2-ечка. Работаю только 4-м разрядом. Ну принцип думаю ясен.

Моя прошивка:

Код: Выделить всё

#include <p18f252.h>

#pragma config WDT = OFF, WDTPS = 128, OSC = XT, PWRT = ON,LVP = OFF

void main (void){
  int i,j,k=0;
  unsigned char o=0;
  static int a[4];
  static int b[10] = {0b11000000, //0
                      0b11111001,//1
                      0b10100100,//2
                      0b10110000,//3
                      0b10011001,//4
                      0b10010010,//5
                      0b10000010,//6
                      0b11111000,//7
                      0b10000000,//8
                      0b10010000};//9
  TRISC = 0; 
  TRISB = 0;
  TRISA = 0;
  PORTC = 0;
  PORTB = 0b11000000;
  PORTC = 0b00010000;
  PORTA = 0b10111111;
  PORTA = 1; //на вход
  if (PORTA==0b10111111){
    for (i=0;i<255;i++){}
    k=k+1;
    if (k==10){
      k = 0;
    }     
  PORTB = b[k];
  }
}



По нажатию кнопки картинка на индикаторе не меняется, что я делаю не так?
Я ещё новичок в этом

Re: Вопрос по коду прошивки[работа с кнопкой]

Добавлено: Сб ноя 23, 2013 00:00:35
Аlex

Re: Вопрос по коду прошивки[работа с кнопкой]

Добавлено: Ср дек 25, 2013 08:32:23
WandererSc
Принцип то ясен, но работа с регистрами контроллера не правильная.

PIC это не AVR и регистры тут называются по другому.

регистр для вывода не PORTB , а LATB.
И ножку на вход надо переключать не "PORTA = 1;" а "TRISA = 0b10000000;"