神农鼎 发表于 2023-11-27 21:44:31

380091044 发表于 2023-11-27 21:33
感谢提醒,这个是库里面也有的,手册里面也见到了

你可能是库的数据手册,STC8H芯片手册没这个
你把完整的贴上来,就是工程师的做法

380091044 发表于 2023-11-27 21:49:58

神农鼎 发表于 2023-11-27 21:44
你可能是库的数据手册,STC8H芯片手册没这个
你把完整的贴上来,就是工程师的做法
...

有的

神农鼎 发表于 2023-11-28 09:29:58

//看到你贴的图了:

#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);
}






神农鼎 发表于 2023-11-28 09:33:20

#define ET2         0x04

380091044 发表于 2023-11-28 10:15:06

神农鼎 发表于 2023-11-28 09:33
#define ET2         0x04

是ET3值等于0x20,把IE2的位5置1,不是ET2

_奶咖君_ 发表于 2023-12-11 18:01:20

之前踩过这个 范例程序的坑,,太相信这个程序了,,后来在写用范例程序的时候,还是要过一边代码。这个范例程序作为测试还行,进入到生产的时候还是要多看看。

神农鼎 发表于 2023-12-11 20:22:18

cofmilk 发表于 2023-12-11 18:01
之前踩过这个 范例程序的坑,,太相信这个程序了,,后来在写用范例程序的时候,还是要过一边代码。这个范 ...

没用心看 ? 范例程序是对的,你踩啥坑了

_奶咖君_ 发表于 2023-12-12 08:43:48

神农鼎 发表于 2023-12-11 20:22
没用心看 ? 范例程序是对的,你踩啥坑了

单独用肯定是对的啊

只不过如题。这样赋值在使用多个外设的时候不行。这个就是坑啊。


所以范例程序也就是用在对各种资源的测试上,用到项目生产上还是要多注意。




380091044 发表于 2023-12-12 10:05:38

cofmilk 发表于 2023-12-11 18:01
之前踩过这个 范例程序的坑,,太相信这个程序了,,后来在写用范例程序的时候,还是要过一边代码。这个范 ...

仔细看过,赋值形式没见过,

_奶咖君_ 发表于 2023-12-12 10:26:47

380091044 发表于 2023-12-12 10:05
仔细看过,赋值形式没见过,

啊?哦,,咱们说的不是一个事情。。他这里只是一个宏定义了一个数,然后赋值给了这个寄存器。

但是我说的是,如果按照这样赋值 IE2=ET3;虽然可以保证允许T3中断,但同时这个寄存器上的其他位控制的中断则全不关闭。

后来就使用这种方式赋值IE2 |= ET3;
页: 1 [2] 3
查看完整版本: IE2 = ET3; //使能定时器中断???