求一个单个按键控制两种模式的流水灯程序,#include<reg51.h>开头的

求一个单个按键控制两种模式的流水灯程序,#include<reg51.h>开头的,第1张

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

sbit key=P3^2

uchar keyval

void delay(uchar 漏凯ms)

{

    uchar i

    while(ms--)for(i=0i<120i++)

}

void 仔饥ext0() interrupt 0

{

    keyval++

    keyval%=2

}

main()

{

    EX0=1

    IT0=1

    EA=1

    P1=0xfe

    while(1)

    {

        switch(keyval)

        {

        case 0:

            P1=_crol_(P1,1)

            delay(200)

            break

        case 1:

           念搜返 P1=_cror_(P1,1)

            delay(200)

            break

        }

    }

}

ORG 0000H 程序开始

SJMP START 跳转到START

ORG 0050H START从ROM的0050H开始存储

START: MOVE P1.0,#00000001B 把二进制数00000001B送到P1口

LCALL DELAY 调用延时子程序

MOVE P1.0,#00000010B 把二进制简做蚂数00000010B送到P1口

LCALL DELAY

MOVE P1.0,#00000100B

LCALL DELAY

MOVE P1.0,#00001000B

LCALL DELAY

MOVE P1.0,#00010000B

LCALL DELAY

MOVE P1.0,#00100000B

LCALL DELAY

MOVE P1.0,#01000000B

LCALL DELAY

MOVE P1.0,#10000000B

LCALL DELAY

LJMP START 跳转到START

延时子程序DELAY,改变R5、R6、R7中的值(0到255),可以改变延时时间

DELAY: MOV R5,#20 把20放到寄存器R5中,

D1: MOV R6,#20

D2: MOV R7,#248

DJNZ R7,$ 把拦埋寄存器R7中的胡枣内容减1,如果结果不定于0,则跳转到本身,如果等于0,执行下一条程序

DJNZ R6,D2 把寄存器R6中的内容减1,如果结果不定于0,则跳转到本身,如果等于0,跳转到D2

DJNZ R5,D1

RET

END


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12371464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存