找回密码
 立即注册
楼主: ercircle

学习官方Ai8051U实验箱 | 最强记录贴,Ai8051U-8Bit,Keil-C51, SDCC-51, IAR/C++

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-02 07:55:56
已绑定手机

19

主题

3190

回帖

4870

积分

论坛元老

积分
4870
发表于 2024-11-17 17:07:03 | 显示全部楼层
erci*** 发表于 2024-11-16 22:50
搞了个IAR环境体验下C++上来就踩坑啊,
类的成员函数内位移操作不能用成员变量
,

keil的c51就是不支持c++啊。

点评

不是keil,是IAR for 8051,应该是编译器问题,我用的8.x太老了  详情 回复 发表于 2024-11-17 18:16
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2940

积分

荣誉版主

无情的代码机器

积分
2940
发表于 2024-11-17 18:16:26 | 显示全部楼层
so*** 发表于 2024-11-17 17:07
keil的c51就是不支持c++啊。

不是keil,是IAR for 8051,应该是编译器问题,我用的8.x太老了
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2940

积分

荣誉版主

无情的代码机器

积分
2940
发表于 2024-11-17 18:25:31 | 显示全部楼层
32bit和8bit工程差异感悟:
8bit头文件一部分寄存器使用宏定义声明,无法像sbit一样操作(而库函数的优点之一就是操作归一化了)
> 为什么要用宏定义:因为这部分用sbit会报错:C51: ERROR 146 (Invalid Base Address) !  :(
  1. //32bit
  2. PD = 1;
  3. //8bit
  4. PCON |= PD;
  5. //32bit
  6. PD = 0;
  7. //8bit
  8. PCON &= ~PD;
  9. //32bit
  10. if(PD)
  11. //8bit
  12. if(PCON & PD)
复制代码

截图202411171819586169.jpg

点评

补充一些最近看到的寄存器操作技巧: 把要读写的值左移offset即可,妙啊 [attachimg]64969[/attachimg] [attachimg]64975[/attachimg] [attachimg]64982[/attachimg] [attachimg]64979[/attachimg]  详情 回复 发表于 2024-11-22 13:57
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2940

积分

荣誉版主

无情的代码机器

积分
2940
发表于 2024-11-17 22:04:28 | 显示全部楼层
erci*** 发表于 2024-11-16 22:50
搞了个IAR环境体验下C++上来就踩坑啊,
类的成员函数内位移操作不能用成员变量
,

果然是版本太低导致的,网上搜"IAR EW for 8051 软件注册"能找到10.10.1版本跑起来就没问题。感谢神秘网友的支持。{:5_275:}

装完IAR要导入devices:
IAR平台开发
截图202411172202205225.jpg

头文件可以用Ai8051U自己的:
截图202411172201238533.jpg

三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2940

积分

荣誉版主

无情的代码机器

积分
2940
发表于 2024-11-17 22:28:06 | 显示全部楼层
这有的宏定义也太随意了,给改改{:5_351:}
截图202411172226091387.jpg
截图202411172226279320.jpg
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2940

积分

荣誉版主

无情的代码机器

积分
2940
发表于 2024-11-18 00:34:13 | 显示全部楼层
36.3例程跑8bit编译报错:
  1. Start to Rebuild target Target 1
  2. Rebuild target 'Target 1'
  3. compiling LCD1602-LCM-DMA.c...
  4. e:\hwWorkSpace\stc-ai8051U\ai8051U_Box_prj\AI8051U-DEMO-CODE-V1.2-C51\36.3-LCD1602显示程序-硬件M6800并行接口+DMA刷新\LCD1602-LCM-DMA.C(355) warning C280: 'i': unreferenced local variable
  5. linking...
  6. LX51 LINKER/LOCATER V4.41 - SN: K1DZC-R0HMSC
  7. COPYRIGHT KEIL ELEKTRONIK GmbH 1995 - 2009
  8. @.\list\AI8051~1.LNP ".\list\LCD1602-LCM-DMA.obj"
  9. TO ".\list\Ai8051U-output"
  10. PRINT(".\list\Ai8051U-output.map") REMOVEUNUSED
  11. *** ERROR L214: INPUT PHASE ERROR
  12.     MODULE:  .\list\LCD1602-LCM-DMA.obj (LCD1602_LCM_DMA)
  13. Target not created.
  14. Build Time Elapsed:  00:00:00
复制代码


查了下论坛看到浦江大佬帖子:
基于AI8051U_V1.2实验箱_学习实验之驱动TFT彩屏
和猜想一致,中断号超了
截图202411180030546105.jpg

尝试添加isr.asm还是报错,应该不认超过32的中断号吧,直接将DMA_LCM_VECTOR改为USER_VECTOR即13
截图202411180033003124.jpg
截图202411180033115111.jpg

再看8H函数库里也是这样处理的
截图202411180032116928.jpg
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2940

积分

荣誉版主

无情的代码机器

积分
2940
发表于 2024-11-18 00:46:54 | 显示全部楼层
C251中有near关键字C51没有,知识点++
截图202411180046046286.jpg
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2940

积分

荣誉版主

无情的代码机器

积分
2940
发表于 2024-11-18 16:57:00 | 显示全部楼层
cdc重定向差异,32bit重定向printf,8bit重定向putchar:
关于STC8H芯片 想要重定向printf函数问题
截图202411181647507445.jpg

72.3例程没用"usb.h"头文件{:5_320:}
截图202411181651292849.jpg
宏定义效果直接替换了printf到printf_hid。重定向putchar应该可以实现一样的效果,待测试。
截图202411181651089546.jpg

这个SEG7_ShowString的作用:STC-ISP-7段数码管
截图202411181656067655.jpg

万能的论坛,想问的基本都能搜到~
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2940

积分

荣誉版主

无情的代码机器

积分
2940
发表于 2024-11-18 17:38:11 | 显示全部楼层
8bit头文件缺失一些宏定义,不知道为啥,先拷贝过来试下~
截图202411181736054174.jpg
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2940

积分

荣誉版主

无情的代码机器

积分
2940
发表于 2024-11-18 23:09:28 | 显示全部楼层
本帖最后由 ercircle 于 2024-11-18 23:18 编辑

keil C51工程初步全部构建成功。3.5寸屏到了先测下TFT,参考以下ILI9488链接的屏参:
SPI驱动TFT屏ILI9488的程序@STC32, @STC8H
修改38例程LCD_Init, RGB 8位并口驱动:
  1. /*****************************************************************************
  2. * @name       :void LCD_Init(void)
  3. * @date       :2018-08-09
  4. * @function   :Initialization LCD screen
  5. * @parameters :None
  6. * @retvalue   :None
  7. ******************************************************************************/                  
  8. void LCD_Init(void)
  9. {
  10.         LCD_Set_GPIO();
  11.         LCDReset(); //初始化之前复位
  12. //************* ILI9488初始化**********//        
  13.         LCD_WR_REG(0XF7);
  14.         LCD_WR_DATA(0xA9);
  15.         LCD_WR_DATA(0x51);
  16.         LCD_WR_DATA(0x2C);
  17.         LCD_WR_DATA(0x82);
  18.         LCD_WR_REG(0xC0);
  19.         LCD_WR_DATA(0x11);
  20.         LCD_WR_DATA(0x09);
  21.         LCD_WR_REG(0xC1);
  22.         LCD_WR_DATA(0x41);
  23.         LCD_WR_REG(0XC5);
  24.         LCD_WR_DATA(0x00);
  25.         LCD_WR_DATA(0x0A);
  26.         LCD_WR_DATA(0x80);
  27.         LCD_WR_REG(0xB1);
  28.         LCD_WR_DATA(0xB0);
  29.         LCD_WR_DATA(0x11);
  30.         LCD_WR_REG(0xB4);
  31.         LCD_WR_DATA(0x02);
  32.         LCD_WR_REG(0xB6);
  33.         LCD_WR_DATA(0x02);
  34.         LCD_WR_DATA(0x42);
  35.         LCD_WR_REG(0xB7);
  36.         LCD_WR_DATA(0xc6);
  37.         LCD_WR_REG(0xBE);
  38.         LCD_WR_DATA(0x00);
  39.         LCD_WR_DATA(0x04);
  40.         LCD_WR_REG(0xE9);
  41.         LCD_WR_DATA(0x00);
  42.         LCD_WR_REG(0x36);
  43.         //LCD_WR_DATA((1<<3)|(0<<7)|(1<<6)|(1<<5));
  44.     LCD_WR_DATA(0x08);   //设置RGB,含排线的屏
  45. //  LCD_WR_DATA(0x00);   //设置RGB,不含排线的屏
  46.         LCD_WR_REG(0x3A);
  47.         LCD_WR_DATA(0x05);
  48.         LCD_WR_REG(0xE0);
  49.         LCD_WR_DATA(0x00);
  50.         LCD_WR_DATA(0x07);
  51.         LCD_WR_DATA(0x10);
  52.         LCD_WR_DATA(0x09);
  53.         LCD_WR_DATA(0x17);
  54.         LCD_WR_DATA(0x0B);
  55.         LCD_WR_DATA(0x41);
  56.         LCD_WR_DATA(0x89);
  57.         LCD_WR_DATA(0x4B);
  58.         LCD_WR_DATA(0x0A);
  59.         LCD_WR_DATA(0x0C);
  60.         LCD_WR_DATA(0x0E);
  61.         LCD_WR_DATA(0x18);
  62.         LCD_WR_DATA(0x1B);
  63.         LCD_WR_DATA(0x0F);
  64.         LCD_WR_REG(0XE1);
  65.         LCD_WR_DATA(0x00);
  66.         LCD_WR_DATA(0x17);
  67.         LCD_WR_DATA(0x1A);
  68.         LCD_WR_DATA(0x04);
  69.         LCD_WR_DATA(0x0E);
  70.         LCD_WR_DATA(0x06);
  71.         LCD_WR_DATA(0x2F);
  72.         LCD_WR_DATA(0x45);
  73.         LCD_WR_DATA(0x43);
  74.         LCD_WR_DATA(0x02);
  75.         LCD_WR_DATA(0x0A);
  76.         LCD_WR_DATA(0x09);
  77.         LCD_WR_DATA(0x32);
  78.         LCD_WR_DATA(0x36);
  79.         LCD_WR_DATA(0x0F);
  80.         LCD_WR_REG(0x11);
  81.         delay_ms(120);
  82.         LCD_WR_REG(0x29);        
  83.         //设置LCD属性参数
  84.         LCD_direction(USE_HORIZONTAL);//设置LCD显示方向
  85. }
复制代码

三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 09:13 , Processed in 0.251166 second(s), 104 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表