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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助:avr編程 WinAVR程序移植到iar for avr 出現錯誤

[復制鏈接]
跳轉到指定樓層
樓主
ID:44037 發表于 2021-3-21 11:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求助:avr編程  WinAVR程序移植到iar for avr 出現錯誤
   WinAVR  pgmspace.h 頭文件  函數[url=]表情[/url]
        #definepgm_read_byte(address_short)   pgm_read_byte_near(address_short)
  iar for avr  pgmspace.h 頭文件  函數   沒有pgm_read_byte函數  
  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. 必須使用語言擴展才能應對多個地址空間
  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 *);
復制代碼

現在
WinAVR程序   移植到iar for avr  pgm_read_byte 出現錯誤   請求指導  下面程序程序  應該怎么改?
  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. }
復制代碼



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

使用道具 舉報

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

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色爱综合网 | 久久久久国产一区二区三区不卡 | 国产成人精品一区 | 国产中文字幕在线观看 | 91国产视频在线观看 | 亚洲成人黄色 | 天堂在线网 | 国产精品视屏 | 一级黄色毛片a | 日本不卡视频 | 国产一区二区三区在线免费 | 日韩在线成人 | 国产伦精品一区二区三区高清 | 国精日本亚洲欧州国产中文久久 | 99国产精品久久久 | 国产成人免费视频网站高清观看视频 | 久久国产电影 | 国产欧美一区二区三区久久人妖 | 国产精品久久久爽爽爽麻豆色哟哟 | av日韩精品 | av大片在线 | 精品入口麻豆88视频 | 国产精品欧美日韩 | 国产免国产免费 | 国产一二区免费视频 | 国产女人与拘做视频免费 | 国产日韩精品一区 | 欧美成人性生活 | 国产乱码精品一品二品 | 一区二区视频在线观看 | 欧美天堂在线观看 | 91网站视频在线观看 | 国产一区二区自拍 | 天堂久久天堂综合色 | 激情麻豆视频 | 欧美激情综合五月色丁香小说 | 精品中文字幕一区 | 午夜影视大全 | 91视频在线观看 | 中文字幕综合 | 精品一区二区三区四区视频 |