社区
单片机/工控
帖子详情
51单片机控制,按下停止键,执行到最后能复位,应如何操作?
succed
2004-11-20 05:46:28
我的一个项目,使用的是89C52的单片机,当按下停止键后,程序在执行完了之后要恢复复位状态,应如何做才能实现。写程序用的是C51。谢谢?
...全文
1230
27
打赏
收藏
51单片机控制,按下停止键,执行到最后能复位,应如何操作?
我的一个项目,使用的是89C52的单片机,当按下停止键后,程序在执行完了之后要恢复复位状态,应如何做才能实现。写程序用的是C51。谢谢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
27 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
succed
2004-12-15
打赏
举报
回复
我记得在C语言中,好象符号型和整型是完全相同的。如果是这个原因,那每次都会死机的,不会有时可以正常使用。
ldqmoon
2004-12-12
打赏
举报
回复
是不是和那个feed变量的类型有关?做比较的时候,符号型和非符号型不太一样
succed
2004-12-09
打赏
举报
回复
如果是我的feed的值设的太大的话,系统会复们的更快啊,我想还是哪有问题。不过我现在已经解决了,我不再使用中断了,我在每一个子程序 中分段加上P3_5=!P3_5,在stop中不再P3_5=!P3_5,等待就行了。还省了一个中断。改过之后再没死过机。也不知原来是因为什么?
galle
2004-12-09
打赏
举报
回复
你的看门狗时间是多少?把Feed的初值改小,因为你中断中的程序会影响定时的。
P3_5=!P3_5;改成P3_5=~P3_5;
jnwsh
2004-12-08
打赏
举报
回复
http://www.c51bbs.com/show.aspx?id=48&cid=9
CopperLau
2004-12-07
打赏
举报
回复
NOP
NOP
LJMP ERR
1。在不用的中断中加这个
2。在jmp后加这个
3。在不用的空间中加这个就得了
err是一个软复位..
加寄存器都复位,,
没有带书。。自己看看..
jnwsh
2004-12-07
打赏
举报
回复
c51里我也不会设置陷阱,刚开始学习c51,强烈建议哪位大虾给个例子瞧瞧
ldqmoon
2004-12-06
打赏
举报
回复
最简单的方法:c中插入汇编
或:进入子程后修改堆栈里的值,执行完子程后返回时可以直接跳到任何地方
succed
2004-12-03
打赏
举报
回复
使用C51怎么做陷阱,我不会。我会用汇编做陷阱,直接跳转就行了。怎么用C51来做陷阱和跳回到程序最初始点。可以做到吗?请给出例子。
succed
2004-12-02
打赏
举报
回复
我想当我按下停止键后,当停止操作做完之后进入上电复位的状态,主要是我不想我的程序在执行完我的停止操作之后,再去接着原来没进行完的程序去进行。我要的是停止就先把一些外部设备的状态复位,复位完了,主机就进入初始状态,等待下一次操作。
succed
2004-12-02
打赏
举报
回复
我要的就是按键复位,我使用的是复位电路Max813L,我用的有复位按键。但我希望我的一段程序在执行结束的时候进入上电复位状态。我的这段程序执行时间比较长,最长可达100小时。我希望在我的程序执行期间,不论执行到何处,只要我按下停止键,程序都要进入停止程序,先执行一段代码后,再进入复位操作。我使用的是看门狗,用T1来实现,在T1中断中,每过1.5秒,就取反P3.5,P3.5和813的DI相连。只是复位按键每次都能有效复位,停止按键有时执行到一半会死机,也不知为什么,有效率在80%左右。而且连续执行几次,就死机了。大家看一下我的代码。
void FeedDog(void) interrupt 3 这是我的T1中断程序,由它来喂看门狗
{
TH1=-5000/256;
TL1=-5000%256;
Feed=Feed+1;
if(Feed==150)
{
Feed=0;
P3_5=!P3_5;
}
}
void Stop() /* 停止函数*/
{
uint i;
F0=1;
//P2_4=1;
P2_6=1;
//P2_3=0;
P2_5=0;
//for(i=0;i<10;i++)//我这里要延时1分钟,但我这里只要有定时,系统死机率就会增加
delay(100);
P2_5=1;
//P2_3=1;
P2_2=1;
P2_1=1;
test();
delay(10);
TR1=0;
ET1=0; //停止T1,等待复位
for(i=0;i<600;i++)
{
P3_5=0;//这里是我发现如果我最后将P3_5置0,死机率就会减小
delay(100);
}
EX0=1;
//while(1);
//P3_5=1;
}
大家看一下,我的程序是有问题,还是系统干扰的原因,使我的系统总不能有效复位。
jnwsh
2004-12-02
打赏
举报
回复
陷阱,执行到陷阱后跳转到冷启动或热启动就可以了
没有啥的昵称
2004-12-01
打赏
举报
回复
to: flowercity(小唐"菜")
你说的方法我在以前试过,不太好使,常出错,可能是一些寄存器的值不是初始值的缘故,所以一直不太明白,要是你能实现,可以和我讨论一下!
galle
2004-11-28
打赏
举报
回复
一般来讲应该用一个外部中断来做这个停止键的.如果你的外部中断被使用了,可以使用组合的方式,用个或门,将按键和你现有的中断或起来.然后在中断程序中判断是哪个提出的中断在处理就好了;
ldqmoon
2004-11-28
打赏
举报
回复
怎么看怎么象按键复位.
-------------------------------------------------
所以我设立了停止按键,如果按下停止键,则不论原来在执行什么程序,程序要执行停止过程,停止过程之后,将程序初始化。
-------------------------------------------------
这样的话直接在复位端接个按键不行吗?然后在初始化的时候安排一段程序来处理运行中的复位
你的外围元件除了0809还有什么?
xwdd129
2004-11-25
打赏
举报
回复
其实方法多了,你可以把停止键单独用一个I/O口线,分程序中定时检测这个口线,若为相应电平就延时并回跳不就行了!!
当然用看门狗一样的,同样可以实现!!
succed
2004-11-25
打赏
举报
回复
我现在改用ADC0809了,它可以解决5G14433的问题,只是我对ADC0809不熟,正在学习。
succed
2004-11-24
打赏
举报
回复
另我的电路中,有一个AD采集,我用的是5G14433,要采集的信号在显示为0的时候,传感器电压为在15mv左右,满量程时为19mv左右,量程分300个等级,我用的是tlc2652放大1000倍。由于我的0不是0v,而且我使用的是不能断电保存的cpu89s52,所以我在每次上电时,采集信号为0,在标准状态下,采集为300,只是我不可能每次都核准,所以我在AD和放大器输出加了电位器,通过调节电位器,使仪器显示为300,只是这样同时使设备在0时采集到的电压也不同了,这样在初始化之后,在标准状态下又不能显示为300了。我的想法不知有没有错,应如何解决,谢谢!
succed
2004-11-24
打赏
举报
回复
我的程序不是单进程的,主程序只是初始化之后,根据不同的按键输入,执行不同的程序,主程序只是不停的查询键盘,进入分程序后,则主程序停止查询,执行完了之后,主程序接着查询。在分程序中,有时要开中断,执行中断程序,我用了四个中断,T0,T1,Int0,Int1,其中一个分程序要执行24小时,所以我设立了停止按键,如果按下停止键,则不论原来在执行什么程序,程序要执行停止过程,停止过程之后,将程序初始化。也就是说不要程序执行完之后,再去接着原来的程序执行就行了,同时要初始化。我用的是C写的,在C中可以在中断中跳到程序的开始部分,并初始化各寄存器吗?我现在用的是硬件的看门狗,用了一上IO口,用了一个计时器,在计时器中断中,给出喂狗脉冲。也不知是否合适?
flowercity
2004-11-24
打赏
举报
回复
最近你问了好多问题啊
呵呵
加载更多回复(7)
芯片架构基于RISC-V与Chiplet的DMA高效传输方案:面向高性能计算的数据调度优化
内容概要:本文深入探讨了DMA高效数据传输实现方案在高性能计算芯片领域的
应
用与架构创新,重点分析了缓存一致性DMA、多通道DMA架构及其在数据中心SmartNIC、存算一体芯片和Chiplet互连等场景中的实践。文章结合RISC-V架构,通过Chisel硬件描述语言和C语言驱动代码,展示了多通道DMA
控制
器的设计与实现,涵盖仲裁机制、AXI总线适配、分散-聚集传输模式及中断处理等核心技术,并强调了性能优化与验证方法。
最后
展望了AI调度、光互连、近存计算与安全DMA等未来发展方向。; 适合人群:具备数字电路与计算机体系结构基础,从事芯片设计、嵌入式开发或高性能计算相关工作的研发人员,尤其是有1-5年经验的工程师与研究人员。; 使用场景及目标:①理解DMA在突破“内存墙”和降低系统能耗中的关
键
技术路径;②掌握多通道DMA
控制
器的硬件设计与驱动开发方法;③
应
用于SmartNIC、AI加速器、Chiplet等高性能芯片系统的数据传输架构设计;④为构建高带宽、低延迟、高能效的异构计算平台提供参考。; 阅读建议:此资源融合硬件设计与软件驱动,建议结合Chisel仿真与RISC-V平台实操,重点关注DMA与缓存一致性、异构计算单元的协同机制,并通过性能计数器与错误注入手段进行系统级验证。
高校技术转移办公室人员如何借助区域科技创新数智大脑推动成果转化?.docx
高校技术转移办公室人员如何借助区域科技创新数智大脑推动成果转化?
【顶级EI复现】【最新EI复现】基于共享储能服务的智能楼宇双层优化配置(Matlab代码实现)
内容概要:本文围绕基于共享储能服务的智能楼宇双层优化配置展开研究,通过Matlab代码实现相
应
的数学建模与仿真分析,提出一种结合上层规划与下层运行的协同优化框架,旨在提升智能楼宇能源系统的经济性、能效水平与电网互动能力。研究充分考虑光伏发电、负荷需求、储能充放电等多元因素,采用先进的优化算法(如智能优化算法)对共享储能资源的容量配置与运行调度进行精细化决策,有效降低用能成本,提高可再生能源消纳率,并增强系统运行的稳定性与灵活性。全文涵盖模型构建、算法设计、求解流程及结果验证,具备较高的理论深度与工程
应
用价值; 适合人群:具备电力系统、能源管理、优化算法等相关背景的科研人员、研究生,以及从事智能电网、综合能源系统、建筑节能等领域的工程技术人员; 使用场景及目标:①用于智能楼宇及园区级能源系统的规划与运行优化研究;②支撑共享储能机制下的资源配置、经济调度与商业模式设计;③作为Matlab仿真教学与高水平论文复现的典型案例,帮助深入理解双层优化模型、主从博弈结构及智能算法在能源系统中的
应
用; 阅读建议:建议结合提供的Matlab代码进行同步学习与调试,重点关注上下层模型的耦合关系与迭代求解过程,可进一步拓展至多主体协同、不确定性建模(如风光出力波动)及鲁棒优化等前沿方向开展深化研究。
故障检测基于 KPCA 的故障检测【T2 和 Q 统计指数的可视化】(Matlab代码实现)
内容概要:本文《【故障检测】基于 KPCA 的故障检测【T2 和 Q 统计指数的可视化】(Matlab代码实现)》系统阐述了基于核主成分分析(KPCA)的非线性故障检测方法,重点实现了T²和Q统计量的构建与可视化过程。通过Matlab编程,将高维非线性数据映射至特征空间,提取主成分并建立监控模型,利用T²和Q指数对工业过程中的异常状态进行联合监测与诊断,有效提升了复杂系统中早期故障的识别能力,具有较强的工程实用性与理论参考价值。; 适合人群:适用于具备信号处理、
控制
工程或工业过程监测背景,熟悉Matlab编程语言,并从事故障诊断、智能运维、自动化系统研发等相关工作的研究生、科研人员及工程技术开发者。; 使用场景及目标:①
应
用于化工、电力、制造等流程工业中的关
键
设备状态监控与早期故障预警;②作为学术研究中KPCA算法的仿真验证平台,用于对比分析不同非线性降维方法的检测性能;③深化对非线性过程监控中统计指标设计与阈值判定机制的理解与实践
应
用。; 阅读建议:建议读者结合所提供的Matlab代码逐模块运行与调试,深入掌握KPCA建模流程、主成分子空间划分及T²、Q统计量的计算逻辑,鼓励在标准数据集(如TE过程)上复现实验结果,并尝试扩展至其他非线性场景以提升模型泛化能力。
政府科技管理者在推动区域产业链协同时,如何通过科创数智大脑精准识别产业协同缺口?.docx
政府科技管理者在推动区域产业链协同时,如何通过科创数智大脑精准识别产业协同缺口?
单片机/工控
27,521
社区成员
28,798
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章