找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2666|回复: 7
收起左侧

使用STC15W4K系列单片机,进入和唤醒空闲模式

[复制链接]
ID:708768 发表于 2021-3-31 09:59 | 显示全部楼层 |阅读模式
用外部中断三通过下降沿触发中断,能否实现,外部中断三第一次给下降沿,芯片进入空闲模式,第二次给下降沿,芯片退出空闲模式(芯片退出空闲模式的方法是产生任意中断或复位),程序该如何设计,求大神给个思路

回复

使用道具 举报

ID:401564 发表于 2021-3-31 11:11 | 显示全部楼层
这个型号的单片机数据手册里是有例程的,C和汇编都有,你去看一下,自己修改一下就可以了

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:123289 发表于 2021-3-31 12:00 | 显示全部楼层
设立一个寄存器,每次中断+1,如果为奇就进行……,为偶就进行……,明白了吗?想一想。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:230742 发表于 2021-3-31 12:30 | 显示全部楼层
用外部中断最好是用外部中断1,因为这是级别最高。中断3能进入休眠模式,但就唤不醒了。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:584814 发表于 2021-3-31 14:41 | 显示全部楼层
/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC15F4K60S4 系列 INT3下降沿唤醒掉电模式举例--------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966-------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序        */
/* 如果要在文章中应用此代码,请在文章中注明使用了STC的资料及程序        */
/*---------------------------------------------------------------------*/

//本示例在Keil开发环境下请选择Intel的8058芯片型号进行编译
//若无特别说明,工作频率一般为11.0592MHz


#include "reg51.h"
#include "intrins.h"

//-----------------------------------------------

sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;

sfr INT_CLKO = 0x8F;            //外部中断与时钟输出控制寄存器
sbit INT3 = P3^7;               //INT3引脚定义

sbit P10 = P1^0;

//-----------------------------------------
//中断服务程序
void exint3() interrupt 11
{
    P10 = !P10;                 //将测试口取反
   
//  INT_CLKO &= 0xDF;           //若需要手动清除中断标志,可先关闭中断,此时系统会自动清除内部的中断标志
//  INT_CLKO |= 0x20;           //然后再开中断即可
}

//-----------------------------------------------

void main()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;
    P6M0 = 0x00;
    P6M1 = 0x00;
    P7M0 = 0x00;
    P7M1 = 0x00;

    INT_CLKO |= 0x20;           //(EX3 = 1)使能INT3下降沿中断
    EA = 1;

    while (1)
    {
        PCON = 0x02;            //MCU进入掉电模式
        _nop_();                //掉电模式被唤醒后,首先执行此语句,然后再进入中断服务程序
        _nop_();
    }
}
官网的你自己可以找到的

评分

参与人数 1黑币 +20 收起 理由
admin + 20

查看全部评分

回复

使用道具 举报

ID:708768 发表于 2021-3-31 14:42 | 显示全部楼层
啤酒瓶子老大 发表于 2021-3-31 12:30
用外部中断最好是用外部中断1,因为这是级别最高。中断3能进入休眠模式,但就唤不醒了。

我是因为外部中断1占用了,所以用中断3,这个芯片唤醒只需要任意中断出现就可唤醒,假如像楼上根据奇偶进入,如果进入空闲模式后,外部中断三出现中断,可以唤醒吗
回复

使用道具 举报

ID:230742 发表于 2021-3-31 15:32 | 显示全部楼层
D:\接收到的档案\stc15w4k.png
我截个图。
回复

使用道具 举报

ID:230742 发表于 2021-3-31 15:35 | 显示全部楼层
不会发图。
自己看一下STC15.PDF里的186页。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表