单片机中流水灯的程序

单片机中流水灯的程序,第1张

LED的阳极接电源正,阴极接P1口,IO某位低电平时,就点亮相应位的LED。P1=0xff,灯全灭。P1=0xfe时点亮P10灯,延时500ms 。P1=0xfd,点亮P11灯。。。。

for(;;)

{} 这条就是程序在大括号里无限循环,就是灯从1~8点亮后再从1~8,一直反复循环,没必要 退出。

P37 连接按键,P1 外接 LED。

没有使用中断。

8个led的点亮方式用数组保存。

--3种不同的点亮方式。

--点亮方式仅仅是一个数字(0、1、2)而已,还用数组保存?

--用变量 mode 保存即可。

#include<reg51h>

#include<intrinsh>

sbit key = P3^7;

unsigned char kc, kb, kz, mode = 2, aa = 0xff;

void delay10ms(void)

{

unsigned int i, j;

for (i = 0; i < 60; i++) for (j = 0; j < 20; j++);

kc = ~key;

kz = kc ^ kb;

kb = kc;

if (kz & kb) {

mode++;

mode %= 3;

if (mode == 0) aa = 0x7f; //3种方式

if (mode == 1) aa = 0x3f;

if (mode == 2) aa = 0x1f;

}

}

main()

{

char i;

while(1) {

for (i = 0; i < 50; i++) {

delay10ms();

if (kz & kb) break;

}

P1 = aa;

aa = _cror_(aa, 1);

}

}

本程序给出的三种方式,显得简陋了一些。

试试看吧。

ORG000H\x0d\LJMPMAIN\x0d\ORG000BH;定时器0中断入口\x0d\LJMPLOOP1\x0d\ORG0100H\x0d\MAIN:\x0d\MOVTMOD,#01H;设置定时器工作模式\x0d\MOVTL0,#0EFH;设置定时器初值\x0d\MOVTH0,#0D8H\x0d\SETBEA;打开总中断\x0d\SETBET0;打开定时器0中断\x0d\SETBTR0;启动定时器0\x0d\MOVP0,#0FFH\x0d\MOVR0,#200;延时参数\x0d\LOOP:\x0d\CJNER0,#0,LOOP;延时\x0d\MOVA,#0EFH\x0d\NEXT:\x0d\MOVP0,A;送值\x0d\MOVR0,#50;延时参数\x0d\EXIT:\x0d\CJNER0,#00H,EXIT;延时一会儿\x0d\RLA;A循环左移根据程序分许,该程序完成流水灯功能\x0d\LJMPNEXT\x0d\\x0d\LOOP1:;定时器0中断函数\x0d\MOVTL0,#0EFH;定时器初值\x0d\MOVTH0,#0D8H;定时器初值\x0d\DECR0;\x0d\RETI;中断返回\x0d\END\x0d\有疑问可以追问。

以上就是关于单片机中流水灯的程序全部的内容,包括:单片机中流水灯的程序、求一单片机流水灯程序,C编写的。、单片机流水灯汇编程序是怎样的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9855247.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存