#define uchar unsigned char
uchar led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}
void delay(uchar a)
{
uchar i
while(a--)for(i=0i<120i++)
}
main()
{
uchar i,j
for(i=0i<2i++)
for(j=0j<蠢核8j++)
{
P1=led[j]
delay(100)
}
for(i=0i<圆袭2i++)
for(j=7j>0=j--)
{
P1=led[j]
delay(100)
}
for(i=0i<2i++)
{
P1=0x00
delay(100)
P1=0xff
delay(100)
}
}
ORG 0000HMOV R1,#0FEH;使左1灯亮的信号
MOV R6,#8;设置循环次数
LOOP:
MOV P1,R1
LCALL DEL_1S
MOV A,R1
RL A
MOV R1,A
DJNZ R6,LOOP ;当最右灯亮后结束循环
MOV R6,#8 ;再次设置模脊银循环次数
LOOP1:
MOV A,R1
RR A
MOV R1,A
MOV P1,R1
LCALL DEL_1S
DJNZ R6,LOOP1 ;当最左边的灯亮后旦宴结束循环
MOV R6,#4;第三次设置循环的次数 这里不用R6!!!!
LOOP2:
MOV P1,#0 ;全野悔亮
LCALL DEL_05S
MOV P1,#0FFH ;全灭
DJNZ R6,LOOP2 ;四次后结束循环
AJMP $
//我想做个15路输出的彩灯,预置数为15个(10进制32767)1,
//使用P0.0~P0.7和P2.0~P2.6端口,
//设置+1(P3.3)和-1(P3.4)两个按钮,可以减到十进制32047。
//到32047后如果继续按-1按钮,可以回到32767重新进行减法。
//加法也一样,加到32767后按+1按钮可以到32047重新+1.
//再设置一个按钮(P2.7),当P2.7接地时,在当前显示的数字上减去十进制数1712进行显示。
//============================
#include<reg52.h>
sbit K_1 = P3^3 //+
sbit K_2 = P3^4 //-
sbit D_1 = P2^7 //显示方式选择
//----------------------------
void delay_ms(unsigned int n)
{
unsigned char 大敏j
while(n--) for(j = 0 j < 230 j++) //230是实验测试所得!
}
void main()
{
unsigned int m
m = 32767
while(1) {
if (D_1 == 1) {
P2 = ~(m / 256)
P0 = ~(m % 256)
}
else 培宏 {
P2 = ~((m - 1712) / 256)
P0 = ~((m - 1712) % 256)
}
if (K_1 == 0) {
delay_ms(10)
if (K_1 == 0) {
m++
if (m > 32767) m = 32047
while(K_1 == 0)
}
}
if (K_2 == 0) {
delay_ms(10)
if (K_2 == 0) {
m--
if (m < 32047) m = 滚中枝32767
while(K_2 == 0)
}
}
}
}
//============================
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)