NewNew 发表于 2009-10-9 19:44:48

NEC睡眠与唤醒

版主好!各位好!能否给一个NEC单片机睡眠与唤醒的例程!晶振部分介绍的比较复杂,看不明白,请讲解一下谢谢!

mcu5i51 发表于 2009-10-10 07:48:05

楼主精力旺盛,同时学习多种芯片,哈哈,我喜欢!

9222内部RC和240K唤醒实例for IAR4.60
在工程上提取的,没有编译测试
#include    <io78f9222.h>
#include    <intrinsics.h>
#include    <migration.h>

//0x0080赋值可选字节和保护字节
__root const char optbyte[] @0x80 = {0x9d,0xff};

void TH1_Init()
//系统中断,每秒100Hz
{
        CMP01 = 19;                                        //1880 / 19 = 100Hz
        TMHMD1 = 0x80 | 0x50;                //定时间隔方式,1.88K内部RC振荡器
        MK0 &= ~0x10;                                //允TH1中断
}

int main( void )
{
        unsigned int ti;
       
        PCC = 0x2;
        PPCC = 0x02;

        TH1_Init();       
        _EI ();

        //WDTM = 0x10;        //停止看门狗
        //prn(888);
        while(1)
        {
                Wait(50);
                ti ++;
                prn(SrartAD());
        }
       
}

/*
#pragma   vector=INTP0_vect            //INT0 中断
__interrupt void INT0(void)
{
}
*/

volatile unsigned char SysTime;
#pragma   vector=INTTMH1_vect            //TH1 定时中断
__interrupt void TH1(void)
{
        LCD_DRV();
        if(SysTime) SysTime--;
        WDTE = 0xac;                //喂狗
}
void Wait(unsigned char tim)
{
        SysTime = tim;
        while(SysTime)
        {
                _STOP();
                //_HALT();
        }
}

NewNew 发表于 2009-10-10 18:26:14

谢谢讲解,我仿真的时候执行STOP()后怎么还在继续走指令,怎么没有进入睡眠呀!

mcu5i51 发表于 2009-10-10 21:32:47

请烧到片子里试试,IO要有一个确认的状态,电流在30uA一下的是停止状态,电流在400uA时是空闲状态,电流大于1mA没有睡眠,具体电流看实验的芯片数据
页: [1]
查看完整版本: NEC睡眠与唤醒