优化这串代码#include <LED.h> void Delay() { char i,j; for(i=1;i<=30;i++) { for(j=1;j<=255;j++) { ; } } } void Liang(X,Y) { int i; for(i=1;i<=16;i++) { SER = X>>15; X = X<<1; SCK = 0; SCK = 1; } for(i=1;i<=16;i++) { SER = Y>>15; Y = Y<<1; SCK = 0; SCK = 1; } RCK = 0; RCK = 1; } #ifndef _LED_h #define _LED_h #include <reg51.h> #include <intrins.h> sbit SER = P2^0; sbit SCK = P2^1; sbit RCK = P2^2; void Liang(X,Y); void Delay(); #endif #include <LED.h> void main() { int L[]={0x0001,0x0002,0x0004,0x0008, 0x0010,0x0020,0x0040,0x0080, 0x0100,0x0200,0x0400,0x0800, 0x1000,0x2000,0x4000,0x8000}; int h[]={0x0000,0xe003,0xef7b,0xef7b,0xe80b,0xef7b,0xef7b,0xe003, 0xeffb,0xec1b,0xeddb,0xeddb,0xec1b,0xeffd,0xebfd,0xf7fe}; int i,j; while(1) { for(i=0;i<16;i++) { for(j=0;j<16;j++) { Liang(h[i],L[i]); Delay(); } } } }并使汉族在16下6的点阵滚动
时间: 2023-07-15 20:15:11 浏览: 127
这段代码可以优化的地方有很多,以下列出几个:
1. 使用更具可读性的变量名:变量名可以更加直观,让其他人更容易理解代码的含义。
2. 减少不必要的循环:在Delay函数中,内层循环没有任何实际作用,可以直接去掉这个循环。
3. 按照编码规范缩进和空格:这样可以使代码更加美观,易于阅读。
4. 增加注释:注释可以帮助其他人理解你的代码。
5. 使用宏定义代替魔法数字:这样可以使代码更加易于维护和修改。
下面是优化后的代码:
```
#ifndef _LED_h
#define _LED_h
#include <reg51.h>
#include <intrins.h>
sbit SER = P2^0;
sbit SCK = P2^1;
sbit RCK = P2^2;
#define DELAY_TIME 30
void display(int h[], int l[]);
void delay();
#endif
#include <LED.h>
void main() {
int h[] = {0x0000, 0xe003, 0xef7b, 0xef7b, 0xe80b, 0xef7b, 0xef7b, 0xe003, 0xeffb, 0xec1b, 0xeddb, 0xeddb, 0xec1b, 0xeffd, 0xebfd, 0xf7fe};
int l[] = {0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000};
int i, j;
while (1) {
display(h, l);
}
}
void display(int h[], int l[]) {
int i, j;
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
Liang(h[i], l[j]);
delay();
}
}
}
void delay() {
int i;
for (i = 0; i < DELAY_TIME; i++) {
_nop_();
}
}
void Liang(int x, int y) {
int i;
for (i = 0; i < 16; i++) {
SER = x >> 15;
x = x << 1;
SCK = 0;
SCK = 1;
}
for (i = 0; i < 16; i++) {
SER = y >> 15;
y = y << 1;
SCK = 0;
SCK = 1;
}
RCK = 0;
RCK = 1;
}
```
为了使汉族在16下6的点阵滚动,可以在display函数中修改循环的方式,如下所示:
```
void display(int h[], int l[]) {
int i, j;
for (i = 0; i < 16; i++) {
Liang(h[i], l[(i+6)%16]);
delay();
}
}
```
这样就可以实现滚动了。
阅读全文