![]() |
發布時間: 2023-11-19 17:08
正文摘要:#include <REGX52.H> #include "delay.h" sbit LCD_RW = P2^5; sbit LCD_RS = P2^6; sbit LCD_EN = P2^7; #define LCD_DATAPORT P0 void data_process() { LCD_EN=1; delay(1); LCD_EN=0; delay( ... |
delay.h看看是不是聲明少了個; |
zhuls 發表于 2023-11-19 21:27 算了吧,驢唇不對馬嘴。 |
Hephaestus 發表于 2023-11-19 21:16 不一定哦~~ 我曾經遇到過這樣的錯誤: 單個文件都是對的,是在extern 引用時,因為類型不對,(變量聲明時u8,引用時u16)結果提示什么什么缺少“;”、XXX未定義之類的。反正就是5花8門的錯誤后,后來把extern的類型配對后就沒有錯了。 |
zhuls 發表于 2023-11-19 21:07 路徑不對怎么可能出現樓主位的錯誤,不僅行數不對,而且錯誤也不對。 錯誤的問題出在第3行,而第3行顯然是正確的,那就是第2行的遺留問題,編譯器沒檢測到問題,但是到了正確的第3行就出問題了。顯然是頭文件太臟了,把正確的文件污染成錯誤的。 |
#include <REGX52.H> #include "delay.h"//路徑對嗎? sbit LCD_RW = P2^5; sbit LCD_RS = P2^6; sbit LCD_EN = P2^7; #define LCD_DATAPORT P0 void data_process() { LCD_EN=1; //EN 低跳變? delay(1); LCD_EN=0; delay(1); } void writecommand(unsigned char command) { LCD_RS=0; LCD_RW=0; LCD_DATAPORT=command; data_process(); } void writedata(unsigned char datas) { LCD_RS=1; LCD_RW=0; LCD_DATAPORT=datas; data_process(); } void LCD_Init(void) { LCD_writecommand(0x38);//LCD_writecommand原型在哪 里? LCD_writecommand(0x0C); LCD_writecommand(0x06); LCD_writecommand(0x01); } void set_cursor(unsigned char line,unsigned char column) { if(line==1); //這行是干什么的? writecommand(0x80|column-1);//邏輯順序對嗎? else writecommand(0x80|column-1+0x40);//邏輯順序對嗎? } void writes_char(unsigned char line,unsigned char column,unsigned char str) { set_cursor(line,column); writedata(str); } void writes_string(unsigned char line,unsigned char column,unsigned char *string) { set_cursor(line,column); for(int i=0;i<string!=0;++i) writedata(string); } void main() { LCD_Init(); writes_string(1,1,"fuck you"); while(1) { } } |
因為代碼不文明,被KEIL強制隔離了![]() |
第六行移動到第三行試試 |
應該是delay.h不干凈,把錯誤遺留這里了。 |