找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 227|回复: 17
收起左侧

stc8h8k64u单片机能否显示P4~P7口?

[复制链接]
ID:134430 发表于 2025-6-28 15:49 | 显示全部楼层 |阅读模式
用stc8h8k64u做一个项目,由于用io端口较多,要用到P4~P7的部分端口,
在调试程序时能不能使P4~P7显示出来,并且可以象P0~P3一样方便操作?
谢谢!!
回复

使用道具 举报

ID:155507 发表于 2025-6-28 16:45 | 显示全部楼层
可以的,可以显示P4~P7口。
用硬件仿真。

1.jpg
回复

使用道具 举报

ID:1133081 发表于 2025-6-28 17:08 | 显示全部楼层
完全可以象P0~P3一样方便操作
回复

使用道具 举报

ID:134430 发表于 2025-6-28 18:00 | 显示全部楼层
WL0123 发表于 2025-6-28 17:08
完全可以象P0~P3一样方便操作

我用keil 调试,peripherals 只有p0~p3,有人告诉我,可以用watch窗口,但那只能查看,不能操作。
回复

使用道具 举报

ID:57657 发表于 2025-6-28 21:30 | 显示全部楼层
wh8010jky 发表于 2025-6-28 18:00
我用keil 调试,peripherals 只有p0~p3,有人告诉我,可以用watch窗口,但那只能查看,不能操作。

原始51单片机只有p0~p3口,p4以上是后来扩展加进去的
回复

使用道具 举报

ID:134430 发表于 2025-6-28 23:19 | 显示全部楼层
WL0123 发表于 2025-6-28 17:08
完全可以象P0~P3一样方便操作

谢谢!!
回复

使用道具 举报

ID:134430 发表于 2025-6-28 23:41 | 显示全部楼层
angmall 发表于 2025-6-28 16:45
可以的,可以显示P4~P7口。
用硬件仿真。

谢谢!!
在某一个宝上买一个 STC_Lind 1D 就可以了吗?
回复

使用道具 举报

ID:155507 发表于 2025-6-29 00:41 | 显示全部楼层
wh8010jky 发表于 2025-6-28 23:41
谢谢!!
在某一个宝上买一个 STC_Lind 1D 就可以了吗?

不买也行,就用USB就可以了。
回复

使用道具 举报

ID:134430 发表于 2025-6-30 07:35 | 显示全部楼层
angmall 发表于 2025-6-29 00:41
不买也行,就用USB就可以了。

用USB能硬件仿真?请指教!越详细越好!谢谢!
回复

使用道具 举报

ID:134430 发表于 2025-6-30 07:40 | 显示全部楼层
angmall 发表于 2025-6-29 00:41
不买也行,就用USB就可以了。

用USB能仿真?请指教!越详细越好!我已有一块STC8H8K64U 开发板,上面有USB。
谢谢!!!
回复

使用道具 举报

ID:277550 发表于 2025-6-30 09:06 | 显示全部楼层

有点小建议,就是建议先看一下手册
回复

使用道具 举报

ID:996773 发表于 2025-6-30 13:46 | 显示全部楼层
这类超出51标准扩展端口用起来还是有点麻烦的,记得需要特定的地址写入数据开始启用,然后只能操作
地址控制,再加上强拉强推悬空读数据这些定义寄存器还是要翻看手册,尽量实机操作,先模拟仿真到实际应用会掉链子的,8h系列我没用过,8g我用过,挺恼火的,明明只有16个脚,p0,p1,p2它不搞,偏偏整了个
p5上去,自己的脑回路必须向它低头
回复

使用道具 举报

ID:134430 发表于 2025-6-30 18:12 | 显示全部楼层
hi等你 发表于 2025-6-30 13:46
这类超出51标准扩展端口用起来还是有点麻烦的,记得需要特定的地址写入数据开始启用,然后只能操作
地址控 ...

谢谢!!!
回复

使用道具 举报

ID:155507 发表于 2025-6-30 21:05 | 显示全部楼层
wh8010jky 发表于 2025-6-30 07:40
用USB能仿真?请指教!越详细越好!我已有一块STC8H8K64U 开发板,上面有USB。
谢谢!!!

建议先看一下手册
屏幕截图 2025-06-30 191242.jpg

1、安装 Keil 版本的仿真驱动
屏幕截图 2025-06-30 191355aa.jpg

如上图,首先选择“Keil 仿真设置”页面,点击“添加 MCU 型号到 Keil 中”,在出现的如下的目录选择
窗口中,定位到 Keil 的安装目录(一般可能为“C:\Keil\”),“确定”后出现下图中右边所示的提示信
息,表示安装成功。添加头文件的同时也会安装我司的 Monitor51 仿真驱动 STCMON51.DLL,驱动与头
文件的安装目录如上图所示。

屏幕截图 2025-06-30 192909.jpg

如上图,首先进入到项目的设置页面,选择“Debug”设置页,第 2 步选择右侧的硬件仿真“Use …”,
第 3 步,在仿真驱动下拉列表中选择“STC Monitor-51 Driver”项,然后点击“Settings”按钮,进入下
面的设置画面,对USB进行设置。到此设置便完成了。


2、创建仿真芯片
屏幕截图 2025-06-30 192725.jpg

准备一颗 STC8H 系列的芯片,并通过下载板连接到电脑的串口,然后如上图,选择正
确的芯片型号,然后进入到“Keil 仿真设置”页面,点击相应型号的按钮,当程序下载完成后仿真器便
制作完成了。


屏幕截图 2025-06-30 192836.jpg

5、开始仿真
将制作完成的仿真芯片通过USB口与电脑相连接。
将前面我们所创建的项目编译至没有错误后,按“Ctrl+F5”开始调试。
若硬件连接无误的话,将会进入到类似于下面的调试界面,并在命令输出窗口显示当前的仿真驱动版本
号和当前仿真监控代码固件的版本号
断点设置的个数目前最大允许 20 个(理论上可设置任意个,但是断点设置得过多会影响调试的速度)。

屏幕截图 2025-06-30 193151.jpg

开始调试
屏幕截图 2025-06-30 193911.jpg

仿真注意事项:
1、 仿真监控程序占用 P3.0/P3.1 两个端口,但不占用串口 1,用户可以将串口 1 切换到 P3.6/P3.7 或
者 P1.6/P1.7 再使用
2、 仿真监控程序占用内部扩展 RAM(XDATA)的最后 768 字节,用户不可对这个区域的 XDATA 进
行写操作(若有将 STARTUP.A51 文件加入到项目,请注意:XDATALEN 宏是用来定义 XDATA
大小的一个宏,默认值是 0,STARTUP.A51 里面的代码会根据用户设置的 XDATALEN 长度来
自动初始化 0~(XDATALEN-1)区域的 XDATA 为 0。一般保持 XDATALEN 为默认值 0 即可。若
用户需要修改,请根据实际的仿真的 XDATA 大小并保留 768 字节来设置此项。比如
STC8H8K64U 的 XDATA 为 8K,则需要将 XDATALEN 设置为 8192-768)



回复

使用道具 举报

ID:688692 发表于 2025-7-1 09:05 | 显示全部楼层
angmall 发表于 2025-6-30 21:05
建议先看一下手册

这是精准投喂啊,相当于原厂FAE,不是,是原厂讲师喂饭。
回复

使用道具 举报

ID:1137639 发表于 2025-7-1 10:01 | 显示全部楼层
在STC8H8K64U单片机中,P4~P7端口默认是不显示在调试窗口的,需要通过特殊设置才能像P0~P3一样方便操作。以下是具体的实现方法:  ### 1. 端口映射与初始化  首先需要通过配置相关特殊功能寄存器(SFR)来启用P4~P7端口,并进行初始化:  ```c #include <STC8H8K64U.h>  // 端口初始化函数 void Port_Init(void) {     // 使能P4~P7端口     P4M0 = 0x00;  // 设置P4口模式     P4M1 = 0x00;     P5M0 = 0x00;  // 设置P5口模式     P5M1 = 0x00;     P6M0 = 0x00;  // 设置P6口模式     P6M1 = 0x00;     P7M0 = 0x00;  // 设置P7口模式     P7M1 = 0x00;          // 根据实际需求配置每个端口的输入/输出方向     // 例如: P4.0设置为输出     P4M0 |= 0x01;  // 推挽输出     P4M1 &= ~0x01;          // 其他端口配置... } ```  ### 2. 在调试窗口显示P4~P7  要在STC-ISP或其他调试工具中显示P4~P7端口,需要修改调试配置文件或使用特殊指令。以STC-ISP为例:  1. 打开STC-ISP软件,连接好单片机 2. 进入"调试"选项卡 3. 在"特殊功能寄存器显示"区域,手动添加P4~P7的寄存器地址:    - P4: E8H    - P5: CCH    - P6: D8H    - P7: F0H  4. 勾选这些寄存器使其显示在调试窗口中  ### 3. 方便操作P4~P7端口的方法  为了像操作P0~P3一样方便地操作P4~P7,可以编写一些宏定义或函数:  ```c // 定义位操作宏,方便单独控制某个引脚 #define P40 P4_0  // P4.0引脚 #define P41 P4_1  // P4.1引脚 // 以此类推,可以定义P4~P7的所有引脚  // 示例:控制P4.0引脚输出高低电平 void Set_P40_Output(unsigned char level) {     if(level)         P40 = 1;  // 输出高电平     else         P40 = 0;  // 输出低电平 }  // 读取P4.0引脚输入值 unsigned char Read_P40_Input(void) {     return P40;  // 返回P4.0引脚当前电平 } ```  ### 4. 调试技巧  在调试时,可以使用以下方法验证P4~P7端口是否正常工作:  ```c void Debug_Port_Test(void) {     // 测试P4.0输出功能     P40 = 1;  // 输出高电平     delay_ms(500);  // 延时500ms     P40 = 0;  // 输出低电平     delay_ms(500);          // 测试P5.0输入功能     if(P50 == 1)     {         // 处理P5.0为高电平的情况     }     else     {         // 处理P5.0为低电平的情况     } } ```  通过以上方法,你可以在调试程序时像操作P0~P3一样方便地使用P4~P7端口。需要注意的是,不同的开发环境可能对特殊功能寄存器的显示方式略有不同,具体操作请参考你使用的开发工具文档。
回复

使用道具 举报

ID:1137639 发表于 2025-7-1 10:01 | 显示全部楼层
在STC8H8K64U单片机中,P4~P7端口默认是不显示在调试窗口的,需要通过特殊设置才能像P0~P3一样方便操作。以下是具体的实现方法:  ### 1. 端口映射与初始化  首先需要通过配置相关特殊功能寄存器(SFR)来启用P4~P7端口,并进行初始化:  ```c #include <STC8H8K64U.h>  // 端口初始化函数 void Port_Init(void) {     // 使能P4~P7端口     P4M0 = 0x00;  // 设置P4口模式     P4M1 = 0x00;     P5M0 = 0x00;  // 设置P5口模式     P5M1 = 0x00;     P6M0 = 0x00;  // 设置P6口模式     P6M1 = 0x00;     P7M0 = 0x00;  // 设置P7口模式     P7M1 = 0x00;          // 根据实际需求配置每个端口的输入/输出方向     // 例如: P4.0设置为输出     P4M0 |= 0x01;  // 推挽输出     P4M1 &= ~0x01;          // 其他端口配置... } ```  ### 2. 在调试窗口显示P4~P7  要在STC-ISP或其他调试工具中显示P4~P7端口,需要修改调试配置文件或使用特殊指令。以STC-ISP为例:  1. 打开STC-ISP软件,连接好单片机 2. 进入"调试"选项卡 3. 在"特殊功能寄存器显示"区域,手动添加P4~P7的寄存器地址:    - P4: E8H    - P5: CCH    - P6: D8H    - P7: F0H  4. 勾选这些寄存器使其显示在调试窗口中  ### 3. 方便操作P4~P7端口的方法  为了像操作P0~P3一样方便地操作P4~P7,可以编写一些宏定义或函数:  ```c // 定义位操作宏,方便单独控制某个引脚 #define P40 P4_0  // P4.0引脚 #define P41 P4_1  // P4.1引脚 // 以此类推,可以定义P4~P7的所有引脚  // 示例:控制P4.0引脚输出高低电平 void Set_P40_Output(unsigned char level) {     if(level)         P40 = 1;  // 输出高电平     else         P40 = 0;  // 输出低电平 }  // 读取P4.0引脚输入值 unsigned char Read_P40_Input(void) {     return P40;  // 返回P4.0引脚当前电平 } ```  ### 4. 调试技巧  在调试时,可以使用以下方法验证P4~P7端口是否正常工作:  ```c void Debug_Port_Test(void) {     // 测试P4.0输出功能     P40 = 1;  // 输出高电平     delay_ms(500);  // 延时500ms     P40 = 0;  // 输出低电平     delay_ms(500);          // 测试P5.0输入功能     if(P50 == 1)     {         // 处理P5.0为高电平的情况     }     else     {         // 处理P5.0为低电平的情况     } } ```  通过以上方法,你可以在调试程序时像操作P0~P3一样方便地使用P4~P7端口。需要注意的是,不同的开发环境可能对特殊功能寄存器的显示方式略有不同,具体操作请参考你使用的开发工具文档。
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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