標(biāo)題: STC單片機定時器2的使用問題 頭文件STC15.H不能編譯定時器2的寄存器 [打印本頁]

作者: Jang    時間: 2023-8-2 17:27
標(biāo)題: 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 發(fā)表于 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】文件的意義,則用不用它都無所畏。
當(dāng)KELL提示不認識的字符串時,自己可以給它定義一下。
你的【.h】文件失靈,多為文件引用的不準(zhǔn)確。
作者: wulin    時間: 2023-8-3 12:00
Jang 發(fā)表于 2023-8-3 07:57
我就是用的這個stc15.h的頭文件,但是里面沒有定時器2的定義

不是頭文件中沒有定時器2的相關(guān)寄存器定義,而是樓主用錯相關(guān)寄存器名稱,當(dāng)然找不到。這個不能想當(dāng)然自定義,除非高手能做到。




作者: Jang    時間: 2023-8-3 17:21
wulin 發(fā)表于 2023-8-3 12:00
不是頭文件中沒有定時器2的相關(guān)寄存器定義,而是樓主用錯相關(guān)寄存器名稱,當(dāng)然找不到。這個不能想當(dāng)然自 ...

感謝!正如大師所言。只需要控制兩個寄存器就可以用了。附上程序,方便后人。
  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()                                                           /*************設(shè)置計時器2重載初值*****************/
  8. {       
  9.    T2L =(65536-50000)/256;
  10.    T2H =(65536-50000)/256;
  11.    AUXR|= 0X10;           //計時器2啟動運行
  12.    IE2|=0X04;             //啟用定時器2中斷
  13.    EA=1;                 //打開全局中斷開關(guān)
  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. }
復(fù)制代碼




作者: coody_sz    時間: 2023-8-3 18:05
STC官方的頭文件一定會有定義,否則那么多官方的例子怎么編譯?
寄存器名字不同而已。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1