Помогите разобраться в чем ошибка

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 2
Зарегистрирован: Вс апр 27, 2014 22:34:22

Сообщение Lopnoir »

Здравствуйте уважаемые спецы.Пишу прошивку для контроля за температурой в теплице. Но возникла заминка с созданием меню. Для начала решил попросту выводить числа на монитор при нажатии на кнопку-но прога почему то после первого нажатия начинает сама по себе считать.Помогите пожалуйста разобраться где косяк и как его исправить,котелок уже не варит.

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


#include <mega16.h>
#include <delay.h>
#asm
   .equ __w1_port=0x15 ;PORTC
   .equ __w1_bit=3
#endasm
#include <1wire.h>
#include <ds18b20.h>
#asm
   .equ __lcd_port=0x1B ;PORTA
#endasm
#include <lcd.h>
#include <stdio.h>
#include <stdlib.h> 


char lcd_buf[17];
;

void main(void)
{
float templcd;
int tempuart;
unsigned char i=0;
char t[3];
int m=0;
lcd_init(16);
w1_init();
ds18b20_init(0,-20,50,DS18B20_12BIT_RES);

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
PINB=0x00;
DDRB=0x00;
lcd_putsf("Loading");
while(1)
{
delay_ms(500);
i++;
lcd_gotoxy(i-1,1);
lcd_putchar(0xff);
if(i==16){break;}
};       
while (1)
      {
      if (PINB.0==1){
                delay_ms(1000);
                if (PINB.0==1){
                m=m+1;
                }
        };
      templcd=ds18b20_temperature(0);
      tempuart=ds18b20_temperature(0);
      sprintf(lcd_buf,"t=%.1f\xdfC",templcd);
      if(tempuart>1000)
        {
        tempuart=4096-tempuart;
        tempuart=-tempuart;
        }
      printf("%X",tempuart);  
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_puts(lcd_buf);
      // тест меню
      lcd_gotoxy(0,1);
      lcd_putsf("punkt=");
      itoa (m, t);
      lcd_gotoxy(6,1);
      lcd_puts(t);
      // тест меню
      delay_ms(1000); 
      };
}    
Вложения
Прога.zip
(111.33 КБ) 129 скачиваний
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

кнопка как подключена?
Ставим плюсы: )
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков

Сообщение Dr. Alex »

Написанно немного похабно.... Хотя-бы комменты оставлял, а то пойми, где там кнопка.... :kill:
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Контактная информация:
Родился
Сообщения: 2
Зарегистрирован: Вс апр 27, 2014 22:34:22

Сообщение Lopnoir »

Всем спасибо, проблему уже решил=)
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «AVR»