打印
[技术问答]

LB1012触控板遇到Timer0定时器中断不在想要的频率上,网友chi'...

[复制链接]
896|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
硬件是LB1012触控板 MCU:SC92F8462B ,用引出脚P25(板上丝印P03)来指示中断频率.Fsys=Fosc/2
我想要的是100Hz的中断,实际上测量引出P25脚波形是396Hz,也就是中断是800Hz,问题在哪里,望网友赐教.



程序如下:


#include "SC92F846XB_C.h"


volatile uint8_t timer0_counter = 0 ;
//=======定时器0程序区============
void timer0_init(void)
{
  TMCON = (TMCON&0xfe)|(0<<0); //bit0: 0为Fsys/12,1为Fsys
  TMOD = TMOD&0xfe;                                           //设置定时0,工作方式1
  TH0=(65536-10000)/256;
  TL0=(65536-10000)%256;
  TF0 = 0;                                                        //清中断标志
  TR0=0;                                                                      //关定时器0
  ET0=1;                                                                      //使能定时器0中断
        TR0=1;
  IPT0 = 1;                   //优先级高
  EA =1;

}
#define LED1 P25 //悬空,拉高
//========定时器0中断服务程序区===========
void timer0()interrupt 1
{       
  TH0=(65536-10000)/256;
  TL0=(65536-10000)%256;
  if( timer0_counter  == 0)
  {
    LED1 = 0;
    timer0_counter = 1;
  }
  else
  {
    LED1 = 1;
    timer0_counter = 0;
  }
}

main()
{
  P0CON|=0xC0,P1CON|=0xC0,P2CON|=0x0C,P5CON|=0x03;  //SC92F8462B的未引出来的IO口配置
  P0CON = 0xFF;
  P0PH  = 0xFF;
  P2CON = 0xFF;
  P2PH  = 0xFF;
  timer0_init();
  while(1);
}


波形.jpg (152.49 KB )

波形.jpg

烧录.png (59 KB )

烧录.png

使用特权

评论回复

相关帖子

沙发
黄进盛| | 2019-6-29 11:30 | 只看该作者
先测量当前一个周期是多少吧,根据f=1/T,来更改T的大小

使用特权

评论回复
板凳
WoodData| | 2019-7-1 09:18 | 只看该作者
TMOD = TMOD&0xfe;                                           //设置定时0,工作方式1
这里错了。。。
TMOD = 0X01;这样

使用特权

评论回复
地板
WoodData| | 2019-7-1 09:18 | 只看该作者
TMOD = TMOD&0xfe;                                           //设置定时0,工作方式1
这里错了。。。
TMOD = 0X01;这样

使用特权

评论回复
5
YanniChen| | 2019-7-1 11:11 | 只看该作者
你这是工作在定时器模式0, 13位的定时器模式

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

19

帖子

1

粉丝