标题: 单片机C语言 为什么Usartfiguration重复定义怎么修改? [打印本页]

作者: 2979181478    时间: 2023-4-11 10:56
标题: 单片机C语言 为什么Usartfiguration重复定义怎么修改?
#include <REGX52.H>
#include "LCD1602.h"
#include "DS18B20.h"
#include "Delay.h"
#include "Timer0.h"

float T;

void main()
{
        UsartConfiguration();        
        Timer0_Init();
        DS18B20_ConvertT();                //上电先转换一次温度,防止第一次读数据错误
        Delay(1000);                        //等待转换完成
        LCD_Init();
        LCD_ShowString(1,1,"Temperature:");
        P1_0=0;
        while(1)
        {
                DS18B20_ConvertT();        //转换温度
                T=DS18B20_ReadT();        //读取温度
                if(T<0)                                //如果温度小于0
                {
                        LCD_ShowChar(2,1,'-');        //显示负号
                        T=-T;                        //将温度变为正数
                }
                else                                //如果温度大于等于0
                {
                        LCD_ShowChar(2,1,'+');        //显示正号
                }
                LCD_ShowNum(2,2,T,3);                //显示温度整数部分
                LCD_ShowChar(2,5,'.');                //显示小数点
                LCD_ShowNum(2,6,(unsigned long)(T*10000)%10000,4);//显示温度小数部分
                if(T>=24)
                {P1_0=1;
                }
                else
                        P1_0=0;
        }
}

sbit Motor=P1^0;
unsigned char Counter,Compare;        //???????,????PWM
unsigned char KeyNum,Speed;
void forward()
{
                Compare=0 ;
}

void back()
{
        Compare=50       ;        
}

void left()
{
        Compare=100;
}


void Com_Int(void) interrupt 4
{
        unsigned char receive_data;        
        EA = 0;
        if(RI == 1)
        {
                RI=0;
                receive_data = SBUF;
                switch(receive_data)
                {
                        case ('1'):
                                forward();break;
                        case ('2'):
                                back();break;
                        case ('3'):
                                left();break;

                }                        
        }               
                EA = 1;
}

void UsartConfiguration()
{        
        SCON=0X50;        //SCON ??????????,???????????????/????????????               
        TMOD=0X20;                        
        PCON=0X00;               
        TH1=0Xfd;                    
        TL1=0Xfd; //????9600????fd
        TR1= 1;                                       
        ES = 1;        
            EA = 1;  
   PS=1;        
}




void Timer0_Routine() interrupt 1
{
        TL0 = 0x9C;                //??????
        TH0 = 0xFF;                //??????
        Counter++;
        Counter%=100;        //??????????0~99
        if(Counter<Compare)        //????????
        {
                Motor=1;                //??1
        }
        else                                //????????
        {
                Motor=0;                //??0
        }
}


作者: lkc8210    时间: 2023-4-11 11:25
太多头文档了
把整个keil项目打包上来吧
作者: li64331218    时间: 2023-4-11 13:03
不懂,看不明白,想问什么
作者: 暖西夏    时间: 2023-4-11 14:51
猜测你应该是void UsartConfiguration()  报错了,把UsartConfiguration()这个函数定义放在main函数前面,要不在main函数前面先用static定义一下这个函数,试下能不能解决
作者: 2979181478    时间: 2023-4-11 15:20
是这个函数报错了
作者: Hephaestus    时间: 2023-4-11 15:34
具体错误贴出来,更像是UsartConfiguration()没有原型声明。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1