标题: [求助]大侠们,谁帮我写一个按一下LED灯就亮了,5秒钟后停止的程序呀. [打印本页]

作者: xiangtp    时间: 2008-5-23 11:16
标题: [求助]大侠们,谁帮我写一个按一下LED灯就亮了,5秒钟后停止的程序呀.
[求助]大侠们,谁帮我写一个按一下P1.0 LED灯就亮了,5秒钟后停止,再等10秒钟后P1.1灯又亮的程序呀.xiangtianpin@163.com
[此贴子已经被作者于2008-5-23 11:19:56编辑过]

作者: heicad    时间: 2008-5-23 13:44

setb p1^0

 

pUSH   04H                
        PUSH   05H            
        PUSH   06H                
        MOV    R4,#50             
DELAY5S_0:MOV  R5,#200                              
DELAY5S_1:MOV  R6,#245                              
        DJNZ   R6,$                         
        DJNZ   R5,DELAY5S_1
        DJNZ   R4,DELAY5S_0                         
        POP    06H                  
        POP    05H                  
        POP    04H                   
     

 

 

clr  p1^0

 

pUSH   04H                
        PUSH   05H            
        PUSH   06H                
        MOV    R4,#50             
DELAY5S_0:MOV  R5,#200                              
DELAY5S_1:MOV  R6,#245                              
        DJNZ   R6,$                         
        DJNZ   R5,DELAY5S_1
        DJNZ   R4,DELAY5S_0                         
        POP    06H                  
        POP    05H                  
        POP    04H                   
     

pUSH   04H                
        PUSH   05H            
        PUSH   06H                
        MOV    R4,#50             
DELAY5S_0:MOV  R5,#200                              
DELAY5S_1:MOV  R6,#245                              
        DJNZ   R6,$                         
        DJNZ   R5,DELAY5S_1
        DJNZ   R4,DELAY5S_0                         
        POP    06H                  
        POP    05H                  
        POP    04H                   
     


作者: huwoyun123    时间: 2008-5-24 22:21

ORG 0000H
LJMP MAIN
ORG 000B         ;定时器T0中断程序入口地址
LJMP IST0
ORG 0030H
MAIN: JNB P3.0 NEXT    ;P3.0接开关
         LJMP MAIN
NEXT:CLR P1.0
         MOV 30H,#00H    ;用软件计数器
         MOV 31H,#00H
         MOV TMOD,#01H    ;用定时器T0,并设置在方式1,在定时状态。
         MOV TH0,#3CH     ;设置初值15536,让定时器定时50000us。
         MOV TL0,#B0H
         SETB ET0        ;打开T0中断。     
         SETB EA         ;打开中断总开关。
        MOV TCON,#10H(或者:SETB TR0)     ;开启定时。
LJMP $
IST0:PUSH ACC           ;中断服务子程序。
         PUSH PSW
         INC 30H
         INC 31H
         MOV A,30H
         CJNE A,#100,NEXT1   ;让其定时50000us X 100=5s。
          SETB P1.0            5s后P1.0灭。
          MOV 30H,#00H        
        MOV TH0,#3CH       ;重装初值,需要继续引起中断。
         MOV TL0,#B0H
NEXT1:MOV A,31H               ;继续定时。
      CJNE A,#200,LOOP1 ;定时10s后,P1.1亮。   
      CLR P1.1
      MOV 31H,#00H              
LOOP1:MOV TH0,#3CH       重装初值。。
      MOV TL0,#B0H
       POP PSW
       POP  ACC
         RETI          中断返回
        END
说明:此程序未在实验板上验证过,只提供一种思路。。。

 


       


作者: 022rat    时间: 2008-7-11 19:57
怎么没有用C写的啊?用C写更加简单~~
作者: a13758777532    时间: 2008-7-12 16:28

#include <reg51.h>
sbit   led = P1^1;
sbit   key = P1^0;
unsigned char x,y;
void delay(void)
{
unsigned char i,j,k;
for(..;...;..)
for(..;...;..)
for(..;...;..);
}                     //延时1秒;

void main(void)
{
if(key==0)
{

led=0;
for(x=5;x>0;x--)    //点亮5秒;
{
delay();
}

led=1;                    //熄灭10s;

for(x=10;x>0;x--)

{

delay();

}
led=0;

}

}


 


作者: a13758777532    时间: 2008-7-12 16:29
多定义了一个Y,抱歉




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