OpenEdv-开源电子网

标题: STC15定时器的问题,求助 [打印本页]

作者: donkey    时间: 2016-12-1 14:32
标题: STC15定时器的问题,求助
#define MAIN_Fosc                11059200L        //定义主时钟
#include        "15W4KxxS4.H"

#define  uint unsigned int  
#define  uchar unsigned char  

#define T1MS (65536-MAIN_Fosc/1000)

/********************************************
引脚别名定义
*********************************************/
sbit LED_R=P0^6;                 //三色指示灯之红色LED用IO口P06       

uchar cnt = 0;

void Timer0Init(void)
{
        AUXR = 0x80;                    //定时器0为1T模式
        TMOD &= 0xF8;                   //定时器0为16位自动重装模式
        TMOD |= 0x08;                   //定时器0为16位自动重装模式
        TL0 = T1MS;            
        TH0 = T1MS >> 8;
        TR0 = 1;                        //定时器开始计时
        ET0 = 1;                        //使能定时器0中断
}

void timer0_int (void) interrupt 1
{
        cnt++;

        if(cnt ==1000)                                       //定时的是1ms进一次中断,但是为什么我这里写1000灯就不亮了??????????                        
        {
    LED_R = ~LED_R;      //点亮红色指示灯
                cnt = 0;
        }       
}

//主函数
int main()
{
/////////////////////////////////////////////////
//注意: STC15W4K32S4系列的芯片,上电后所有与PWM相关的IO口均为
//      高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用
//相关IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
//        P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
/////////////////////////////////////////////////
        P0M1 = 0;        P0M0 = 0;        //设置P0.0~P0.7为准双向口
        P1M1 = 0;        P1M0 = 0;        //设置P1.0~P1.7为准双向口
        P2M0 = 0;        P2M1 = 0;        //设置P2.0~P2.7为准双向口
        P3M1 = 0;        P3M0 = 0;        //设置P3.0~P3.7为准双向口
        P4M1 = 0;        P4M0 = 0;        //设置P4.0~P4.7为准双向口
        P5M1 = 0;        P5M0 = 0;        //设置P5.0~P5.7为准双向口
       
        Timer0Init();
        EA = 1;          //使能总中断
  while(1);
}



作者: tismily    时间: 2016-12-1 14:32
char   cnt;   这个  char是8位   就是说最大是256    而你的是cnt是1000,   就是说cnt加不到1000.     
作者: donkey    时间: 2016-12-1 15:12
cnt 数据类型是 uchar......
作者: Linuxjava    时间: 2016-12-13 16:44
定时器和串口通信你搞懂了吗

作者: janvon    时间: 2016-12-14 17:18
uint cnt
作者: donkey    时间: 2017-1-16 08:57
tismily 发表于 2016-12-1 14:32
char   cnt;   这个  char是8位   就是说最大是256    而你的是cnt是1000,   就是说cnt加不到1000.

三克油
作者: donkey    时间: 2017-1-16 08:57
donkey 发表于 2016-12-1 15:12
cnt 数据类型是 uchar......

三克油
作者: donkey    时间: 2017-1-16 08:57
Linuxjava 发表于 2016-12-13 16:44
定时器和串口通信你搞懂了吗

已解决,谢谢
作者: donkey    时间: 2017-1-16 08:57
janvon 发表于 2016-12-14 17:18
uint cnt

嗯嗯,三克油




欢迎光临 OpenEdv-开源电子网 (http://47.111.11.73/) Powered by Discuz! X3.4