单片机节日彩灯课程设计,从两边向中间点亮依次循环不止。亮灭时间为0.25S,用一个开关控制彩灯的工作

来源:百度知道 编辑:UC知道 时间:2024/09/21 18:12:49
是MCS-51的单片机 谢谢了真是不会 悬赏分就有这点了帮我写一个把 急急急!!!
是用单片机程序做啊 不是C语言啊

/* 程序详细功能介绍:
*利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。
*在用表格进行程序设计的时候,要用以下的指令来完成
*(1).利用MOV DPTR,#DATA16的指令来使数据指针寄存器指到表的开头。
*(2).利用MOVC A,@A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。
*因此,只要把控制码建成一个表,而利用MOVC 工,@A+DPTR做取码的操作,
*就可方便地处理一些复杂的控制动作.
*/

#include <AT89X51.H>
unsigned char code table[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
0x00,0xff,0x00,0xff,
0x01};
unsigned char i;

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)
{
if(table[i]!=0x01)
{
P0=table[i];
i++;
delay();
}