找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12618|回复: 7
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
ID:2283 发表于 2008-5-23 11:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[求助]大侠们,谁帮我写一个按一下P1.0 LED灯就亮了,5秒钟后停止,再等10秒钟后P1.1灯又亮的程序呀.xiangtianpin@163.com
[此贴子已经被作者于2008-5-23 11:19:56编辑过]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:262 发表于 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                   
     

回复

使用道具 举报

板凳
ID:1671 发表于 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
说明:此程序未在实验板上验证过,只提供一种思路。。。

 


       

回复

使用道具 举报

地板
ID:3237 发表于 2008-7-11 19:57 | 只看该作者
怎么没有用C写的啊?用C写更加简单~~
回复

使用道具 举报

5#
ID:3271 发表于 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;

}

}


 

回复

使用道具 举报

6#
ID:3271 发表于 2008-7-12 16:29 | 只看该作者
多定义了一个Y,抱歉
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表