久久久久久久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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕一区二区三 | 久久久久久www | 欧美国产视频 | 91视频18| 亚洲最大看片网站 | 欧美日韩a| 久久久久99 | 亚洲成人蜜桃 | 中文字幕在线观看精品 | 日本欧美黄色片 | 亚洲第一成人影院 | 日本精a在线观看 | 久久久久久久国产 | 在线小视频 | 国产乱码精品1区2区3区 | 91看片免费| 久久99精品视频 | 久久99精品久久久久子伦 | 国产精品日日做人人爱 | 日本高清不卡视频 | 精品成人一区二区 | 亚洲欧美中文日韩在线v日本 | 欧美激情欧美激情在线五月 | 国产成人免费网站 | 男女性毛片 | 视频在线一区二区 | 精品国产高清一区二区三区 | 亚洲网址在线观看 | 日韩欧美国产一区二区 | 91精品国产91久久综合桃花 | 亚洲人va欧美va人人爽 | 国产一区精品 | 欧美激情精品久久久久 | 久久亚洲天堂 | 久久丁香 | 天天搞天天操 | 国产欧美精品一区二区三区 | 国产精品久久久久国产a级 欧美日韩国产免费 | 国产精品视频播放 | 福利网址| 国产日韩精品一区二区 |