久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4888|回復: 12
打印 上一主題 下一主題
收起左側

新手求助大佬: error C141: syntax error near '=', expected '__asm'

[復制鏈接]
跳轉到指定樓層
樓主
ID:974311 發表于 2021-10-23 23:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include<reg2.h>
  2. #define P0
  3. #define E
  4. //*********************************************************************
  5. sbit EN=P1^1;
  6. sbit RS=P2^0;
  7. sbit RW=P2^1;


  8. //******************************************************************
  9. char str[]="Goodbye World!";


  10. //***********************************************************************
  11. void delayms(unsigned int ms)
  12. {
  13.         uchar i;
  14.         while(ms--)
  15.            for(i=0;i<123;i++)
  16. }


  17. //****************************************************************
  18. void lcdwritecom(unsigned char com)
  19. {
  20.         RW=0;
  21.         RS=0;
  22.         E=1;
  23.         P0=com;
  24.         E=0;
  25.         delayms(1);
  26. }


  27. //**********************************************************************
  28. void lcdwritedat(unsigned char dat)
  29. {
  30.         RW=0;
  31.         RS=1;
  32.         E=1;
  33.         P0=dat;
  34.         E=0;
  35.         delayms(1);
  36. }


  37. //******************************************************************
  38. void lcdinit()
  39. {
  40.         lcdwritecom(0x38);
  41.         delayms(10);
  42.         lcdwritecom(0x0c);
  43.         delayms(10);
  44.         lcdwritecom(0x06);
  45.         delayms(10);
  46.         lcdwritecom(0x01);
  47.         delayms(10);
  48.         lcdwritecom(0x38);
  49.         delayms(10);
  50. }


  51. //*******************************************************************
  52. void main()
  53. {
  54.         char i;
  55.         lcdinit();
  56.         lcdwritecm(0xc0);
  57.         for(i=0;i<14;i++)
  58.         {
  59.                 lcdwritedat(str[i]);
  60.         }
  61.         while(1);
  62. }
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:974311 發表于 2021-10-23 23:03 | 只看該作者
P0=dat;
        E=0;
就這兩個地方有什么不對的嗎?LCD1602顯示屏讀寫部分
回復

使用道具 舉報

板凳
ID:94031 發表于 2021-10-24 07:29 | 只看該作者
2901005274 發表于 2021-10-23 23:03
P0=dat;
        E=0;
就這兩個地方有什么不對的嗎?LCD1602顯示屏讀寫部分

P0已經在reg52.h聲明了,#define P0要注釋掉。E沒有聲明根據分析應該是EN,#define E也要注釋掉。
回復

使用道具 舉報

地板
ID:837951 發表于 2021-10-24 09:14 | 只看該作者
把02和03行去掉,后面程序的E改為EN
回復

使用道具 舉報

5#
ID:974311 發表于 2021-10-24 11:30 | 只看該作者
xuyaqi 發表于 2021-10-24 07:29
P0已經在reg52.h聲明了,#define P0要注釋掉。E沒有聲明根據分析應該是EN,#define E也要注釋掉。

去掉之后就錯了,所以才改動的
1602.c(40): error C202: 'P0': undefined identifier
1602.c(41): error C202: 'EN': undefined identifier
Target not created.
回復

使用道具 舉報

6#
ID:974311 發表于 2021-10-24 11:33 | 只看該作者
xuyaqi 發表于 2021-10-24 07:29
P0已經在reg52.h聲明了,#define P0要注釋掉。E沒有聲明根據分析應該是EN,#define E也要注釋掉。

1602.c(40): error C202: 'P0': undefined identifier
1602.c(41): error C202: 'EN': undefined identifier
Target not created.
回復

使用道具 舉報

7#
ID:974311 發表于 2021-10-24 11:34 | 只看該作者
xuyaqi 發表于 2021-10-24 07:29
P0已經在reg52.h聲明了,#define P0要注釋掉。E沒有聲明根據分析應該是EN,#define E也要注釋掉。

1602.c(40): error C202: 'P0': undefined identifier
1602.c(41): error C202: 'EN': undefined identifier
Target not created.
回復

使用道具 舉報

8#
ID:964308 發表于 2021-10-24 11:35 來自手機 | 只看該作者
你的頭文件怎么是reg2.h,還有P0端口已經在頭文件里定義了,不需要再用define定義
回復

使用道具 舉報

9#
ID:964308 發表于 2021-10-24 11:41 | 只看該作者
  1. #include"reg51.h"//51單片機頭文件
  2. /*相關引腳的定義*///該部分可以自己去定義,我是學習51單片機時選擇普中單片機開發板。
  3. sbit rs=P2^6;    //命令/數據選擇
  4. sbit rw=P2^5;    //讀寫口
  5. sbit  e=P2^7;    //鎖存控制
  6. sbit tou=P2^4;
  7. /*函數聲明*/

  8. void LCD1602_SetArea(unsigned char X,unsigned char Y);
  9. void LCD1602_ShowChar(unsigned char X,unsigned char Y,unsigned char Char);
  10. void LCD1602_ShowString(unsigned char X,unsigned char Y,unsigned char *String);
  11. //void LCD1602_ShowArray(unsigned char X,unsigned char Y,unsigned char *Array,unsigned char Count);
  12. //void LCD1602_ShowNumber_Integer(unsigned char X,unsigned char Y,int IntegerNumber,unsigned char Count);
  13. void InitLCD();

  14. /*延遲函數的定義*/
  15. void DELAY_nUS(unsigned int Time)
  16. {
  17.         while(--Time);
  18. }
  19. void DELAY_nMS(unsigned int time)
  20. {
  21.   unsigned int  i,j;            
  22.   for(i=0;i<time;i++)   
  23.      for(j=0;j<939;j++);
  24. }
  25. //向LCD寫一命令
  26. void wcode(unsigned char t)
  27. {
  28.   rs=0;           // 寫的是命令
  29.   rw=0;           // 寫狀態
  30.   e=1;            //使能
  31.   P0=t;           //寫入命令
  32.   DELAY_nMS(2);      //等待寫入,如果時間太短,會導致液晶無法顯示
  33.   e=0;            //數據的鎖定
  34. }
  35. //向LCD寫一數據
  36. void wdata(unsigned char t)
  37. {
  38.   rs=1;          // 寫的是數據
  39.   rw=0;          // 寫狀態
  40.   e=1;           //使能
  41.   P0=t;          //寫入數據
  42.   DELAY_nMS(2);     //等待寫入,如果時間太短,會導致液晶無法顯示
  43.   e=0;           //數據的鎖定
  44. }
  45. //LCD設置坐標位置
  46. void LCD1602_SetArea(unsigned char X,unsigned char Y)
  47. {
  48.     switch(Y)
  49.     {
  50.         case 0: wcode(0x80 + X); break;
  51.         case 1: wcode(0xC0 + X); break;
  52.         default:break;
  53.     }
  54. }
  55. //LCD顯示字符
  56. void LCD1602_ShowChar(unsigned char X,unsigned char Y,unsigned char Char)
  57. {
  58.     LCD1602_SetArea(X,Y);                           // 設置顯示坐標
  59.     wdata(Char);                        // 顯示指定字符
  60. }
  61. //LCD顯示字符串
  62. void LCD1602_ShowString(unsigned char X,unsigned char Y,unsigned char *String)
  63. {            
  64.     LCD1602_SetArea(X,Y);                           // 設置顯示坐標
  65.     while(*String)
  66.     {
  67.         wdata(*String);
  68.         String++;
  69.     }
  70. }

  71. //LCD初始化
  72. void InitLCD()
  73. {                   
  74.    wcode(0x01);          //清屏
  75.    wcode(0x06);   //輸入方式控制,增量光標不移位
  76.    wcode(0x0e);   //顯示開關控制
  77.    wcode(0x38);   //功能設定:設置16x2顯示,5x7顯示,8位數據接口            
  78. }

  79. /*******************************************************************************
  80. * 函 數 名       : main()
  81. * 函數功能       :主函數
  82. * 輸    入       : 無
  83. * 輸    出       : 無
  84. *******************************************************************************/
  85. void main()
  86. {
  87.         InitLCD();
  88.         LCD1602_ShowString(0,0,"hello world");
  89.         while(tou);
  90.     wcode(0x01);          //清屏
  91. }
復制代碼

我這有個lcd1602的代碼,你可以參考參考,還有你那個寫入數據和使能太快了,可能會出錯
回復

使用道具 舉報

10#
ID:964308 發表于 2021-10-24 11:44 來自手機 | 只看該作者
2901005274 發表于 2021-10-23 23:03
P0=dat;
        E=0;
就這兩個地方有什么不對的嗎?LCD1602顯示屏讀寫部分

有問題,你的使能端定義的是EN,而你用的是E,E不指向任何端口
回復

使用道具 舉報

11#
ID:824490 發表于 2021-10-24 12:10 | 只看該作者
#define P0
#define E
回復

使用道具 舉報

12#
ID:624769 發表于 2021-10-24 14:20 | 只看該作者
#include<reg2.h>               <===   這個頭文件,真的存在么?
#define P0                         <===    define 是重定義的意思, 你定義  P0  為  ???? 空氣?
#define E                           <===    define 是重定義的意思, 你定義  E  為  ???? 空氣?

只有一種情況下,define 重定義為空氣,一般是條件編譯, 判斷是否有 define 這個 符號,但是你下面有了賦值操作,那么問題來了, 你給空氣賦值?
回復

使用道具 舉報

13#
ID:213173 發表于 2021-10-24 17:17 | 只看該作者
多處抄寫錯漏
#include<reg52.h>

//*********************************************************************
sbit EN=P1^1;
sbit RS=P2^0;
sbit RW=P2^1;


//******************************************************************
char str[]="Goodbye World!";


//***********************************************************************
void delayms(unsigned int ms)
{
        unsigned char i;
        while(ms--)
                for(i=0;i<123;i++);
}


//****************************************************************
void lcdwritecom(unsigned char com)
{
        RW=0;
        RS=0;
        EN=1;
        P0=com;
        EN=0;
        delayms(1);
}


//**********************************************************************
void lcdwritedat(unsigned char dat)
{
        RW=0;
        RS=1;
        EN=1;
        P0=dat;
        EN=0;
        delayms(1);
}


//******************************************************************
void lcdinit()
{
        lcdwritecom(0x38);
        delayms(10);
        lcdwritecom(0x0c);
        delayms(10);
        lcdwritecom(0x06);
        delayms(10);
        lcdwritecom(0x01);
        delayms(10);
        lcdwritecom(0x38);
        delayms(10);
}


//*******************************************************************
void main()
{
        char i;
        lcdinit();
        lcdwritecom(0xc0);
        for(i=0;i<14;i++)
        {
                lcdwritedat(str);
        }
        while(1);
}







回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲人成网站777色婷婷 | 日韩中文字幕在线观看 | 国产精品久久片 | 成人久久网 | 国产精品成人一区二区三区夜夜夜 | 91在线视频免费观看 | 可以免费看的毛片 | 一区二区福利视频 | 久久精品亚洲精品国产欧美 | 天天影视网天天综合色在线播放 | 亚洲欧美一区二区三区国产精品 | 精精国产xxxx视频在线野外 | 日韩在线不卡 | 狠狠久久综合 | 日韩一级精品视频在线观看 | 四虎影院美女 | 久久一二区 | 国产中文字幕av | 国产91视频免费 | 日韩中文字幕网 | 91欧美 | av入口| 日韩专区中文字幕 | aaaaa毛片| 日本中文字幕一区 | 一区二区三区国产视频 | 日韩一区二区三区视频 | 亚洲91视频 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 国产日韩欧美在线观看 | 精品久久香蕉国产线看观看亚洲 | 色狠狠桃花综合 | av中文在线 | 国产成人网 | 福利视频亚洲 | 欧美一区二区三区在线 | 精品欧美一区二区精品久久 | 午夜电影网| 成人天堂噜噜噜 | 成人在线视频一区二区三区 | www.日本在线播放 |