您现在所在的是:

单片机论坛

回帖:2个,阅读:1308 [上一页] [1] [下一页]
2950
tjq1976
文章数:427
年度积分:133
历史总积分:2950
注册时间:2003/8/11
发站内信
发表于:2007/7/26 11:53:00
#0楼
我写了一个51程序,单步调试看到单片机实验板按照要求显示效果,但是当完全运行的时候,实验板就没有反应了。程序大概意思:当P3.2接按键,按下接通低电平,触发定时中断,延时时间到循环显示0~9。程序如下:
 ORG  00H
AJMP START
ORG  0BH
AJMP LINT0
ORG 30H
START: MOV R0,#00H
            MOV P2,#0F7H
START1:MOV P3,#0FFH
           MOV R3,#10
           CLR EA
           CLR ET0
           CLR TR0
          JNB P3.2 ,MAIN
          AJMP START1
MAIN: MOV SP,#060H
         MOV TMOD,#01H
         MOV TL0,#0B0H
        MOV TH0,#3CH
 
       SETB EA
       SETB ET0
       SETB TR0
      JNB P3.2 ,MAIN
      AJMP START1

LINT0:  PUSH ACC
          PUSH PSW
          MOV TL0,#0B0H
          MOV TH0,#3CH
          DJNZ R3,LOOP
          MOV R3,#10
          INC R0
          CJNE R0,#10, LINT1
         MOV R0,#0
LINT1:  MOV A,R0
          MOV DPTR,#TAB
          MOVC A,@A+DPTR
         MOV P0,A
LOOP:   POP PSW
           POP ACC
          RETI
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
  END
请大家看看,究竟哪里出问题了。谢谢大家!
1179
luorizhou
文章数:69
年度积分:50
历史总积分:1179
注册时间:2005/7/20
发站内信
发表于:2007/7/27 18:19:00
#1楼
你的MAIN出了点问题。
当按键按下,使得P3.2为0时,触发定时器工作,你的主程序中的语句“JNB P3.2 ,MAIN”将使得定时器永远无法触发定时中断,因此,程序运行时,实验板一片黑暗,毫无反应!
解决办法:
1、把主程序中的定时器初始化置数语句单独放到一个子程序中
2、在定时器中断程序中设置flag,把这个flag作为调用定时器初始化置数子程序的条件
在处置flag时,需要多想想,处置不当,还是收不到效果呵呵


[此贴子已经被作者于2007-7-27 18:19:16编辑过]
2950
tjq1976
文章数:427
年度积分:133
历史总积分:2950
注册时间:2003/8/11
发站内信
发表于:2007/7/31 11:24:00
#2楼
谢谢,问题解决

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003