标题: 我想用中断控制P1.7脚的高低电平但失败,请各位高手指点错误 [打印本页]

作者: linyean    时间: 2009-7-8 17:49
标题: 我想用中断控制P1.7脚的高低电平但失败,请各位高手指点错误
请各们高手看一下这条程序:
              ORG 0000H
              LJMP MAIN
             ORG 0003H
             LJMP INT_0 
   MAIN:SETB EA 
              SETB EX0
MAIM_0:MOV R0,#1
 MAI_N: SETB P1.7
              SJMP MAI_N
  BEYO:   MOV R6,#82H
    DL1:   MOV R7,#0FFH
    DL2:   DJNZ R7,$
              DJNZ R6D L1
              RET
  SOUB:   MOV R0,#0
SOUB_0: CLR P1.7
              SJMP SOUB_0
INT_0:    CLR EX0
              ACALL BEYO
              SETB EX0
             CJNE R0,#0,SUOB
             ACALL MAIN_0   
             RETI
             END      
我想用中断控制P1.7脚的高低电平但失败,请各位高手指点错误。   
[此贴子已经被admin于2009-7-8 23:43:15编辑过]

作者: nishibeitina    时间: 2009-7-9 07:49
中断入口地址是0003H,而P1.7不在中断控制,在主程序了,所以中断不能控制P1.7。
作者: linyean    时间: 2009-7-9 11:53

可不可以写条例程给我看看呀?谢了。


作者: hg1949    时间: 2009-7-9 21:39
确实你中断程序只调用了一个延时程序,什么也没做
INT_0:    CPL P1.7
              RETI
              END
[此贴子已经被作者于2009-7-9 21:41:10编辑过]

作者: nishibeitina    时间: 2009-7-10 10:08

ORG    00H      主程序入口地址
JMP     MAIN
ORG    03H      外部中断0入口地址
JMP     INT0
MAIN: MOV    IE,#10000001B        ;INT0中断开通
         MOV    IP,#00000001B        ;INT0中断优先
         MOV    TCON,#00000000B   ;INT0为电频触发
         MOV     SP,#70H                 ;设定堆栈指针
LOOP: MOV     A,#00H                  ;主程序设置P1端口灯闪烁   可以自己任意改写  也可不写
LOOP1:MOV   P1,A                        ;
          ACALL DELAY                     ;
          CPL    A                             ;
          JMP     LOOP1                     ;
INT0:  PUSH   ACC                        ;将A值压入堆栈
          PUSH   PSW                       ;将PSW值压入堆栈
          SETB   RS0                       ;设定工作寄存器组1
          CLR     RS1                       ;
          MOV     P1,#11111110B     ;设置P1.7为低电频
          ACALL  DELAY                  ;延时1S  延时可自己控制
          POP      PSW                     :从堆栈取回PSW值
          POP      ACC                     ;从堆栈取回A值
          RETI                                ;中断返回
DELAY:MOV    R5,#50                 ;延时1S
 D1:    MOV    R6,#100
D2:     MOV    R7,#100
          DJNZ   R7,$
          DJNZ   R6,D2
          DJNZ   R5,D1
          RET                                ;返回
         END                                 ;程序结束


作者: linyean    时间: 2009-7-10 17:07
多谢各位高手?
作者: nishibeitina    时间: 2009-7-10 17:25

不客气


作者: nishibeitina    时间: 2009-7-10 17:26

我也是初学者


作者: linyean    时间: 2009-7-11 10:37
楼上的:你是在校学生还是????
作者: nishibeitina    时间: 2009-7-12 08:36

是在校学生啊     有问题一起讨论 


作者: linyean    时间: 2009-7-12 10:29
哦,我是一个电子厂的技术员,刚接触单片机。
作者: linyean    时间: 2009-7-12 10:30
可以帮我定一个学习单片机的计划吗?

作者: nishibeitina    时间: 2009-7-12 10:46

我不太会定计划。
想学就行啊,不会很难






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1