roboforum.ruТехнический форум по робототехнике. |
|
|
но значения больше 32767 не лезут
#include <stdlib.h>
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
char iii[14];
unsigned long int kod_s_klavy=0;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
}
void sbros(void) {
lcd_clear();
kod_s_klavy=0;
}
void kontrol(void) {
if (kod_s_klavy==55555) {
// все ОК
lcd_clear(); lcd_putsf(" Door Open "); kod_s_klavy=0; delay_ms(2000); lcd_clear(); lcd_putsf(" Door Close "); delay_ms(2000); lcd_clear(); }
else {
// ругаемся динамиком, считаем ошибки
kod_s_klavy=0; lcd_gotoxy(0,0); lcd_putsf("error :)"); delay_ms(2000); lcd_clear(); }; }
void knopki(void) { // PINC.2-5 PIND.0-7
lcd_gotoxy(0,1);
itoa(kod_s_klavy,iii);
lcd_puts(iii);
//if (PINC.1==0) {eeprom_kode=kod_s_klavy; kode=kod_s_klavy; lcd_clear(); kod_s_klavy=0;}; while (PINC.1==0) {};
if (PINC.2==0) {kod_s_klavy=kod_s_klavy*10+1;}; while (PINC.2==0) {};
if (PINC.3==0) {kod_s_klavy=kod_s_klavy*10+2;}; while (PINC.3==0) {};
if (PINC.4==0) {kod_s_klavy=kod_s_klavy*10+3;}; while (PINC.4==0) {};
if (PINC.5==0) {kod_s_klavy=kod_s_klavy*10+4;}; while (PINC.5==0) {};
if (PIND.0==0) {kod_s_klavy=kod_s_klavy*10+5;}; while (PIND.0==0) {};
if (PIND.1==0) {kod_s_klavy=kod_s_klavy*10+6;}; while (PIND.1==0) {};
if (PIND.2==0) {kod_s_klavy=kod_s_klavy*10+7;}; while (PIND.2==0) {};
if (PIND.3==0) {kod_s_klavy=kod_s_klavy*10+8;}; while (PIND.3==0) {};
if (PIND.4==0) {kod_s_klavy=kod_s_klavy*10+9;}; while (PIND.4==0) {};
if (PIND.5==0) {kod_s_klavy=kod_s_klavy*10;}; while (PIND.5==0) {};
if (PIND.6==0) {sbros(); }; while (PIND.6==0) {};
if (PIND.7==0) {kontrol(); }; while (PIND.7==0) {};
} // конец обработки нажатия кнопки
void main(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0x7F;
DDRC=0x01;
PORTD=0xFF;
DDRD=0x00;
TCCR0=0x05;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x01;
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
lcd_init(16);
lcd_putsf("****************");
while (1)
{ knopki() ; };
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.4 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 12.09.2009
Author :
Company :
Comments:
Chip type : ATmega8
Program type : Application
Clock frequency : 1,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
}
itoa(kod_s_klavy,iii);
Sun-dey писал(а):ВСЕ В ПРОТЕУСЕ
объявлена так: unsigned long int kod_s_klavy=0;
компилируется получается как : int kod_s_klavy=0;
Что за хрень?
Добавлю и свой БК для инжектора, я на нем C изучал
vvk74 писал(а):надо оставить unsigned long kod_s_klavy=0;
т.е int убрать
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20