找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4216|回复: 14
收起左侧

请教各位,关于STC8H系列单片机的keil c的教程

[复制链接]
ID:227818 发表于 2021-9-26 10:00 | 显示全部楼层 |阅读模式
请教各位,现在有没有基于STC8H系列单片机的keil c教程,谢谢。
回复

使用道具 举报

ID:227818 发表于 2021-9-26 13:12 | 显示全部楼层
厂家的技术资料,看得实在头大,想学学高级PWM的用法。
回复

使用道具 举报

ID:262 发表于 2021-9-26 16:26 | 显示全部楼层
这个除了啃技术资料没有别的办法,教程一般只有89c52的
回复

使用道具 举报

ID:624769 发表于 2021-9-26 16:26 来自触屏版 | 显示全部楼层
stc的pwm范例算写的不错的了。结合寄存器说明,和范例演练一边,再尝试改动一下,就差不多了,剩下的就是活用了。
回复

使用道具 举报

ID:401564 发表于 2021-9-26 16:35 | 显示全部楼层
STC的PWM和比较器在数据手册是上最让人不爽的
说半天都不知道在说什么
但如果你要用这个功能,除了认真的看数据手册,就没有别的办法了
所谓的教程在数据手册中有的,你抄就行了
看这个数据手册不要猛一下随便看一个章节,一定要从开始一点一点的看完,还有就是一定要有学习板,一边学习一边烧录验证,其实不用多长时间就可以学好的
回复

使用道具 举报

ID:227818 发表于 2021-9-26 16:52 | 显示全部楼层
关键是我用了上边的一个例程,就是用PWM测一个脉冲的高电平的宽度,没有测出来。所以想找一本书,系统看下
回复

使用道具 举报

ID:227818 发表于 2021-9-26 16:54 | 显示全部楼层
#include "reg51.h"
#include "intrins.h"
sfr P_SW2 = 0xba;
sfr P1M0 = 0x92;
sfr P1M1 = 0x91;
sfr P3M0 = 0xb2;
sfr P3M1 = 0xb1;
sfr P5M0 = 0xca;
sfr P5M1 = 0xc9;
#define PWMA_CR1 (*(unsigned char volatile xdata *)0xfec0)
#define PWMA_IER (*(unsigned char volatile xdata *)0xfec4)
#define PWMA_SR1 (*(unsigned char volatile xdata *)0xfec5)
#define PWMA_CCMR1 (*(unsigned char volatile xdata *)0xfec8)
#define PWMA_CCMR2 (*(unsigned char volatile xdata *)0xfec9)
#define PWMA_CCER1 (*(unsigned char volatile xdata *)0xfecc)
#define PWMA_CCR1 (*(unsigned int volatile xdata *)0xfed5)
#define PWMA_CCR2 (*(unsigned int volatile xdata *)0xfed7)
void main()
{
P1M0 = 0x00;
P1M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P_SW2 = 0x80;

PWMA_CCER1 = 0x00;
PWMA_CCMR1 = 0x01; //CC1为输入模式,且映射到TI1FP1上
PWMA_CCMR2 = 0x02; //CC2为输入模式,且映射到TI1FP2上
PWMA_CCER1 = 0x11; //使能CC1/CC2上的捕获功能
PWMA_CCER1 |= 0x00; //设置捕获极性为CC1的上升沿
PWMA_CCER1 |= 0x20; //设置捕获极性为CC2的下降沿
PWMA_CR1 = 0x01;
PWMA_IER = 0x04; //使能CC2捕获中断
EA = 1;
while (1);
}
void PWMA_ISR() interrupt 26
{
unsigned int cnt;
if (PWMA_SR1 & 0x04)
{
PWMA_SR1 &= ~0x04;
cnt = PWMA_CCR2 - PWMA_CCR1; //差值即为高电平宽度
}
}
回复

使用道具 举报

ID:624769 发表于 2021-9-26 19:27 | 显示全部楼层
Y_G_G 发表于 2021-9-26 16:35
STC的PWM和比较器在数据手册是上最让人不爽的
说半天都不知道在说什么
但如果你要用这个功能,除了认真的 ...

但,就算是PWM和比较器,如果和WCH的手册比起来,你会感动到流泪…… , 我第一次看WCH的手册,愣是连熟的不能再熟的SPI都不会用了……,更别说PWM了……
回复

使用道具 举报

ID:227818 发表于 2021-9-26 19:48 | 显示全部楼层
这个例程,不知道为什么中断不产生。要是中断能产生就好办了。
回复

使用道具 举报

ID:624769 发表于 2021-9-26 20:24 | 显示全部楼层
newlined 发表于 2021-9-26 19:48
这个例程,不知道为什么中断不产生。要是中断能产生就好办了。

如果你用的是 STC8H 的单片机,我觉得你最好还是用STC8H.H 的头文件。以及,在芯片选项里选择 STC8H的芯片,我STC89系列入门,一直用REG51, 很长一段时间 STC15W 也用的 REG51 芯片选的 AT89 都没什么问题,直到有一次,怎么也找不出原因,然后,实在没事干,换了头文件,和芯片选择之后,就莫名其妙没问题了之后,后来不管用什么单片机,我一定遵守,选对芯片库,用对头文件。
回复

使用道具 举报

ID:419909 发表于 2021-9-26 20:42 | 显示全部楼层
新型号。网上资源例程肯定是比较少的。不过。如果你是从15W系列过来的话。对于新型号,一般看一下说明书。基本也很快可以上手的。主要是寄存器。参考厂家例程再修改,大部分很快就能用上。
回复

使用道具 举报

ID:227818 发表于 2021-9-27 13:41 | 显示全部楼层
本帖最后由 newlined 于 2021-9-27 14:38 编辑
188610329 发表于 2021-9-26 20:24
如果你用的是 STC8H 的单片机,我觉得你最好还是用STC8H.H 的头文件。以及,在芯片选项里选择 STC8H的芯 ...

我换成了"STC8H.H"头文件,还是不行,您说的"芯片选择"是指的在KEIL C 中 新建工程时,选芯片的操作码?我也试过,不行,不知道哪里出了问题.我以为程序应该这样运行:出现高电平开始计数,到下降沿产生中断.然后看下计数器记了多少脉冲.关键是出现下降沿后PWM的中断不响应.在这里顺便问下,主频设为24M,测一个160uS的高电平应该可以测到吧.
回复

使用道具 举报

ID:227818 发表于 2021-9-27 13:43 | 显示全部楼层
wfqxgw 发表于 2021-9-26 20:42
新型号。网上资源例程肯定是比较少的。不过。如果你是从15W系列过来的话。对于新型号,一般看一下说明书。 ...

我的基础差,15系列的还没有搞明白,现在又用8H的了
回复

使用道具 举报

ID:624769 发表于 2021-9-27 19:46 | 显示全部楼层
newlined 发表于 2021-9-27 13:43
我的基础差,15系列的还没有搞明白,现在又用8H的了

我觉得吧,凡事循序渐进。

你可以在STC ISP上,把 呼吸灯那个范例弄下来, 跑一下,然后,尝试,更改呼吸速度,这一圈下来,对PWM有个比较直观认识之后,再啃一下你的手册,可能,理解会不一样。
回复

使用道具 举报

ID:227818 发表于 2021-9-28 00:00 | 显示全部楼层
188610329 发表于 2021-9-27 19:46
我觉得吧,凡事循序渐进。

你可以在STC ISP上,把 呼吸灯那个范例弄下来, 跑一下,然后,尝试,更改 ...

好的,谢谢您的回复。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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