智能车制作
标题:
千年不遇奇葩问题 请大神高手 支招解决,小弟不胜感激!!!!!!
[打印本页]
作者:
hi棠
时间:
2014-3-1 14:37
标题:
千年不遇奇葩问题 请大神高手 支招解决,小弟不胜感激!!!!!!
本帖最后由 hi棠 于 2014-3-1 14:44 编辑
一个简单的定时器 程序 想 通过中断 读一些 数据和清一些标志位 ,但是 奇葩的事情 就这样发生了 ,当在中断中 清标志位 或给全局变量赋值时 单片机就自动复位。调了 两天还是不知何解,求帮助!
[attach]56313[/attach]
主函数
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#include "sci.h"
#include "TIM.h"
void main(void) {
/* put your own code here */
// SCIInit();
initPIT();
DDRB = 0xff;
EnableInterrupts;
for(;;) {
_FEED_COP(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
定时器中断
#include "TIM.h"
#include "sci.h"
extern uint8 tempR = 0;
extern uint8 tempL = 0;
static uint8 counflag = 0;
//initPIT:X128定时器0初始化函数------------------------------------------*
//功 能: *
// 8位计数器分频1us的时基 *
//参 数:无 * //返 回:无 *
//说 明: *
// 最大定时时间为65535us
//------------------------------------------------------------------------*
void initPIT(void)
{
// PITCFLMT|= 0x83; /*0x83=1(PITE)000 0011(PFLMT[1:0])
ITE:使能PITPFLMT强制加载8位计数器值*/
PITCFLMT_PITE = 0; //关闭PIT模块
PITCE |= 0x01; /*使能定时器0,开始定时*/
PITMUX &= 0xfe; /*定时器0对应8位计数器0*/
PITMTLD0 = 8-1; //设定8-bit MICRO Timer0寄存器,它每次从40降到0,花费时间为40*0.025=1us
PITLD0 =TIMING*1000-1; //定时周期=TIMING ms
PITINTE|= 0x01; /*使能定时器0的time-out中断*/
PITFLT |=0x01; //强制加载 16定时器的值
PITCFLMT_PITE = 1; //关闭PIT模块
}
/*定时器0超时中断函数*/
#pragma CODE_SEG NON_BANKED
void interrupt 66 PIT0_RE(void)
{
static uint8 tempew ;
PACTL_PAEN=0; // 输入脉冲计数禁止
// PORTB=PACNT;
// tempL = PACNT;
// tempR = PORTA;
PHELCONRST = 1;
PACNT=0X00; // 脉冲数据寄存器清零
PACTL_PAEN=1; // 输入计数允许
PITTF_PTF0 = 1; /*清除中断标志位 必须清 */
PHELCONRST = 0;
counflag = 1;
}
大家看看有木有问题啊
作者:
hi棠
时间:
2014-3-1 15:14
有没有大神指导一下啊
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2