标题: STC单片机定时器2的使用问题 头文件STC15.H不能编译定时器2的寄存器 [打印本页]

作者: Jang    时间: 2023-8-2 17:27
标题: STC单片机定时器2的使用问题 头文件STC15.H不能编译定时器2的寄存器
遇到一个很尴尬的事情;
用STC15W204S的定时器2,头文件用STC15.H不能编译定时器2的寄存器,如果用REG52.H又没有P5的IO口。
这个单片机有定时器0和定时器2,程序里两个都用上了,P5的IO也用上了,为什么STC官方的头文件没有定时器2的定义?各位大神,这种怎么解决?


作者: wulin    时间: 2023-8-2 20:39


作者: Jang    时间: 2023-8-3 07:57
wulin 发表于 2023-8-2 20:39

我就是用的这个stc15.h的头文件,但是里面没有定时器2的定义
作者: a825563619    时间: 2023-8-3 09:49
#include <STC15F2K60S2.H>
作者: 河边洗脚人    时间: 2023-8-3 10:21
把缺的寄存器,按照头文件定义的寄存器的方式,把寄存器的地址补上去
作者: yzwzfyz    时间: 2023-8-3 11:32
如果能明白【.h】文件的意义,则用不用它都无所畏。
当KELL提示不认识的字符串时,自己可以给它定义一下。
你的【.h】文件失灵,多为文件引用的不准确。
作者: wulin    时间: 2023-8-3 12:00
Jang 发表于 2023-8-3 07:57
我就是用的这个stc15.h的头文件,但是里面没有定时器2的定义

不是头文件中没有定时器2的相关寄存器定义,而是楼主用错相关寄存器名称,当然找不到。这个不能想当然自定义,除非高手能做到。




作者: Jang    时间: 2023-8-3 17:21
wulin 发表于 2023-8-3 12:00
不是头文件中没有定时器2的相关寄存器定义,而是楼主用错相关寄存器名称,当然找不到。这个不能想当然自 ...

感谢!正如大师所言。只需要控制两个寄存器就可以用了。附上程序,方便后人。
  1. #include<stc15.h>                                  
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uint numt1;
  6. uchar flag;
  7. void init()                                                           /*************设置计时器2重载初值*****************/
  8. {       
  9.    T2L =(65536-50000)/256;
  10.    T2H =(65536-50000)/256;
  11.    AUXR|= 0X10;           //计时器2启动运行
  12.    IE2|=0X04;             //启用定时器2中断
  13.    EA=1;                 //打开全局中断开关
  14. }
  15. void main()
  16. {
  17.    init();
  18.    numt1=0;
  19.    flag=0;
  20. while(1);
  21. }
  22. void T2_time()interrupt 12
  23. {
  24.    numt1++;
  25.    if(numt1>100)
  26.    {
  27.    flag=1;
  28.    AUXR&=0X00;            //计时器2停止运行
  29.    numt1=0;
  30.    }       
  31. }
复制代码




作者: coody_sz    时间: 2023-8-3 18:05
STC官方的头文件一定会有定义,否则那么多官方的例子怎么编译?
寄存器名字不同而已。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1