IE2 = ET3; //使能定时器中断???
本帖最后由 380091044 于 2023-11-27 21:34 编辑IE2 = ET3; //使能定时器中断
ET3不是IE2的一个位吗?怎么可以这样直接赋值???
应该是#define
你跳进去看一下
以后问问题,将来龙去脉写清楚
从哪来的,你编译下可以吗 ?
如从库函数来,那就写明这个库函数从哪来的,将完整的部分程序贴出来,
大家就好帮忙了,否则猜,累
神农鼎 发表于 2023-11-27 21:24
以后问问题,将来龙去脉写清楚
感谢提醒,这个是库里面也有的,手册里面也见到了 380091044 发表于 2023-11-27 21:33
感谢提醒,这个是库里面也有的,手册里面也见到了
你可能是库的数据手册,STC8H芯片手册没这个
你把完整的贴上来,就是工程师的做法
神农鼎 发表于 2023-11-27 21:44
你可能是库的数据手册,STC8H芯片手册没这个
你把完整的贴上来,就是工程师的做法
...
有的 //看到你贴的图了:
#include "reg51.h"
#include "intrins.h"
sfr T4T3M = 0xd1;
sfr T4L = 0xd3;
sfr T4H = 0xd2;
sfr T3L = 0xd5;
sfr T3H = 0xd4;
sfr T2L = 0xd7;
sfr T2H = 0xd6;
sfr AUXR = 0x8e;
sfr IE2 = 0xaf;
#define ET2 0x04
#define ET3 0x20
#define ET4 0x40
sfr AUXINTIF =0xef;
#define T2IF 0x01
#define T3IF 0x02
#define T4IF 0x04
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xc9;
sfr P5M0 = 0xca;
sbit P10 = P1^0;
void TM3_Isr() interrupt 19
{
P10 = !P10; //测试端口
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
T3L = 0x66; //65536-11.0592M/12/1000
T3H = 0xfc;
T4T3M = 0x08; //启动定时器
IE2 = ET3; //使能定时器中断
EA = 1;
while (1);
}
#define ET2 0x04
神农鼎 发表于 2023-11-28 09:33
#define ET2 0x04
是ET3值等于0x20,把IE2的位5置1,不是ET2 之前踩过这个 范例程序的坑,,太相信这个程序了,,后来在写用范例程序的时候,还是要过一边代码。这个范例程序作为测试还行,进入到生产的时候还是要多看看。