完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ORG 5000H
MAIN:MOV SP,#60H MOV 30H,#0 ;30H-33H显示缓冲区 MOV 31H,#0 MOV 32H,#0 MOV 33H,#0 MOV 50H,#5 ;存放温度设定值 MOV 51H,#2 MOV DPTR,#07100H ;选中8155 MOV A,#3H MOVX @DPTR,A MOV IP,#0FH ;中断优先级 MOV TCON,#05H ;外部中断脉冲触发有效 MOV IE,#8FH ;中断总允许,允许定时器和外部中断 MOV TMOD,#55H ;接通外部技术引脚T0T1 MOV TH0,#0FFH MOV TL0,#0FFH MOV TH1,#0FFH MOV TL1,#0FFH SETB TR0 ;启动定时器 SETB TR1 CLR P2.4 CLR P2.6 TURN: LCALL WATER LCALL ZHUANHUAN ;调用读温度子程序 LCALL DISPLAY LCALL WARN ;水温水位报警 AJMP TURN PLUS: ;温度加1中断 PUSH 30H PUSH 31H MOV TH0,#0FFH MOV TL0,#0FFH MOV A,50H CJNE A,#9,CC MOV 50H,#0 INC 51H AJMP CC1 CC:INC 50H CC1: MOV 30H,50H MOV 31H,51H MOV R1,#07FH CFU:LCALL DISP1 ;将设定值显示一段时间 DJNZ R1,CFU POP 31H POP 30H REti MINUS: ;温度减1中断 PUSH 30H PUSH 31H MOV TH1,#0FFH MOV TL1,#0FFH MOV A,50H CJNE A,#0,CC2 MOV 50H,#9 DEC 51H AJMP CC3 CC2:DEC 50H CC3: MOV 30H,50H MOV 31H,51H MOV R1,#07FH CFU1:LCALL DISP1 DJNZ R1,CFU1 POP 31H POP 30H RETI 有时会复位,有时又正常,是什么原因? |
|
相关推荐
5个回答
|
|
世上单片机千千万,不知道楼主用的哪一种。但是请检查堆栈是否溢出以及看门狗。
|
|
|
|
10次里大概有2次会复位不明白为什么有时又是正常的
|
|
|
|
不会检查就没办法了,我们不可能隔空打牛。另外还需要检查电源系统是否存在瞬间跌落,复位端处理是否恰当。
|
|
|
|
楼主我建议你用c51编程序吧,他娘的,在学校我也用的汇编,毕业找工作了,大部份公司要会c语言的应聘者,我现在又学c语言,汇编我都快忘了
|
|
|
|
1 你是如何判断复位的,是用示波器量复位脚还是?
2 你将堆栈指针设低一点,MOV SP,#30H试试 3 或者是进中断没有将有些压栈,感觉复位 4 最大的问题是干扰,解决干扰的来源,或加看门狗,进中断 复位只是表象,比如电源 或继电器的开关吸收,改变程序存储器的指针,或在空的地方加 ORG 1000H LJMP MAIN ORG 2000h LJMP MAIN |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-2 22:17 , Processed in 0.760690 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191