strait 发表于 2023-5-26 13:45:41

STC8H数据手册中例程的问题



14.6.16 定时器 2(16 位自动重载),用作定时
C 语言代码
//测试工作频率为 11.0592MHz
#include "stc8h.h"
#include "intrins.h"
void TM2_Isr() interrupt 12
{
P10 = !P10;
//测试端口
}
void main()
{
P_SW2 |= 0x80;
//使能访问 XFR
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
T2L = 0x66;
//65536-11.0592M/12/1000
T2H = 0xfc;
AUXR = 0x10;
//启动定时器
IE2 = ET2;
//使能定时器中断
EA = 1;
while (1);
}


ET2在头文件中没有定义,只好自己写了一条语句。是我的头文件版本太低么?奇怪。



32G12K128 发表于 2023-5-26 16:19:46


下载软件上有定时器计算器,可以按照您的需求设置并产生中断:

strait 发表于 2023-5-29 17:03:35

本帖最后由 strait 于 2023-5-29 17:14 编辑

收到。不过数据手册中的例程还是有问题的。并且不只一处。

另外,下载器给出的例程虽然很清楚,但是忘记开总中断了。
应该加上一句 EA = 1; //使能总中断

zhp 发表于 2023-5-31 09:26:53

strait 发表于 2023-5-29 17:03
收到。不过数据手册中的例程还是有问题的。并且不只一处。

另外,下载器给出的例程虽然很清楚,但是忘记开 ...

一般写程序,总中断EA不会在各个外设的初始化函数里面设置
而是会将所有的外设都初始化完成后,最后再使能EA
页: [1]
查看完整版本: STC8H数据手册中例程的问题