問題:編譯后給了四個警告,上網查說是型別不匹配造成的,但是自己定義的這些函式型別都是一樣的呀,完全不知道是哪里出了問題


/*這是lcd1602.c模塊*/
#include "config.h"
#include "lcd1602.h"
void LCD_Read_busy()
{
uchar busy;
LCD1602_DB = 0xff;
LCD1602_RS = 0;
LCD1602_RW = 1;
do
{
LCD1602_EN = 1;
busy = LCD1602_DB;
LCD1602_EN = 0;
}
while(busy & 0x80);
}
void LCD_Write_cmd(uchar cmd)
{
LCD_Read_busy();
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_DB = cmd;
LCD1602_EN = 1;
LCD1602_EN = 0;
}
void LCD_Write_dat(uchar dat)
{
LCD_Read_busy();
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_DB = dat;
LCD1602_EN = 1;
LCD1602_EN = 0;
}
void Init_LCD1602()
{
LCD_Write_cmd(0x38);
LCD_Write_cmd(0x0f);
LCD_Write_cmd(0x06);
LCD_Write_cmd(0x01);
}
void LCD1602_Set_Cursor(uchar x,uchar y)
{
if(y)
x |= 0x40;
x |= 0x80;
LCD_Write_cmd(x);
}
void LCD_Dis_STR(uchar x,uchar y,uchar *str)
{ //這是keil顯示警告的位置 在編譯器上這是第66行
LCD1602_Set_Cursor(x,y);
while(*str != '\0')
{
LCD_Write_dat(*str++);
}
}
/*這是主函式模塊main.c*/
#define _MAIN_C
#include "config.h"
#include "lcd1602.h"
void main()
{
Init_LCD1602();
LCD_Dis_STR(6,0,"Hello");
while(1);
}
/*這是關于函式宣告還有定義宣告的config.h*/
#ifndef _CONFIG_H
#define _CONFIG_H
#include <reg52.h>
#include <intrins.h>
#define MAIN_Fosc 11059200UL //宏定義主時鐘HZ
//已有資料型別重命名
typedef signed int int16; //16位有符號整型
typedef signed char int8; //8位有符號型
typedef unsigned char uchar8; //8位無符號型
typedef unsigned char uchar; //8位無符號型
typedef unsigned int uint16; //16位無符號型
typedef unsigned int uint; //16位無符號型
typedef unsigned long uint32; //32位無符號型
//硬體介面定義
/*LCD1602液晶引腳*/
#define LCD1602_DB P0
sbit LCD1602_RS = P3^5;
sbit LCD1602_RW = P3^6;
sbit LCD1602_EN = P3^4;
#endif
/*這是lcd1602的一些函式宣告*/
#ifndef _LCD1602_H
#define _LCD1602_H
void Init_LCD1602(); //初始化lCD1602
void LCD_Dis_STR(uint x,uint y,uint *str); //lcd1602寫字串
void LCD1602_Set_Cursor(uchar x,uchar y); //LCD1602設定游標顯示位置
#endif
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/232761.html
標籤:單片機/工控
