Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибки в коде
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Makeda
Пишу программу для AT89S53. Выдает ошибки при использовании функций. В чем может быть проблема?

Код
#include <reg8253.h>

unsigned char Total;        
unsigned char Loops;        
bit TimerOK;                 


void main(void)  
               {
      
                    Timer0();
                 Delay();      
               }    
                        
void Timer0(void)
    {
    
    TCON=0x20;     //    Cleared to use timer 1 overflow as receive clock for serial port in mode 1 o
                 //  Set to use Timer 2 overflow as receive clock for serial port in mode 1 or 3.             
    TMOD=0x01;     // Timer enable up/down mode                                                          
    
    TL0=0;         // Low byte register Timer 0
    TH0=0;         // Hight byte register Timer 1                                                          
    
    TR0=1;       // run Timer 0
        
    }

void Delay(void)
      {
         unsigned char i;      
       for (i=0; i< 100;i++)
      
         {
             Loops++;        
         }                   
      }


Цитата
TIMER.C(12): warning C206: 'Timer0': missing function-prototype
TIMER.C(13): warning C206: 'Delay': missing function-prototype
TIMER.C(19): error C231: 'Timer0': redefinition
TIMER.C(31): error C231: 'Timer0': redefinition
TIMER.C(34): error C231: 'Delay': redefinition
TIMER.C(43): error C231: 'Delay': redefinition
kovigor
Цитата(Makeda @ Oct 1 2012, 16:35) *
void main(void)

void Timer0(void)

void Delay(void)

Функцию "main" разместите в тексте программы самой последней, а не самой первой. Компилятор обнаруживает в ней вызов первых двух функций, которых он прежде в тексте не встречал ...
mdmitry
Цитата(Makeda @ Oct 1 2012, 17:35) *
TIMER.C(12): warning C206: 'Timer0': missing function-prototype
TIMER.C(13): warning C206: 'Delay': missing function-prototype
TIMER.C(19): error C231: 'Timer0': redefinition
TIMER.C(31): error C231: 'Timer0': redefinition
TIMER.C(34): error C231: 'Delay': redefinition
TIMER.C(43): error C231: 'Delay': redefinition

Так внятно же написано, что нет прототипов функций Timer0 и Delay. Оформите код по стандарту. До первого вызова функции должен быть объявлен её прототип. Тем более , что функции могут быть реализованы в разных файлах проекта. Для этого часто используют заголовочные файлы. На форуме обсуждалось не раз.

Предложение уважаемого kovigor'а может не помочь для некоторых компиляторов (их настроек). Имеется в виду strict-prototypes, missing-prototypes.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.