您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页单片机流水灯程序

单片机流水灯程序

来源:小侦探旅游网
 流水灯程序

闲来没事,就总结一下流水灯的工作,用两种语言实验C语言和汇编语言。学习单片机的第一个程序就是流水灯实验!学习语言的输出的第一个程序就是 hello word! 这都是一个过程!

我们知道单片机执行的机器语言!汇编就是其执行的根本的语言,任何程序的编译最终还是要生成HEX语言,汇编语言~~!

来回显示,并且显示时还会发出蜂咛声! P1口接八个发光二极管,P2.3接一个蜂咛器!

一.汇编语言

mov r7,#8

main:mov r0,#8 ;一个循环需要移动8位

mov p1,#01111111b ;初始为P0.7灯点亮

loop: clr p2.3

acall ds1ms ;延时,以便人眼可以观察到

setb p2.3

acall ds1ms

mov a,p1 ;读P0口当前显示的数据送到A

rr a ;将A中的数据循环右移1位

mov p1,a ;再将A中右移过的数据送到P0

djnz r0,loop

djnz r7,main ;移动不够8位,跳到LOOP处循环,

ljmp rel ;流动1遍跳转到MAIN处循环流。

;---显示延时----------

ds1ms: mov r1,#1

ds1lo: mov r2,#200

ds2lo: mov r3,#200

djnz r3,$

djnz r2,ds2lo

djnz r1,ds1lo

ret ;延时返回

rel:end

二.C语言

#include

unsigned char i;

unsigned char temp;

unsigned char a,b;

void delay(void) //延时子程序

{

unsigned char m,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

void main(void) //主程序

{

while(1) //循环条件永远为真,以下程序一直执行下去。

{

temp=0xfe;

P1=temp; //直接对I/O口P1赋值,使P1.0输出低点平。

delay(); //延时

for(i=1;i<8;i++) //实现广告灯的移动

{

a=temp<b=temp>>(8-i);

P1=a|b;

delay();

}

for(i=1;i<8;i++) //实现广告灯的反方向移动

{

a=temp>>i;

b=temp<<(8-i);

P1=a|b;

delay();

}

}

}

实验很简单!懂的朋友完全可以在此基础上开发!比如一个爱心的流水灯。如果你看懂了这两个程序!恭喜你,你已经入门!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务