2020-02-02 09:34发布
devcang 发表于 2012-10-31 17:40 #include #define uchar unsigned char
devcang 发表于 2012-10-31 21:43 你按 hy1() 修改一下,差不多了。
最多设置5个标签!
#define uchar unsigned char
#define uint unsigned int
sbit EN=P3^6;
void delay5ms();
void delay400ms();
void hy4(){//;花样4全亮
uchar a;
for(a=0; a<6; a++){
P2=a;
P0=0xff;
P2=0;
}
}
void hy3(){ //;花样3全灭
uchar a;
for(a=0; a<6; a++){
P2=a;
P0=0x00;
P2=0;
}
}
void hy2(){ //;花样2从左到右亮,然后从右到左灭
// mov a,#01h
// mov r6,#6
// hy21: mov dptr,#0000h
// hy22: mov r7,#8
// hy2lp: movx @dptr,a
// setb c
// rlc a
// lcall delay5ms
// djnz r7,hy2lp
// inc dph
// djnz r6, hy22
// lcall delay400ms
// mov a,#01h
// mov r6,#6
// hy21a: dec dph
// ; mov dptr,#0000h
// hy22a: mov r7,#8
// hy2lpa: movx @dptr,a
// clr c
// rrc a
// lcall delay5ms
// djnz r7,hy2lpa
// dec dph
// djnz r6, hy22a
// lcall delay400ms
}
void hy1(){//;花样1间隔亮 变换
uchar a, p;
for(p=0; p<0x10; p++){
for(a=0; a<=6; a++){
P2=a;
if( (p % 2)==0){
P0=0xAA;
}else{
P0=0x55;
}
P2=0;
}
delay400ms();
}
}
void delay5ms(){ //;延时子程序(5MS)
uchar i,j;
for(i=25;i>0;i--){
for(j=100; j>0; j--){
;
}
}
}
//;==============延时400毫秒
void delay400ms(){ //;延时子程序(400MS)
uchar i,j,k;
for(i=20;i>0;i--){
for(j=100; j>0; j--){
for(k=100; k>0; k--){
;
}
}
}
}
void main(){
delay400ms();
EN=0;
while(1){
hy1(); //;间隔亮10次
delay400ms();
hy3(); //;全灭
delay400ms(); //;延时
hy4(); //;全亮
delay400ms(); //;延时
hy3(); //;全灭
delay400ms(); //;延时
hy4(); //;全亮
delay400ms(); //
hy3(); //;全灭
delay400ms(); //
hy2(); //;从左到右亮,然后从右到左灭
hy2(); //
}
}
断断续续修改一下,还有一个函数,没改。
非常感谢你@@LZ
不需要按汇编的改为C,可以指导一下就从第1灯开始开始流水死循环15圈完后再反着15圈来回不断的循环怎么写,麻烦你了大哥!
想问一下位移应该怎样改,P0口八位移还是按这个片选移,如果选择片选移,是不是每个片选都要按着顺序同步移是吗,不知道我说的对吗?
- void hy1()
-
- {
- uchar a, p;
- for(p=0; p<0x10; p++)
-
- {
- for(a=0; a<=6; a++)
- {
- P2=a;
- if( (p % 2)==0)
-
- {
- P0=0x00;
- }
- else
- {
- P0=0xff;
- }
- P2=0;
- }
- delay400ms();
- }
- }
复制代码一周热门 更多>