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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1844|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

求助:avr編程 WinAVR程序移植到iar for avr 出現(xiàn)錯(cuò)誤

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:44037 發(fā)表于 2021-3-21 11:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
求助:avr編程  WinAVR程序移植到iar for avr 出現(xiàn)錯(cuò)誤
   WinAVR  pgmspace.h 頭文件  函數(shù)[url=]表情[/url]
        #definepgm_read_byte(address_short)   pgm_read_byte_near(address_short)
  iar for avr  pgmspace.h 頭文件  函數(shù)   沒有pgm_read_byte函數(shù)  
  1. /* PGM_P points into program address space */ PGM_P指向程序地址空間
  2. #ifdef __HAS_ELPM__
  3. #define PGM_P      const char __farflash *
  4. #define PGM_VOID_P const void __farflash *
  5. #else
  6. #define PGM_P      const char __flash *
  7. #define PGM_VOID_P const void __flash *
  8. #endif /* __HAS_ELPM__ */

  9. #define __PRINTFPR_P _Pragma("__printf_args")                             \
  10.   _Pragma("library_default_requirements _formatted_write_P = unknown")
  11. #define __SCANFPR_P  _Pragma("__scanf_args")                              \
  12.   _Pragma("library_default_requirements _formatted_read_P = unknown")

  13. /* Language extensions are necessary to cope with multiple address spaces */
  14. 必須使用語言擴(kuò)展才能應(yīng)對(duì)多個(gè)地址空間
  15. #pragma language=save
  16. #pragma language=extended
  17. __PRINTFPR_P int     printf_P(PGM_P __format,...);
  18. __SCANFPR_P  int     scanf_P(PGM_P __format,...);
  19. __PRINTFPR_P int     sprintf_P(char *__s,PGM_P __format,...);
  20. __SCANFPR_P  int     sscanf_P(const char *__s, PGM_P __format,...);

  21. int     puts_P(PGM_P __s);
  22. PGM_P   strerror_P(int errnum);
  23. size_t  strlen_P(PGM_P s);
  24. __x_z int memcmp_P(const void *, PGM_VOID_P, size_t);
  25. __x_z void *memcpy_P(void *, PGM_VOID_P, size_t);
  26. __x_z char *strcat_P(char *, PGM_P);
  27. __x_z int strcmp_P(const char *, PGM_P);
  28. __x_z char *strcpy_P(char *, PGM_P);
  29. __x_z char *strncat_P(char *, PGM_P, size_t);
  30. __x_z int strncmp_P(const char *, PGM_P, size_t);
  31. __x_z char *strncpy_P(char *, PGM_P, size_t);

  32. __x_z int memcmp_G(const void *, const void __generic *, size_t);
  33. __x_z void *memcpy_G(void *, const void __generic *, size_t);
  34. __x_z char *strcat_G(char *, const char __generic *);
  35. __x_z int strcmp_G(const char *, const char __generic *);
  36. __x_z char *strcpy_G(char *, const char __generic *);
  37. __z size_t strlen_G(const char __generic *);
  38. __x_z char *strncat_G(char *, const char __generic *, size_t);
  39. __x_z int strncmp_G(const char *, const char __generic *, size_t);
  40. __x_z char *strncpy_G(char *, const char __generic *, size_t);
  41.       int puts_G(const char __generic *);
復(fù)制代碼

現(xiàn)在
WinAVR程序   移植到iar for avr  pgm_read_byte 出現(xiàn)錯(cuò)誤   請(qǐng)求指導(dǎo)  下面程序程序  應(yīng)該怎么改?
  1. void Common_Show(INT8U P,INT8U L,INT8U W,char *r)
  2. {
  3.     INT8U i;
  4.     //顯示在左半屏或左右半屏
  5.     if(L < 64)
  6.     {
  7.         CS1_1(); CS2_0();
  8.         LCD_Write_Command(LCD_PAGE+P);
  9.         LCD_Write_Command(LCD_COL+L);
  10.         //全部顯示在左半屏
  11.         if(L + W < 64)
  12.         {
  13.             for(i=0; i<W; i++) LCD_Write_Data(<b>pgm_read_byte</b>(r+i));
  14.         }
  15.         //如果越界則跨越左右半屏顯示
  16.         else
  17.         {
  18.             //左半屏顯示
  19.             for(i=0; i<64-L; i++) LCD_Write_Data(<b>pgm_read_byte</b>(r+i));
  20.             //右半屏顯示
  21.             CS1_0(); CS2_1();
  22.             LCD_Write_Command(LCD_PAGE+P);
  23.             LCD_Write_Command(LCD_COL);
  24.             for(i=64-L; i<W; i++) LCD_Write_Data(<b>pgm_read_byte</b>(r+i));
  25.         }
  26.     }
  27.     //全部顯示在右半屏
  28.     else
  29.     {
  30.         CS1_0(); CS2_1();
  31.         LCD_Write_Command(LCD_PAGE+P);
  32.         LCD_Write_Command(LCD_COL+L-64);
  33.         for(i=0; i<W; i++) LCD_Write_Data(<b>pgm_read_byte</b>(r+i));
  34.     }
  35. }
復(fù)制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:822755 發(fā)表于 2021-3-21 13:23 | 只看該作者
試試自己定義替換
#definepgm_read_byte(address_short)   *(const char __flash * ( address_short))

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:44037 發(fā)表于 2021-3-21 14:59 | 只看該作者
謝謝指導(dǎo)!
#define pgm_read_byte(address_short)   *(const char __flash * ( address_short))
   編譯  出現(xiàn) Error[Pe018]: expected a ")"   Error[Pe029]: expected an expression
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人黄色在线观看 | 97精品一区二区 | 国产成人精品久久二区二区91 | 91高清在线视频 | av在线播放网站 | 日韩中文字幕一区 | 久久久123| 成年无码av片在线 | 国产精品视频一二三区 | 国产激情视频在线观看 | 看片一区| 久久久www成人免费精品 | 亚洲视频 欧美视频 | 日韩精品一区二区三区久久 | 中文字幕精品视频 | 久草网站 | 成人免费黄色片 | 欧美中文字幕一区二区三区亚洲 | 一区二区三区在线播放 | 日韩精品一区二区三区中文在线 | 亚洲欧美精品在线观看 | 天天天天操 | 日韩精品一区二区三区久久 | 国产日韩欧美一区 | 国产剧情一区 | 国产美女高潮 | 插插插干干干 | 视频三区 | 日韩精品在线观看视频 | 91免费观看 | 国产主播第一页 | 三区在线观看 | 国产精品1区| 91视频在线看 | 中文字幕精品视频 | 一区二区成人 | 久久亚洲一区二区三区四区 | 欧美一区二区在线观看视频 | 久草青青 | 夜夜夜久久| 欧美国产一区二区 |