找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

如何给单片机遥控器加掉电唤醒模式?汇编语言

查看数: 3227 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-9-11 14:14

正文摘要:

遥控器是控制灯的   15f104w单片机芯片 程序是通过反编译改过来的     怎么加入掉电唤醒模式   我试了很多次都没成功 程序里有一段不加入(如图) 遥控成功率就降低很多 ...

回复

ID:123289 发表于 2021-9-13 09:20
不是软件问题!
1、检测出掉电。(电源输入通道上,设置一个电压检测电路)
2、通知到CPU。(例如,使用INT0)
3、对应中断响应后,退出休眠。(大多是自然,退出)
ID:960619 发表于 2021-9-12 10:57
红外遥控唤醒掉电模式,红外接收我接外部中断0脚,进入掉进模式后,唤醒首先是进入外部中断0中断程序关闭该IO口的外部中断,这样该脚就能接收红外解码的功能了,还有将掉电模式标志清0,开机就不会再进入掉电模式。 按关机的话,标志位置1,先打开外部中断0允许中断,再进入掉电模式
ID:401564 发表于 2021-9-12 07:11
418854190 发表于 2021-9-11 21:59
官方提供的INT4中断入口是ORG   0083H    是不是在主程序前加的比它大就行

对呀,这所谓的"向量地址"就是中断的地址,中断被触发后,程序就会跳转到这个地址,执行完中断之后,由RETI返回之前的代码,但不跳过的话,汇编是一条一条指令执行下来,那就是直接进入中断了,虽然说中断不开启,但执行的结果是"未知"的
ID:261025 发表于 2021-9-11 21:59
Y_G_G 发表于 2021-9-11 21:17
你要去看一下这个单片机的中断向量最高地址是多少,不跳过的话,程序一执行就进入中断,进入中断之后就乱,后 ...

官方提供的INT4中断入口是ORG   0083H    是不是在主程序前加的比它大就行
ID:401564 发表于 2021-9-11 21:17
418854190 发表于 2021-9-11 20:12
不习惯用官方的计算器  
加了ORG 100H掉电唤醒正常了之前没加 唤醒后就死机了
现在INT0 INT1 INT2 INT ...

你要去看一下这个单片机的中断向量最高地址是多少,不跳过的话,程序一执行就进入中断,进入中断之后就乱,后果不可知,ORH 100H是一个大概值,反正空间有的是
用汇编要很了解硬件的,而且代码量是很大的,像你这种直接复制的,估计过一段时间再看,基本就是什么思路都找不着了
ID:261025 发表于 2021-9-11 20:12
Y_G_G 发表于 2021-9-11 19:04
用什么"单片机小精灵"呀,STC下载器那有,官方的它不行吗?
MOV PCON,#02H就是掉电了
想要唤醒是要开启中断 ...

不习惯用官方的计算器  
加了ORG 100H掉电唤醒正常了之前没加 唤醒后就死机了
现在INT0 INT1 INT2 INT3 INT4都可以唤醒了
没专门学过编程  都是自己没事琢磨玩的 C语言改不明白 一改就错  汇编还能改改编编   
ID:401564 发表于 2021-9-11 19:04
用什么"单片机小精灵"呀,STC下载器那有,官方的它不行吗?
MOV PCON,#02H就是掉电了
想要唤醒是要开启中断的,你想要哪个唤醒就开启哪个中断
比如,你要外部中断INT0唤醒,
那就:
CLR EI0;这个要先清除
SETB EX0;
SETB  EA;
然后,当外部中断触发之后,就会进入中断程序
还有,ORG 0000H前面不要有指令,main标号前面也要有一个ORG 100H,要跳过中断向量区的
你这程序太乱了...............你应该用C,没事别乱玩汇编
ID:624769 发表于 2021-9-11 17:55
418854190 发表于 2021-9-11 17:11
我发的是没加掉电唤醒的源程序    我试着加掉电唤醒只是led亮了 看电流没有发射就死机了  不知道应该怎么 ...

不是…… 掉电唤醒的定义,你理解么?
你先让单片机关机(自主掉电 PowerDown),然后通过中断触发,单片机又开机,这个过程叫掉电唤醒。掉电唤醒一般是没有程序的,只要开了外部中断,当你执行了ShutDown指令之后,就能通过外部中断唤醒,换句话说,大多的掉电唤醒,都是只有看到关机指令通常是: MOV PCON,#02H , 而没有唤醒指令的,所以,你说你加掉电唤醒“源程序”,啥程序?
ID:261025 发表于 2021-9-11 17:11
188610329 发表于 2021-9-11 15:54
粗看了一遍你的代码,

C01C4:            LCALL    keyscan;  //键值扫描  

我发的是没加掉电唤醒的源程序    我试着加掉电唤醒只是led亮了 看电流没有发射就死机了  不知道应该怎么加
ID:624769 发表于 2021-9-11 15:54
粗看了一遍你的代码,

C01C4:            LCALL    keyscan;  //键值扫描  
                                  JNB      keyflag,C01C4         //若有按键按下
                                  CLR LED;  
                                  LCALL DELAY20MS;
                                  LCALL DELAY20MS;
                                  LCALL    ir_send;  //发送红外编码
                                  JNB KA,$;
                                  JNB KB,$;
                                  LCALL DELAY20MS;
                                  JNB KA,$;
                                  JNB KB,$;
                                CLR      keyflag; //按键标志清零
                                  SETB LED;
                                  SJMP     C01C4      

这里构成了死循环, 单片机会一直周而复始复始的反复执行这段代码. 你LCALL出去的分支,也都有RET回来。也没有找到 类似 MOV  PCON,#02H 这类关机指令; 那么,你为什么需要掉电唤醒呢? 不存在掉电,何来唤醒?

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

Powered by 单片机教程网

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