• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

单片机系统调试通不过,现贴上原理图和程序请大家帮一下讨论下.

全部回复(14)
正序查看
倒序查看
frankfeng
LV.2
2
2005-07-18 11:28
请各位高手帮帮小弟啊,感激不尽.板子抗干扰能力不好,工作一段时间或者在干扰大的时候就会乱,还会死机.
0
回复
frankfeng
LV.2
3
2005-07-18 12:37
@frankfeng
请各位高手帮帮小弟啊,感激不尽.板子抗干扰能力不好,工作一段时间或者在干扰大的时候就会乱,还会死机.
好心人都去哪里啦?
0
回复
fenix
LV.5
4
2005-07-18 15:57
@frankfeng
好心人都去哪里啦?
多字节指令后加空操作指令,还有就是加软件门狗,不过最好的方法还是加个硬件狗比较好.
0
回复
frankfeng
LV.2
5
2005-07-18 17:50
@fenix
多字节指令后加空操作指令,还有就是加软件门狗,不过最好的方法还是加个硬件狗比较好.
好的,我试试看.硬狗是没条件加了的,这块板子很讲成本的,你看我都是用的便宜东西.
0
回复
yg1977s
LV.3
6
2005-07-19 10:43
@frankfeng
好的,我试试看.硬狗是没条件加了的,这块板子很讲成本的,你看我都是用的便宜东西.
你的程序有问题,肯定会乱,T0中断中不要调发送和延时程序!里面涉及到的所有公用资源都要进堆栈.
0
回复
翟晓辉
LV.1
7
2005-07-19 13:45
如果是干扰问题,应考虑PCB板的布局及布线,是否可看看PCB板的资料.
0
回复
翟晓辉
LV.1
8
2005-07-19 13:47
中断服务程序太长
0
回复
yg1977s
LV.3
9
2005-07-19 16:55
@翟晓辉
中断服务程序太长
DELAY:
        mov     R6,#8          ;延时消除抖动
D1:     mov     R7,#235         ;7,570us;6MHz
         djnz    R7,$
         djnz    R6,D1
         RET

如果在主程序里正好执行到发送灯状态程序,发生T0中断(因为中断里有调用发送灯状态程序),此时灯的指示状态异常.如果在主程序里正好执行到delay中 DJNZ R7指令时,发生T0中断,此时由于中断有调用delay程序),中断返回后R6,R7同时为0h,此时再执行 DJNZ R7条指令时,R7会溢出等于0FFh,然后同理R6也会等于0FFh,此时延时等于130多MS ,然后再T0中断,重复以上过程,程序在DELYA内死循环,也就跟死机差不多.这样会出现楼主所说的现象.不知道我分析对不对?
0
回复
zack
LV.5
10
2005-07-19 17:56
老兄传上流程图啊.
你的汇编没加完全的注解,看了很头疼啊.
0
回复
frankfeng
LV.2
11
2005-07-26 10:47
@翟晓辉
如果是干扰问题,应考虑PCB板的布局及布线,是否可看看PCB板的资料.
1122346000.pcb
谢谢,请帮忙看下该程序的PCB布线
0
回复
frankfeng
LV.2
12
2005-07-26 10:53
@yg1977s
DELAY:        mov    R6,#8          ;延时消除抖动D1:    mov    R7,#235        ;7,570us;6MHz        djnz    R7,$        djnz    R6,D1        RET如果在主程序里正好执行到发送灯状态程序,发生T0中断(因为中断里有调用发送灯状态程序),此时灯的指示状态异常.如果在主程序里正好执行到delay中DJNZR7指令时,发生T0中断,此时由于中断有调用delay程序),中断返回后R6,R7同时为0h,此时再执行DJNZR7条指令时,R7会溢出等于0FFh,然后同理R6也会等于0FFh,此时延时等于130多MS,然后再T0中断,重复以上过程,程序在DELYA内死循环,也就跟死机差不多.这样会出现楼主所说的现象.不知道我分析对不对?
恩,分析的很透彻!!!这点我确实没有想到,多谢指点!我马上去整理下.请问你位朋友有其他联系方式吗?想你交个朋友呵呵
0
回复
frankfeng
LV.2
13
2005-07-26 10:54
@zack
老兄传上流程图啊.你的汇编没加完全的注解,看了很头疼啊.
不好意思,我是自学的.所以做程序一般都用那个的,呵呵.现在正努力改正了
0
回复
frankfeng
LV.2
14
2005-07-26 11:05
@frankfeng
恩,分析的很透彻!!!这点我确实没有想到,多谢指点!我马上去整理下.请问你位朋友有其他联系方式吗?想你交个朋友呵呵
;<>
T0INT:
CLR     EA
CLR     ET0             ;关定时中断
CLR     TR0             ;停止定时器0计数
PUSH    ACC             ;保护现场
PUSH    PSW             ;***保护A和标志位***
SETB    RS0             ;转用1组
CLR     RS1
         .....
CLR     RS0             ;回0组
CLR     RS1
POP     PSW             ;恢复现场
POP     ACC             ;***恢复A和标志位***
SETB    TR0             ;定时开始计数
SETB    ET0             ;开定时中断
SETB    EA
RET
是不是要修改成这样就没有问题了?帮忙看看
0
回复
ggffdsaa11
LV.1
15
2005-08-10 17:08
这块板应该用双面板啊
0
回复