找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4704|回复: 16
收起左侧

用一个按钮实现开关单片机MCU

[复制链接]
ID:103131 发表于 2021-4-23 18:18 | 显示全部楼层 |阅读模式
    我用一个人按钮开关机,我关机,PCON = 0X02,可是到了唤醒设备就没有反应了,芯片是STC12,请各位大神回答
回复

使用道具 举报

ID:824490 发表于 2021-4-23 23:45 | 显示全部楼层
http://www.51hei.com/bbs/dpj-203511-1.html
给你参考一下,希望能帮到你。

评分

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

查看全部评分

回复

使用道具 举报

ID:103131 发表于 2021-4-24 09:05 | 显示全部楼层
名字不是重点 发表于 2021-4-23 23:45
http://www.51hei.com/bbs/dpj-203511-1.html
给你参考一下,希望能帮到你。

不用电路吧,我只要按钮控制CPU
回复

使用道具 举报

ID:879348 发表于 2021-4-24 09:13 | 显示全部楼层
要开外部中断才能唤醒
回复

使用道具 举报

ID:824490 发表于 2021-4-24 09:14 | 显示全部楼层
goldbirderman 发表于 2021-4-24 09:05
不用电路吧,我只要按钮控制CPU

不用电路?那你还搞什么PCON = 0X02?直接一个开关控制电源得了。
回复

使用道具 举报

ID:103131 发表于 2021-4-24 09:56 | 显示全部楼层
名字不是重点 发表于 2021-4-24 09:14
不用电路?那你还搞什么PCON = 0X02?直接一个开关控制电源得了。

NOP() NOP()  PCON NOP() NOP()
回复

使用道具 举报

ID:103131 发表于 2021-4-24 09:57 | 显示全部楼层
goldbirderman 发表于 2021-4-24 09:05
不用电路吧,我只要按钮控制CPU

你知不知道这样是什么意思?
回复

使用道具 举报

ID:103131 发表于 2021-4-24 09:58 | 显示全部楼层
名字不是重点 发表于 2021-4-24 09:14
不用电路?那你还搞什么PCON = 0X02?直接一个开关控制电源得了。

是什么意思?
回复

使用道具 举报

ID:403593 发表于 2021-4-24 10:33 | 显示全部楼层
建议你先找相应的例程,然后在例程上改,stc的下载软件上都有
回复

使用道具 举报

ID:155507 发表于 2021-4-24 10:39 | 显示全部楼层
用一个人按钮开关在 P3.2 INT0唤醒测试程序

  1. #include "reg51.h"
  2. #include "intrins.h"

  3. //External interrupt0 service routine
  4. void exint0() interrupt 0           //(location at 0003H)
  5. {
  6. }

  7. void main()
  8. {
  9.     IT0 = 1;                        //set INT0 int type (1:Falling 0:Low level)
  10.     EX0 = 1;                        //enable INT0 interrupt
  11.     EA = 1;                         //open global interrupt switch

  12.     while (1)
  13.     {
  14.         INT0 = 1;                   //ready read INT0 port P3.2
  15.         while (!INT0);              //check INT0
  16.         _nop_();
  17.         _nop_();
  18.         PCON = 0x02;                //MCU power down
  19.         _nop_();
  20.         _nop_();
  21.         P1++;
  22.     }
  23. }



复制代码
回复

使用道具 举报

ID:889094 发表于 2021-4-24 11:21 | 显示全部楼层
唤醒单片机,是空闲状态还是休眠状态?不管哪个状态都是需要中断唤醒或RST唤醒,当然RST是重启了
中断唤醒需要设置,需要有进入休眠或空闲的指令,需要有唤醒的中断进入

评分

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

查看全部评分

回复

使用道具 举报

ID:889094 发表于 2021-4-24 11:22 | 显示全部楼层

最好的方法是看手册,官方手册上面说的还是挺细致的
回复

使用道具 举报

ID:390416 发表于 2021-4-24 15:21 | 显示全部楼层
回复

使用道具 举报

ID:103131 发表于 2021-4-26 15:07 | 显示全部楼层
birdzhyli 发表于 2021-4-24 11:22
最好的方法是看手册,官方手册上面说的还是挺细致的

请问这个怎样唤醒?

void main()
{
    IT0 = 1;                        //set INT0 int type (1:Falling 0:Low level)
    EX0 = 1;                        //enable INT0 interrupt
    EA = 1;                         //open global interrupt switch

    while (1)
    {
        INT0 = 1;                   //ready read INT0 port
        while (!INT0);              //check INT0
        _nop_();
        _nop_();
        PCON = 0x02;                //MCU power down
        _nop_();
        _nop_();
        P1++;
    }
}
回复

使用道具 举报

ID:584814 发表于 2021-4-26 17:23 | 显示全部楼层
疑似长眠不醒的样子。
首先你要确定用什么方式唤醒,一般有定时器或中断或都用。启动专用的定时器就是到时间就醒,中断则必须有相应的中断事件比如按键发生才会醒。详见器件手册,如果是STC的其烧录软件里也自带程例。

评分

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

查看全部评分

回复

使用道具 举报

ID:889094 发表于 2021-4-26 20:01 | 显示全部楼层
goldbirderman 发表于 2021-4-26 15:07
请问这个怎样唤醒?

void main()

这个看着像手册上的示例,while(1)中进入休眠,遇到中断会醒一下,醒来给P1++,估计是让led灯什么的变化,然后循环继续休眠,估计应该是某个按键接的外部中断,每按一次P1输出变化
应该就是这个样子的
回复

使用道具 举报

ID:889094 发表于 2021-4-26 20:03 | 显示全部楼层
goldbirderman 发表于 2021-4-26 15:07
请问这个怎样唤醒?

void main()

应该是按一下休眠,再按一下醒过来,再按再休眠
中间那个while(!INT0)也是判断等待中断的,INT0来一个高电平就过去了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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