soma
发表于 2024-11-17 17:07:03
ercircle 发表于 2024-11-16 22:50
搞了个IAR环境体验下C++上来就踩坑啊,
类的成员函数内位移操作不能用成员变量
,
keil的c51就是不支持c++啊。
ercircle
发表于 2024-11-17 18:16:26
soma 发表于 2024-11-17 17:07
keil的c51就是不支持c++啊。
不是keil,是IAR for 8051,应该是编译器问题,我用的8.x太老了
ercircle
发表于 2024-11-17 18:25:31
32bit和8bit工程差异感悟:
8bit头文件一部分寄存器使用宏定义声明,无法像sbit一样操作(而库函数的优点之一就是操作归一化了)
> 为什么要用宏定义:因为这部分用sbit会报错:C51: ERROR 146 (Invalid Base Address) !:(
//32bit
PD = 1;
//8bit
PCON |= PD;
//32bit
PD = 0;
//8bit
PCON &= ~PD;
//32bit
if(PD)
//8bit
if(PCON & PD)
ercircle
发表于 2024-11-17 22:04:28
ercircle 发表于 2024-11-16 22:50
搞了个IAR环境体验下C++上来就踩坑啊,
类的成员函数内位移操作不能用成员变量
,
果然是版本太低导致的,网上搜"IAR EW for 8051 软件注册"能找到10.10.1版本跑起来就没问题。感谢神秘网友的支持。{:5_275:}
装完IAR要导入devices:
IAR平台开发
头文件可以用Ai8051U自己的:
ercircle
发表于 2024-11-17 22:28:06
这有的宏定义也太随意了,给改改{:5_351:}
ercircle
发表于 2024-11-18 00:34:13
36.3例程跑8bit编译报错:
Start to Rebuild target Target 1
Rebuild target 'Target 1'
compiling LCD1602-LCM-DMA.c...
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
linking...
LX51 LINKER/LOCATER V4.41 - SN: K1DZC-R0HMSC
COPYRIGHT KEIL ELEKTRONIK GmbH 1995 - 2009
@.\list\AI8051~1.LNP ".\list\LCD1602-LCM-DMA.obj"
TO ".\list\Ai8051U-output"
PRINT(".\list\Ai8051U-output.map") REMOVEUNUSED
*** ERROR L214: INPUT PHASE ERROR
MODULE:.\list\LCD1602-LCM-DMA.obj (LCD1602_LCM_DMA)
Target not created.
Build Time Elapsed:00:00:00
查了下论坛看到浦江大佬帖子:
基于AI8051U_V1.2实验箱_学习实验之驱动TFT彩屏
和猜想一致,中断号超了
尝试添加isr.asm还是报错,应该不认超过32的中断号吧,直接将DMA_LCM_VECTOR改为USER_VECTOR即13
再看8H函数库里也是这样处理的
ercircle
发表于 2024-11-18 00:46:54
C251中有near关键字C51没有,知识点++
ercircle
发表于 2024-11-18 16:57:00
cdc重定向差异,32bit重定向printf,8bit重定向putchar:
关于STC8H芯片 想要重定向printf函数问题
72.3例程没用"usb.h"头文件{:5_320:}
宏定义效果直接替换了printf到printf_hid。重定向putchar应该可以实现一样的效果,待测试。
这个SEG7_ShowString的作用:STC-ISP-7段数码管
万能的论坛,想问的基本都能搜到~
ercircle
发表于 2024-11-18 17:38:11
8bit头文件缺失一些宏定义,不知道为啥,先拷贝过来试下~
ercircle
发表于 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位并口驱动:
/*****************************************************************************
* @name :void LCD_Init(void)
* @date :2018-08-09
* @function :Initialization LCD screen
* @parameters :None
* @retvalue :None
******************************************************************************/
void LCD_Init(void)
{
LCD_Set_GPIO();
LCDReset(); //初始化之前复位
//************* ILI9488初始化**********//
LCD_WR_REG(0XF7);
LCD_WR_DATA(0xA9);
LCD_WR_DATA(0x51);
LCD_WR_DATA(0x2C);
LCD_WR_DATA(0x82);
LCD_WR_REG(0xC0);
LCD_WR_DATA(0x11);
LCD_WR_DATA(0x09);
LCD_WR_REG(0xC1);
LCD_WR_DATA(0x41);
LCD_WR_REG(0XC5);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x0A);
LCD_WR_DATA(0x80);
LCD_WR_REG(0xB1);
LCD_WR_DATA(0xB0);
LCD_WR_DATA(0x11);
LCD_WR_REG(0xB4);
LCD_WR_DATA(0x02);
LCD_WR_REG(0xB6);
LCD_WR_DATA(0x02);
LCD_WR_DATA(0x42);
LCD_WR_REG(0xB7);
LCD_WR_DATA(0xc6);
LCD_WR_REG(0xBE);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x04);
LCD_WR_REG(0xE9);
LCD_WR_DATA(0x00);
LCD_WR_REG(0x36);
//LCD_WR_DATA((1<<3)|(0<<7)|(1<<6)|(1<<5));
LCD_WR_DATA(0x08); //设置RGB,含排线的屏
//LCD_WR_DATA(0x00); //设置RGB,不含排线的屏
LCD_WR_REG(0x3A);
LCD_WR_DATA(0x05);
LCD_WR_REG(0xE0);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x07);
LCD_WR_DATA(0x10);
LCD_WR_DATA(0x09);
LCD_WR_DATA(0x17);
LCD_WR_DATA(0x0B);
LCD_WR_DATA(0x41);
LCD_WR_DATA(0x89);
LCD_WR_DATA(0x4B);
LCD_WR_DATA(0x0A);
LCD_WR_DATA(0x0C);
LCD_WR_DATA(0x0E);
LCD_WR_DATA(0x18);
LCD_WR_DATA(0x1B);
LCD_WR_DATA(0x0F);
LCD_WR_REG(0XE1);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x17);
LCD_WR_DATA(0x1A);
LCD_WR_DATA(0x04);
LCD_WR_DATA(0x0E);
LCD_WR_DATA(0x06);
LCD_WR_DATA(0x2F);
LCD_WR_DATA(0x45);
LCD_WR_DATA(0x43);
LCD_WR_DATA(0x02);
LCD_WR_DATA(0x0A);
LCD_WR_DATA(0x09);
LCD_WR_DATA(0x32);
LCD_WR_DATA(0x36);
LCD_WR_DATA(0x0F);
LCD_WR_REG(0x11);
delay_ms(120);
LCD_WR_REG(0x29);
//设置LCD属性参数
LCD_direction(USE_HORIZONTAL);//设置LCD显示方向
}
页:
1
[2]
3
4
5
6
7
8
9
10
11